Oprava porušení GPL v knihovně mimemagic způsobí pád v Ruby on Rails

Autor oblíbené mimemagie knihovny Ruby, která má přes 100 milionů stažení, byl nucen změnit svou licenci z MIT na GPLv2 kvůli zjištění porušení licence GPLv2 v projektu. RubyGems si ponechal pouze verze 0.3.6 a 0.4.0, které byly dodávány pod licencí GPL, a odstranil všechna starší vydání s licencí MIT. Navíc byl zastaven vývoj mimemagic a úložiště na GitHubu bylo převedeno do archivovaného stavu.

Tyto akce vedly ke schopnosti vytvářet projekty, které používají mimemagic jako závislost a jsou distribuovány pod licencemi, které nejsou kompatibilní s GPLv2. Při použití nové verze mimemagic jsou vývojáři jiných projektů, včetně proprietárních (licence MIT takové použití umožňuje), povinni přelicencovat svůj kód pod GPL. Problém byl zhoršen tím, že starší verze pod licencí MIT již nebyly dostupné na RubyGems.org. Pokud na sestavení serveru není povoleno ukládání balíčků do mezipaměti, pokus o sestavení projektů s předchozími verzemi mimemagic selže.

Zasažen byl i framework Ruby on Rails, který mezi své závislosti načítá mimemagii. Ruby on Rails je licencován pod licencí MIT a nemůže obsahovat komponenty pod licencí GPL. Problém se stal globálním – pokud se změna přímo dotkla 172 balíčků, pak s přihlédnutím k závislostem bylo zasaženo více než 577 tisíc úložišť.

Porušení licence GPL v projektu mimemagic je spojeno s doručením souboru freedesktop.org.xml v kódu, což je kopie databáze typu MIME z knihovny shared-mime-info. Uvedený soubor je distribuován pod licencí GPLv2 a samotná knihovna shared-mime-info je licencována pod licencí ISC, kompatibilní s GPL. Zdrojový kód mimemagic je distribuován pod licencí MIT a distribuce komponent pod licencí GPLv2 vyžaduje distribuci odvozeného produktu pod licencí vyhovující GPLv2. Správce shared-mime-info si toho všiml a autor mimemagic souhlasil s požadavkem na změnu licence.

Řešením by bylo analyzovat soubor XML za chodu, aniž by bylo nutné poskytovat freedesktop.org.xml jako součást knihovny, ale správce mimemagic zmrazil repozitář projektu, takže by tuto práci musel rychle udělat někdo jiný. Je možné, že pokud autor mimemagic nebude chtít vrátit svůj projekt do provozu (dosud to odmítal), bude nutné vytvořit fork mimemagic a nahradit závislost ve všech souvisejících projektech. Přechod projektů založených na mimemagic na knihovnu libmagic se také zvažuje jako možnost.

Zdroj: opennet.ru

Přidat komentář