The first public release. What it does: https://weavesignal.top; what changed: CHANGELOG.md.
17 KiB
Notices
WeaveSignal's own code is AGPL-3.0-only (ADR-0073); the documentation's text is CC BY-SA 4.0 (ADR-0081). This file records where anything else comes from: code ported into this repository, software WeaveSignal runs beside its own, and data in its tests. It is updated in the same change that brings something new in.
Code ported into this repository
Code may be ported from AzuraCast, LibreTime, Liquidsoap and Castopod with its notices kept and its origin recorded here (ADR-0001, ADR-0014). Nothing is ever copied from Icecast, which is GPL-2.0 only.
| Into | From | Licence | What |
|---|---|---|---|
crates/feeds/src/rss.rs |
Castopod, app/Helpers/rss_helper.php (get_rss_feed, add_category_tag), https://code.castopod.org/adaures/castopod, branch develop at commit e439b31ac2471f39de11fb9db0c82a23c88c1bb5 (2026-06-05), Copyright 2020 Ad Aures |
AGPL-3.0-or-later, taken as AGPL-3.0-only | the order of a feed's channel and item elements; podcast:guid seeded from the feed address with the namespace UUID (corrected: without the scheme or trailing slash, as the namespace says); podcast:locked with its owner; one podcast:person per role; the Apple category with its plain RSS twin; the image block. Not ported: premium feeds, plugins, the fediverse and comment tags. The file keeps Castopod's copyright line. |
Data from other projects
- The Podcast Taxonomy (
crates/feeds/data/taxonomy.json) and the Podcasting 2.0 namespace's XML schema (crates/feeds/tests/podcast-namespace/, used by the feed tests) are fromhttps://github.com/Podcastindex-org/podcast-namespaceat commitd4036dc(2026-10-10), unmodified, CC0-1.0.
Artwork
- The WeaveSignal icon (ADR-0094) is Boxicons' "broadcast" glyph from boxicons-core
(
https://github.com/box-icons/boxicons-core), MIT, Copyright (c) 2026 Boxicons; the licence text is inLICENSES/MIT.txt.packages/ui/icon/weavesignal-icon-broadcast.svgis the glyph as published;weavesignal-app-icon.svgsets it in the dark theme's ink on its surface, and the studio app's window icons (apps/studio/src-tauri/icons/) and the documentation site's favicon (docs/public/favicon.svg) are made from that. - Two state glyphs in the studio app (
apps/studio/src/lib/Glyphs.svelte) and the documentation's state pictures (docs/src/assets/states/) are third-party icons, taken unmodified from Iconify on 2026-11-02 and drawn at 14 px: DESK BUSY is Reicon's "hand" (https://github.com/dqev/reicon), MIT, Copyright (c) 2025 REICON; LINK DEGRADED is with icons' "signal-blueprint" (https://github.com/withevergrow/withicons), MIT, Copyright (c) 2026 with icons contributors. The licence text is inLICENSES/MIT.txt. - Two demo slate pictures (
assets/stills-demo/, ADR-0200) are third-party icons, each centred on the design system's dark surface with no words: Kettle FM's is Material Design Icons' "kettle-outline" (https://github.com/Templarian/MaterialDesign), Apache-2.0, Copyright Pictogrammers, unmodified; the demo night show's is Material Line Icons' "moon" (https://github.com/cyberalien/line-md), MIT, Copyright Vjacheslav Trushkin, at the animation's final frame. Both were taken from Iconify on 2026-11-03; the licence texts are inLICENSES/Apache-2.0.txtandLICENSES/MIT.txt, and the table isassets/stills-demo/README.md.
Fonts
- The show cards' faces (
crates/cards/fonts/, ADR-0053) are Noto Sans 2.015 (Regular, SemiBold, Bold), Noto Sans Arabic 2.013 (Regular, SemiBold, Bold) and Noto Sans Mono 2.014 (Regular), the unhinted TTFs from the Noto Project's releases (https://github.com/notofonts/latin-greek-cyrillic/releasesandhttps://github.com/notofonts/arabic/releases), taken unmodified on 2026-10-26. Copyright 2022 The Noto Project Authors; SIL Open Font License 1.1, whose text is inLICENSES/OFL-1.1.txt. They are compiled into the control plane so every server draws the same card; they are not sold on their own, and "Noto" is not used as the name of anything derived from them. A binary distribution must carryLICENSES/OFL-1.1.txtwith this notice. - The station's mark on a card is the WeaveSignal icon's Boxicons "broadcast" glyph (MIT, above), drawn in the show's colour until a station uploads its own logo.
Software WeaveSignal runs beside its own
Each keeps its own licence and runs as its own process or library; none is modified.
| Component | Version tested | Licence | Used for |
|---|---|---|---|
| LiveKit server | 1.13.10 | Apache-2.0 | the live room, its TURN |
| Liquidsoap | 2.5.0-rc1 | GPL-2.0-or-later | playout and icecast.server, running the fixed scripts in playout/ |
| GStreamer core, base, good, bad | 1.28.8 | LGPL-2.1-or-later | the desk's media pipeline |
gst-plugins-rs (webrtc, with LiveKit) |
0.15.4 | MPL-2.0 | livekitwebrtcsrc and livekitwebrtcsink |
gst-plugins-rs (isobmff, hlssink3, dav1d) |
0.15.4 | MPL-2.0 | the video path (M5): cmafmux, hlscmafsink, dav1ddec |
| SVT-AV1 | 3.1.2 (Fedora's) | BSD-3-Clause-Clear (with the AOM patent licence) | AV1 encoding without a GPU, through svtav1enc |
| dav1d | as packaged | BSD-2-Clause | decoding guests' AV1 cameras |
| libvpx | as packaged | BSD-3-Clause | VP8 and VP9 cameras, and the programme picture in the room |
| NVIDIA driver (NVENC, CUDA) | the host's | proprietary, not shipped | AV1 encoding where the station has an NVIDIA GPU (nvav1enc); never in our images |
| libsrt | 1.5.7 | MPL-2.0 | SRT between the desk and playout |
| libopus | as packaged | BSD-3-Clause | Opus, through GStreamer and Liquidsoap |
LAME (libmp3lame) |
3.100 (in Liquidsoap's image) | LGPL-2.0-or-later | the MP3 compatibility stream (ADR-0002), off unless the station turns it on; linked by Liquidsoap, not by our code. MP3's patents have expired (2017) |
| PostgreSQL | 18 | PostgreSQL | the control plane's data (ADR-0082) |
| nginx | 1.30 (Alpine 3.24's package) | BSD-2-Clause | the HLS edge image (deploy/images/edge), a pull-through cache configured at start |
| Icecast | 2.5.0 (Alpine 3.24's package) | GPL-2.0-only | the audio relay image (deploy/images/edge), configured at start; none of its code is in this repository |
| Astro, Starlight | 7.4.2, 0.42.7 | MIT | the documentation site |
| Tauri | 2.12.5 | MIT OR Apache-2.0 | the studio app's shell |
| WebKitGTK | 2.54.1 (the system's) | LGPL-2.1-or-later and BSD | the studio app's webview on Linux |
| Svelte, Vite | 5.57.2, 8.3.5 | MIT | the studio app's interface and the public pages, and their builds |
Event Calendar (@event-calendar/core) |
5.18.1 | MIT | the Schedule tab's week grid, behind the adapter in apps/studio/src/schedule/calendar/ (ADR-0185) |
| hls.js | 1.7.3 | Apache-2.0 | the player's HLS (AV1 and Opus in fMP4, the audio-only toggle), bundled unmodified, loaded only when play is pressed |
| livekit-client | 2.23.0 | Apache-2.0 | the join pages' room client (apps/web), bundled unmodified; it brings @livekit/protocol, @livekit/mutex and rxjs (Apache-2.0), @bufbuild/protobuf (Apache-2.0 and BSD-3-Clause), webrtc-adapter (BSD-3-Clause), events, jose, loglevel, sdp, sdp-transform (MIT), tslib (0BSD) and machina (MIT or GPL, taken as MIT); apps/web/pnpm-lock.yaml pins each |
What the desktop packages carry (M10)
The .deb and .rpm hold only the studio app and its icons; WebKitGTK and GTK come from the
system. Two packages carry other people's code, unmodified, each under its own licence:
| Package | Carries | Licence |
|---|---|---|
| AppImage | WebKitGTK 4.1, GTK 3, GLib, libsoup, GStreamer and the other libraries ldd finds, as packaged by Ubuntu 22.04 when built; linuxdeploy's GTK plugin's start-up hook; AppImageKit's AppRun |
LGPL-2.1-or-later and LGPL-2.0-or-later for the libraries, with others as each library says; MIT for linuxdeploy's hook and AppRun. The source of each library is the one Ubuntu 22.04 publishes for that package version |
| Windows installer | Microsoft's WebView2Loader.dll, from the webview2-com-sys crate 0.39.1; nsis_tauri_utils.dll 0.5.3 (Tauri's NSIS plugin); the NSIS installer stub 3.11 |
Microsoft's WebView2 SDK licence (redistributable; to be confirmed before the first release); MIT or Apache-2.0; zlib/libpng for NSIS |
The build downloads linuxdeploy, its AppImage plugin, AppRun and nsis_tauri_utils.dll from
the Tauri and linuxdeploy projects' release pages when it first runs (deploy/desktop/build.sh).
GStreamer elements the desk uses
The desk uses only these elements (ADR-0003 asks for the list); none is GPL.
| Element | Plugin set | Licence |
|---|---|---|
audiomixer, audiotestsrc, audioconvert, audioresample, volume, opusenc, opusdec, oggdemux |
base | LGPL-2.1-or-later |
tee, queue, capsfilter, fakesink |
core | LGPL-2.1-or-later |
matroskamux, matroskademux, souphttpsrc |
good | LGPL-2.1-or-later |
srtsink, srtsrc |
bad (with libsrt, MPL-2.0) | LGPL-2.1-or-later |
livekitwebrtcsrc, livekitwebrtcsink, webrtcbin and the elements inside them |
gst-plugins-rs webrtc; bad |
MPL-2.0; LGPL-2.1-or-later |
videotestsrc, videoconvert, videoscale, videorate, textoverlay, appsrc, appsink |
base | LGPL-2.1-or-later |
vp8dec, vp9dec, qtdemux |
good | LGPL-2.1-or-later |
av1parse, av1dec, svtav1enc, nvav1enc, cudaupload |
bad | LGPL-2.1-or-later |
cmafmux, hlscmafsink, dav1ddec |
gst-plugins-rs isobmff, hlssink3, dav1d |
MPL-2.0 |
souphttpsrc, oggdemux, opusdec, srtsrc, matroskademux and qtdemux appear in tests only. The desk image also carries FFmpeg (Fedora's ffmpeg-free, LGPL) for the VMAF measurement; the server image does not.
Rust dependencies
Every crate the workspace depends on is under a licence in deny.toml's list (MIT,
Apache-2.0, BSD-3-Clause, BSL-1.0, ISC, MPL-2.0, Unicode-3.0, Unlicense, Zlib, or a choice among
them; the studio app's updater, tauri-plugin-updater 2.14.0, is MIT OR Apache-2.0 and uses the
platform's TLS rather than rustls. The control plane's webhook deliveries (ADR-0195) do use rustls, through ureq's rustls feature (and so does the chat's ureq when the two are built together, though the chat calls only the control plane over http): rustls (Apache-2.0 OR ISC OR MIT), ring (Apache-2.0 AND ISC), rustls-webpki and untrusted (ISC), and webpki-roots, Mozilla's root certificates as data (CDLA-Permissive-2.0), all unmodified, so deny.toml allows ISC and CDLA-Permissive-2.0 and nothing else came in with them (cargo deny list names only these five). Both are permissive and compatible with distributing the whole under AGPL-3.0-only; a binary distribution carries their notices as these crates ship them (LICENSE in each, and for webpki-roots the CDLA-Permissive-2.0 text, its section 3.1), as it does every crate's; MPL-2.0 arrives with the studio app's Tauri and WebKitGTK crates, and with Symphonia in
the media worker, all unmodified); just licences checks it with cargo deny check licenses, and Cargo.lock names each crate
and version.
The media worker (crates/media) parses untrusted audio with these, all pure Rust and
unmodified: Symphonia 0.6.1 (MPL-2.0; WAV, FLAC, MP3, Vorbis, AAC), opus-decoder 0.1.1 (MIT OR
Apache-2.0), ogg 0.9.2 (BSD-3-Clause), ebur128 0.1.10 (MIT), flacenc 0.5.1 (Apache-2.0), and
landlock 0.4.7 and rustix 1.1.5 (MIT OR Apache-2.0) for its sandbox. Two faults found in them
are worked around in our code, not patched: opus-decoder's multistream packet split
(crates/media/src/multistream.rs) and flacenc's STREAMINFO minimum block size.
The default loop in assets/default-loop/
default-loop.flac is the loop a new station plays until it adds its own fallback files (ADR-0130).
It is WeaveSignal's own work: 32 seconds of sine tones, synthesised by make.sh beside it, with no
sample or recording of anyone else's in it. The recording is released under CC0-1.0
(LICENSES/CC0-1.0.txt), so a station may keep it, change it or replace it freely; make.sh is
code and AGPL-3.0-only.
In spike/
Spike 01's harness and results are measurements, not product code.
spike/harness/web/livekit-client.umd.jsis LiveKit's JavaScript client as published, Apache-2.0, unmodified.- The synthetic talk show (
spike/talkshow/) builds its voices locally and keeps them out of git: two consented personal-use voice clones, and four speakers from the CSTR VCTK Corpus (ODC-By 1.0; attribution in the ignoredvoices/ATTRIBUTION.txt). Nothing derived from them is committed.
Sound effects in assets/carts-demo/
Demo sounds for the cart wall, cut, loudness-set and re-encoded to Ogg Opus. Most are CC0 or public domain (Wikimedia Commons, Kenney.nl, OpenGameArt); the full table is assets/carts-demo/CREDITS.md. These need credit (CC BY):
laugh-1.opus: "72842 lonemonk approx-800-laugh-1.wav" by lonemonk (via Freesound, sound 72842), https://commons.wikimedia.org/wiki/File:72842_lonemonk_approx-800-laugh-1.wav, CC BY 3.0 (https://creativecommons.org/licenses/by/3.0); cut, loudness-set and re-encoded.laugh-2.opus: "72843 lonemonk approx-800-laughter-only-1.wav" by lonemonk (via Freesound, sound 72843), https://commons.wikimedia.org/wiki/File:72843_lonemonk_approx-800-laughter-only-1.wav, CC BY 3.0 (https://creativecommons.org/licenses/by/3.0); cut, loudness-set and re-encoded.laugh-3.opus: "72844 lonemonk approx-800-laughter-and-clapter-1.wav" by lonemonk (via Freesound, sound 72844), https://commons.wikimedia.org/wiki/File:72844_lonemonk_approx-800-laughter-and-clapter-1.wav, CC BY 3.0 (https://creativecommons.org/licenses/by/3.0); cut, loudness-set and re-encoded.rimshot-1.opus: "Kevin MacLeod assorted rimshots - Bah-dum.wav" by Kevin MacLeod (incompetech.com), https://commons.wikimedia.org/wiki/File:Kevin_MacLeod_assorted_rimshots_-_Bah-dum.wav, CC BY 3.0 (https://creativecommons.org/licenses/by/3.0); cut, loudness-set and re-encoded.rimshot-2.opus: "Kevin MacLeod assorted rimshots - Bu-doo.wav" by Kevin MacLeod (incompetech.com), https://commons.wikimedia.org/wiki/File:Kevin_MacLeod_assorted_rimshots_-_Bu-doo.wav, CC BY 3.0 (https://creativecommons.org/licenses/by/3.0); cut, loudness-set and re-encoded.rimshot-3.opus: "Kevin MacLeod assorted rimshots - Bah-dum-bum-ding.wav" by Kevin MacLeod (incompetech.com), https://commons.wikimedia.org/wiki/File:Kevin_MacLeod_assorted_rimshots_-_Bah-dum-bum-ding.wav, CC BY 3.0 (https://creativecommons.org/licenses/by/3.0); cut, loudness-set and re-encoded.boing-1.opus: "Boing raw.ogg" by cfork, https://commons.wikimedia.org/wiki/File:Boing_raw.ogg, CC BY 4.0 (https://creativecommons.org/licenses/by/4.0); cut, loudness-set and re-encoded.sad-trombone-1.opus: "Sad Trombone-Joe Lamb-665429450.ogg" by Joe Lamb, https://commons.wikimedia.org/wiki/File:Sad_Trombone-Joe_Lamb-665429450.ogg, CC BY 3.0 (https://creativecommons.org/licenses/by/3.0); cut, loudness-set and re-encoded.phone-ring-1.opus: "WWS AutomatictelephoneIskraEta80ringing.ogg" by Work With Sounds / Technical Museum of Slovenia, https://commons.wikimedia.org/wiki/File:WWS_AutomatictelephoneIskraEta80ringing.ogg, CC BY 4.0 (https://creativecommons.org/licenses/by/4.0); cut, loudness-set and re-encoded.phone-ring-2.opus: "Zero-project - Metamorphosis (ringtone).ogg" by zero-project, https://commons.wikimedia.org/wiki/File:Zero-project_-_Metamorphosis_%28ringtone%29.ogg, CC BY 4.0 (https://creativecommons.org/licenses/by/4.0); cut, loudness-set and re-encoded.drumroll-2.opus: "Kevin MacLeod assorted rimshots - 4-second roll.wav" by Kevin MacLeod (incompetech.com), https://commons.wikimedia.org/wiki/File:Kevin_MacLeod_assorted_rimshots_-_4-second_roll.wav, CC BY 3.0 (https://creativecommons.org/licenses/by/3.0); cut, loudness-set and re-encoded.fanfare-2.opus: "Kevin MacLeod - Fanfare for Space.ogg" by Kevin MacLeod (incompetech.com), https://commons.wikimedia.org/wiki/File:Kevin_MacLeod_-_Fanfare_for_Space.ogg, CC BY 4.0 (https://creativecommons.org/licenses/by/4.0); cut, loudness-set and re-encoded.news-sting-1.opus: "NewsSting (ISRC USUAN1100361).mp3" by Kevin MacLeod (incompetech.com), https://commons.wikimedia.org/wiki/File:NewsSting_%28ISRC_USUAN1100361%29.mp3, CC BY 3.0 (https://creativecommons.org/licenses/by/3.0); cut, loudness-set and re-encoded.news-sting-2.opus: "Light Sting (ISRC USUAN1100433).mp3" by Kevin MacLeod (incompetech.com), https://commons.wikimedia.org/wiki/File:Light_Sting_%28ISRC_USUAN1100433%29.mp3, CC BY 3.0 (https://creativecommons.org/licenses/by/3.0); cut, loudness-set and re-encoded.thunder-1.opus: "Rhumphries - rbh-thunder-storm.ogg" by RHumphries, https://commons.wikimedia.org/wiki/File:Rhumphries_-_rbh-thunder-storm.ogg, CC BY 3.0 (https://creativecommons.org/licenses/by/3.0); cut, loudness-set and re-encoded.bed-1.opus: "Wholesome by Kevin MacLeod.ogg" by Kevin MacLeod (incompetech.com), https://commons.wikimedia.org/wiki/File:Wholesome_by_Kevin_MacLeod.ogg, CC BY 4.0 (https://creativecommons.org/licenses/by/4.0); cut, loudness-set and re-encoded.bed-2.opus: "Chill Background Music (Antti Luode).mp3" by Antti Luode, https://commons.wikimedia.org/wiki/File:Chill_Background_Music_%28Antti_Luode%29.mp3, CC BY 3.0 (https://creativecommons.org/licenses/by/3.0); cut, loudness-set and re-encoded.