Licences: MIT for the AES67 core and web page, GPL-3.0 for the rest

- LICENSE (GPL-3.0) at the root; an MIT LICENSE in each components/aes67_*
  and in web/, so they travel with the code when reused.
- THIRD_PARTY.md: third-party code and licences, and the known conflict of
  the Espressif binary audio libraries with GPL-3.0 (firmware contains cspot).
- CLAUDE.md: rule to keep GPL code out of the core; phase 2 item to replace
  the Espressif binaries (opencore-aacdec, Speex resampler).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-27 08:37:38 +10:00
parent c641671d24
commit 41103e3b5e
15 changed files with 928 additions and 0 deletions
+37
View File
@@ -0,0 +1,37 @@
# Licences
## This project
| Part | Licence |
|---|---|
| AES67 core: `components/aes67_*` (each has its own `LICENSE`) | MIT |
| Web page: `web/index.html` (`web/LICENSE`) | MIT |
| Everything else: `main/`, `components/spotify/` (incl. our cspot/bell patches), `tools/`, docs, build files | GPL-3.0-or-later (`LICENSE`) |
The core is MIT so it can be reused in other AES67 projects, including closed ones. It must not depend on GPL code: nothing in `components/aes67_*` may include or link cspot or `main/`.
The firmware image as a whole contains cspot (GPL-3.0), so anyone who distributes the firmware (a `.bin` or a flashed board) must do so under GPL-3.0, with the complete corresponding source.
## Third-party code in the firmware
| Code | Used for | Licence | Notes |
|---|---|---|---|
| [cspot](https://github.com/philippe44/cspot) (philippe44 fork, `external/cspot`) | Spotify Connect | GPL-3.0-or-later | Our patches: `components/spotify/patches/cspot` |
| [bell](https://github.com/philippe44/bell) (cspot submodule) | cspot's I/O and utilities | no licence file | Part of the cspot project; licence to be confirmed with the author |
| tremor (via bell) | Vorbis decoding (Spotify) | BSD-3-Clause (Xiph.Org) | |
| nanopb (via bell) | Protobuf (Spotify protocol) | zlib | |
| ESP-IDF, incl. mbedTLS, esp_http_server, esp_eth | Platform, TLS, web server, Ethernet | Apache-2.0 | mbedTLS is dual Apache-2.0 / GPL-2.0-or-later |
| lwIP | TCP/IP | BSD-3-Clause | |
| FreeRTOS | RTOS | MIT | |
| cJSON | JSON | MIT | |
| espressif/mdns | mDNS | Apache-2.0 | |
| **espressif/esp_audio_codec** | AAC decoding (HLS) | **Espressif Modified MIT, prebuilt binary** | Only allowed with Espressif chips; no source |
| **espressif/esp_audio_effects**, gmf_fft | 44.1 → 48 kHz conversion | **Espressif Modified MIT**; esp_audio_effects is a prebuilt binary | as above |
Algorithms: pink noise uses Paul Kellet's filter and a xorshift32 generator (both public domain).
## Known conflict
The two Espressif binary libraries can't be distributed under GPL-3.0: there is no source, and "Espressif chips only" is an additional restriction that GPL-3.0 forbids. A firmware image containing both them and cspot therefore can't be distributed in line with GPL-3.0. Private use is not affected.
Planned fix (phase 2 in `CLAUDE.md`): replace them with open code, e.g. opencore-aacdec (Apache-2.0, already in `bell/external`) for AAC and the Speex resampler (BSD) for the sample-rate conversion. The Speex resampler can also do the fine rate steering the clock-drift correction needs.