# Komponenty zewnętrzne — MediaLab Online Light

Dokument opisuje, co faktycznie trafia do `dist/` i na jakiej licencji. Stan na 2026-11-01. **Nie jest to porada prawna.**

## 1. Co jest dystrybuowane ze stroną

| Komponent | Wersja | Licencja | Plik w `dist/` | Uwagi |
|---|---|---|---|---|
| `@ffmpeg/ffmpeg` (wrapper + worker) | 0.12.15 | MIT | `vendor/ffmpeg/*.js` | Moduły ESM: `index.js`, `classes.js`, `const.js`, `errors.js`, `types.js`, `utils.js`, `worker.js` |
| `ffmpeg-core` (rdzeń WASM, jednowątkowy) — **własna kompilacja** | FFmpeg 5.1.4, emscripten 3.1.40 | **LGPL-2.1-lub-nowsza** (bez GPL) | `vendor/ffmpeg-core/ffmpeg-core.js`, `ffmpeg-core.wasm` | Zbudowany przez `wasm-build/build_core.sh`; źródła w `zrodla/medialab-online-core-zrodla.tar.gz`; patrz sekcja 2 |
| Własny kod strony | 1.1.0 | **Apache-2.0** (decyzja właściciela 1.11.2026) | `js/`, `css/`, `*.html`, `NOTICE.txt` | Pliki `LICENSE`, `NOTICE`; opis w `LICENCJA_DO_DECYZJI.md` |
| Ikona MediaLab | — | własny rysunek właściciela (z projektu desktopowego) | `assets/brand/` | Skopiowana z projektu MediaLab (macOS) |

Narzędzia deweloperskie (NIE trafiają do `dist/`): `playwright-core` (Apache-2.0), `axe-core` (MPL-2.0), emsdk/emscripten (MIT/NCSA; tylko do budowy rdzenia).
Dawny pakiet `@ffmpeg/core` 0.12.10 (GPL, x264/x265) został **usunięty** z zależności i ze strony; materiały o nim: `LICENSES/archiwum-dawny-rdzen-GPL/`, `provenance-archiwum/` (nie są dołączane do `dist/`).
Czcionki: tylko systemowe (żadnych plików czcionek, żadnych czcionek z internetu).

## 2. Zawartość rdzenia `ffmpeg-core.wasm` (LGPL-2.1-lub-nowsza)

Konfiguracja FFmpeg (z `wasm-build/build_core.sh`): `--disable-gpl --disable-nonfree --disable-version3 --enable-zlib --enable-libmp3lame --enable-libvorbis --enable-libopus --enable-libvpx`
(+ ustawienia cross-kompilacji i `--disable-autodetect`). Skrypt budowy przerywa pracę, jeśli konfiguracja miałaby GPL lub nonfree; skrypt kontrolny strony (`scripts/check.mjs`)
sprawdza w gotowym pliku `.wasm`: napis konfiguracji (`--disable-gpl`, brak `--enable-gpl/nonfree/version3`) i brak symboli koderów x264/x265.

| Biblioteka | Wersja | Licencja | Wykorzystywana przez MediaLab Online |
|---|---|---|---|
| FFmpeg (libav*, fftools z nakładki ffmpeg.wasm) | 5.1.4 | LGPL-2.1-lub-nowsza (przy konfiguracji bez GPL) | tak (demuxery, dekodery — także H.264, AAC, FLAC, PCM — koder AAC/FLAC/PCM/GIF) |
| libmp3lame (LAME) | 3.100 | LGPL-2.0-lub-nowsza | tak — MP3 |
| libvorbis, libogg | 1.3.7, 1.3.5 | BSD-3-Clause | tak — OGG Vorbis, WebM |
| libopus | 1.5.2 | BSD-3-Clause | zbudowany; strona koduje Opus **natywnym** koderem FFmpeg (patrz `TEST_REPORT.md`) |
| libvpx (VP8/VP9) | 1.14.1 | BSD-3-Clause (+ PATENTS) | tak — WebM (VP8) |
| zlib (port emscripten) | wg emscripten 3.1.40 | zlib | pośrednio |
| Emscripten runtime | 3.1.40 | MIT / NCSA | tak (środowisko uruchomieniowe) |

**Czego NIE ma:** x264, x265 (kodowanie H.264/H.265), libass, freetype, fribidi, harfbuzz, libwebp, libtheora, libzimg i innych komponentów dawnego rdzenia GPL.
Skutek: strona **nie zapisuje** wideo w MP4 (H.264) — oferuje WebM (VP8 + Vorbis); pliki wejściowe H.264/HEVC dekoduje dekoder natywny FFmpeg.

Teksty licencji: `LICENSES/` (repozytorium), `licencje/` (strona) — wyjęte z dokładnie tych archiwów źródłowych, z których zbudowano rdzeń (z wyjątkiem krótkich tekstów zlib i emscripten, patrz `LICENSES/README.txt`).

## 3. Wniosek licencyjny

1. **Rdzeń WASM jest własną kompilacją LGPL-2.1-lub-nowszej** bez komponentów GPL i bez nonfree (potwierdzone konfiguracją i testem skryptu kontrolnego).
2. Rdzeń jest wysyłany do przeglądarek odwiedzających, czyli jest dystrybuowany. Dla LGPL dołączono: teksty licencji (`licencje/`), informację o prawach autorskich
   (nagłówki w źródłach), komplet źródeł odpowiadających plikowi (`zrodla/medialab-online-core-zrodla.tar.gz`) oraz skrypt budowy; rdzeń jest osobnym plikiem,
   który można zastąpić własnoręcznie zbudowanym (`WASM_SOURCE_OFFER.txt`, punkt 3).
3. **Własny kod strony** jest na licencji **Apache-2.0** (wybór właściciela) i odseparowany od rdzenia (osobne pliki, komunikacja wiadomościami workera); rdzeń LGPL pozostaje na swojej licencji, a strona nie wymaga, by rdzeń był na Apache-2.0.
4. **Patenty / licencje kodeków** (AAC, MP3 itd.) są odrębnym tematem od praw autorskich; autor ich nie weryfikował prawnie. Koder H.264 (x264) został usunięty ze strony.
5. **Luki, które zostają:** (a) archiwum FFmpeg 5.1.4 ma sumę SHA-256 zmierzoną po pobraniu z oficjalnego hosta (HTTPS) — podpisu GPG (`.asc`) nie weryfikowano (brak `gpg`);
   (b) wydanie 5.1.4 jest starą gałęzią FFmpeg (wymusza ją nakładka ffmpeg.wasm v0.12.10) — nie jest to wersja z najnowszymi poprawkami bezpieczeństwa;
   (c) rdzeń nie był testowany w Safari ani Firefoxie (patrz `TEST_REPORT.md`).
6. **Wdrożenie na serwer publiczny** wymaga zgody właściciela (`deploy/owner-decisions.json`, `DEPLOY_NAZWA_PL.md`); niczego nie wdrożono.
