Nový korpus kódu The Stack v3: u 95 % souborů trénovací sady se licence nenašla
Hugging Face vydal The Stack v3, další díl sbírky zdrojového kódu pro trénování modelů: jeho trénovací sada má 15,9 TB textu ze 173 milionů repozitářů na GitHubu. Ze statistik, které projekt zveřejnil spolu s daty, plyne, že 2,68 miliardy z 2,80 miliardy souborů nese známku „no_license“, tedy nástroj na rozpoznávání licencí u nich žádnou nenašel. Ven ze sbírky letí jen soubory, u kterých se našla licence nepermisivní.

Hugging Face zveřejnil 23. července The Stack v3, další díl sbírky zdrojového kódu, ze které se učí modely na psaní programů. Trénovací sada má 15,9 TB textu v 713 programovacích a značkovacích jazycích ze 173 milionů repozitářů na GitHubu, což vydá zhruba 4,9 bilionu tokenů. Úplná verze před filtrem kvality je podle karty datové sady 113,7 TB a pokrývá 224,9 milionu repozitářů.
Zajímavější než velikost je ale to, odkud ten kód pochází a co s ním kdo smí dělat. Na to má projekt vlastní čísla, protože je vydal spolu s daty. A říkají, že u drtivé většiny souborů se nepodařilo zjistit vůbec žádnou licenci.
Ven letí jen soubory s nalezenou nepermisivní licencí
Licence se v The Stacku hledá strojově. Nástroj ScanCode Toolkit prohlédne soubory, jejichž jméno odpovídá vzoru licenčního textu (LICENSE, COPYING, NOTICE, README a další), a nalezené licence se pak rozšíří na všechny soubory ve stejném a nižším adresáři. Soubor u kořene repozitáře tak pokryje celý projekt, soubor v src/lib/ jen tuhle větev.
Každý soubor pak dostane jednu ze tří známek: permissive (našla se aspoň jedna permisivní licence a žádná, která by jí odporovala), non_permissive, nebo no_license. Poslední z nich karta datové sady definuje jako stav, kdy se nenašla žádná licence, nebo jen právní texty, které licencí nejsou, třeba dohody o přispívání. Z obou vydaných sad se vyhazuje jen prostřední skupina.
Kolik toho zbude, je vidět v souboru stats/train/totals.json. Trénovací sada má 2 801 821 353 souborů a 2 677 236 668 z nich nese známku no_license, tedy 95,6 %. Permisivní licenci má 124,6 milionu souborů, tedy 4,4 %. Měřeno tokeny vyjde poměr 94,6 ku 5,4 %, u úplné verze je bez nalezené licence 94,3 % souborů.
Mezi tou zbylou dvacetinou vede s odstupem Apache 2.0, která se našla u 92,0 milionu souborů; MIT jich má 2,6 milionu. Soubor může mít nalezených licencí i víc, takže součet přes všechny licence (126,2 milionu) je vyšší než počet permisivních souborů.
Co znamená „bez licence“
Známka no_license neříká, že je kód volný. Říká, že se licence nenašla, a bez licence platí výchozí autorské právo. Dokumentace GitHubu to má napsané rovnou: „Licenci si zvolit nemusíte. Bez licence ale platí výchozí autorské právo, což znamená, že si ponecháváte veškerá práva ke svému zdrojovému kódu a nikdo ho nesmí rozmnožovat, šířit ani z něj vytvářet odvozená díla.“ (překlad redakce) O kus dál dodává, že podmínky služby dávají ostatním uživatelům GitHubu právo repozitář prohlížet a rozvětvit, tedy udělat si vlastní kopii uvnitř GitHubu.
Není to novinka téhle verze. První The Stack z roku 2022 obsahoval jen kód pod permisivními licencemi. Pole license_type s hodnotami permissive a no_license přibylo až ve verzi 2 z roku 2024. Nová je velikost, ne to rozhodnutí.
Pod datovou sadou se o to vede spor
Den po vydání na to upozornil uživatel vystupující jako douira. Podle něj opravňují podmínky služby GitHubu jen k rozvětvení uvnitř GitHubu, ne k šíření kódu jinam, takže vydání repozitářů bez licence je porušením autorského práva; požaduje odstranění všech souborů, které nekryje permisivní licence.
29. července přidal uživatel noxime hlášení, že jsou v datové sadě jeho repozitáře, a tři z nich vyjmenoval. Podívali jsme se na první z nich, RipIt: licenční soubor v něm žádný není. Právě proto v datech je. Do vyhozené skupiny non_permissive patří repozitáře s nalezenou nepermisivní licencí, ne ty úplně bez ní.
Odpověď pod hlášením odkázala na formulář pro odhlášení. „Tenhle systém by měl fungovat na přihlášení, protože chybějící údaj o licenci neznamená volně licencované dílo,“ napsal na to noxime (překlad redakce).
Odhlásit se jde, počítá se to po účtech
Odhlášení běží přes samostatný repozitář opt-out-v2: zájemce v něm založí hlášení a vypíše účty nebo jednotlivé repozitáře, které mají pryč. Pomáhá tomu aplikace Am I in The Stack? Po zadání jména účtu ukáže, co je v datech, a formulář předvyplní. „Odhlášení vyloučí váš kód z příští verze The Stacku a ze současného i budoucího trénování modelů,“ slibuje popis repozitáře (překlad redakce).
27. července si jeden z diskutujících stěžoval, že žádostí čeká skoro čtyři tisíce a od chvíle, kdy se odhlašování začalo propagovat, se podle něj nevyřídila ani jedna. Ptal se také, proč se odhlásit jde jen po repozitářích, a ne po jednotlivých příspěvcích do cizích projektů; k 1. srpnu na to nikdo neodpověděl. Se samotnými žádostmi se ale pohnulo: 31. července se do datové sady začlenila úprava nazvaná „Apply opt-out removals“. Ve výpisu žádostí zbývalo 1. srpna 625 otevřených proti 6 414 uzavřeným; kolik z nich zavřela právě tahle úprava, se z výpisu nepozná.
Sbírka je pod ODC-BY, kód v ní pod svým
Datová sada je vydaná pod licencí ODC-BY 1.0, tedy s podmínkou uvést zdroj. Na Hugging Face je to štítek jako každý jiný a u licence OpenMDW jsme měřili, že se štítek a filtr nad ním umí rozejít. Karta hned dodává, že se ODC-BY týká sbírky, ne kódu v ní: jakékoli užití shromážděného kódu se musí řídit podmínkami původních licencí včetně doložek o uvedení autora, kde jsou na místě. Aby to šlo splnit, nese každý soubor jméno repozitáře, číslo commitu a seznam nalezených licencí. Karta zároveň jmenuje i to, co jí nesvědčí: že přesnost určení licence stojí a padá se ScanCodem a s metadaty GitHubu, že v datech může být škodlivý kód a že odstranění osobních údajů není spolehlivé.
Jedna věc, která se za číslem 95,6 % snadno ztratí: sběr skončil 7. srpna 2025. Korpus vyšel skoro rok po něm, takže repozitář, který si mezitím licenci doplnil, smazal nebo skryl, je v datech pořád v podobě z loňského léta. Kdo chce vědět, jestli tam je, si to ověří sám. Kdo tam být nechce, musí požádat.
Zdroje: karta datové sady The Stack v3 a statistiky trénovací části, dokumentace GitHubu k licencování repozitáře, repozitář opt-out-v2 a diskuse u datové sady.