Autor populární Ruby knihovny mimemagic, která má více než 100 milionů stažení, byl nucen změnit licenci z MIT na GPLv2 kvůli odhalení porušení licence GPLv2 v projektu. Na RubyGems byly ponechány pouze verze 0.3.6 a 0.4.0, dodávané pod GPL, a všechny staré vydání pod licencí MIT byly odstraněny. Navíc byla vývojová činnost na mimemagic zastavena a repozitář na GitHubu byl převeden do archivačního stavu.
Tato opatření vedla k porušení možnosti sestavování projektů, které používají mimemagic jako závislost a jsou dodává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 to umožňuje), povinni převést svůj kód na licenci GPL. Problém se zhoršil tím, že staré verze pod licencí MIT přestaly být dostupné na RubyGems.org. Pokud není v sestavě zahrnuto serveru kešování balíčků, pokus o sestavení projektů se staršími verzemi mimemagic povede k chybě.
Pod úder padl také rámec Ruby on Rails, který načítá mimemagic mezi závislostmi. Ruby on Rails je dodáváno pod licencí MIT a nemůže obsahovat komponenty pod GPL. Problém nabral globální rozměry — zatímco přímá změna zasáhla 172 balíčků, zohledněním závislostí bylo poškozeno více než 577 tisíc repozitářů.
Porušení licence GPL v projektu mimemagic souvisí s dodáním souboru freedesktop.org.xml v kódu, který je kopií databáze MIME typů z knihovny shared-mime-info. Uvedený soubor je šířen pod licencí GPLv2, zatímco samotná knihovna shared-mime-info je pod licencí ISC, která je kompatibilní s GPL. Zdrojové kódy mimemagic byly dodávány pod licencí MIT a dodání komponentů pod licencí GPLv2 vyžaduje šíření odvozeného produktu pod licencí, která je kompatibilní s GPLv2. Doprovodný shared-mime-info na to upozornil a autor mimemagic souhlasil s požadavkem na změnu licence.
Výstupem by bylo provést analýzu XML souboru za běhu, bez dodání freedesktop.org.xml součástí knihovny, ale doprovodný mimemagic zmrazil repozitář projektu, takže tuto práci musí naléhavě provést někdo jiný. Možná, pokud autor mimemagicu nebude chtít vrátit svůj projekt do provozu (zatím odmítá), bude potřeba vytvořit fork mimemagicu a nahradit závislost ve všech souvisejících projektech. Jako možnost se také zvažuje přechod projektů závislých na mimemagic na knihovnu libmagic.
Zdroj: opennet.ru
