Oprava porušenia GPL v knižnici mimemagic spôsobí pád v Ruby on Rails

Autor populárnej mimemágie knižnice Ruby, ktorá má viac ako 100 miliónov stiahnutí, bol nútený zmeniť licenciu z MIT na GPLv2 kvôli zisteniu porušenia licencie GPLv2 v projekte. RubyGems si zachovali iba verzie 0.3.6 a 0.4.0, ktoré boli dodávané pod GPL, a odstránili všetky staršie vydania s licenciou MIT. Okrem toho bol vývoj mimemagic zastavený a úložisko na GitHub bolo prenesené do archivovaného stavu.

Tieto akcie viedli k možnosti vytvárať projekty, ktoré používajú mimemagic ako závislosť a sú distribuované pod licenciami, ktoré nie sú kompatibilné s GPLv2. Pri používaní novej verzie mimemagic sú vývojári iných projektov, vrátane proprietárnych (licencia MIT takéto použitie umožňuje), povinní prelicencovať svoj kód pod GPL. Problém bol ešte horší, že staršie verzie s licenciou MIT už neboli dostupné na RubyGems.org. Ak na zostavovacom serveri nie je povolené ukladanie balíkov do vyrovnávacej pamäte, pokus o zostavenie projektov s predchádzajúcimi verziami mimemagic zlyhá.

Zasiahnutý bol aj rámec Ruby on Rails, ktorý medzi svoje závislosti načítava mimemagiu. Ruby on Rails je licencovaný pod licenciou MIT a nemôže obsahovať komponenty GPL. Problém sa stal globálnym – ak sa zmena dotkla priamo 172 balíkov, tak s prihliadnutím na závislosti bolo ovplyvnených viac ako 577 tisíc úložísk.

Porušenie licencie GPL v projekte mimemagic je spojené s doručením súboru freedesktop.org.xml v kóde, ktorý je kópiou databázy typu MIME z knižnice shared-mime-info. Uvedený súbor je distribuovaný pod licenciou GPLv2 a samotná knižnica shared-mime-info je licencovaná pod licenciou ISC, kompatibilnou s GPL. Zdrojový kód mimemagic je šírený pod licenciou MIT a distribúcia komponentov v rámci licencie GPLv2 vyžaduje distribúciu odvodeného produktu v súlade s licenciou GPLv2. Správca shared-mime-info si to všimol a autor mimemagic súhlasil s požiadavkou na zmenu licencie.

Riešením by bolo analyzovať súbor XML za chodu bez dodania freedesktop.org.xml ako súčasť knižnice, ale správca mimemagic zmrazil úložisko projektu, takže túto prácu by musel rýchlo vykonať niekto iný. Je možné, že ak autor mimemagic nechce vrátiť svoj projekt do prevádzky (doteraz to odmietal), bude potrebné vytvoriť fork mimemagic a nahradiť závislosť vo všetkých súvisiacich projektoch. Ako možnosť sa zvažuje aj prechod projektov založených na mimemagic na knižnicu libmagic.

Zdroj: opennet.ru

Pridať komentár