Autor popularnej biblioteki Ruby mimemagic, która ma ponad 100 milionów pobrań, był zmuszony do zmiany licencji z MIT na GPLv2 z powodu wykrycia naruszenia licencji GPLv2 w projekcie. W RubyGems pozostawiono jedynie wersje 0.3.6 i 0.4.0, dostarczane na zasadzie GPL, a wszystkie starsze wydania na licencji MIT zostały usunięte. Co więcej, rozwój mimemagic został wstrzymany, a repozytorium na GitHubie przeszło w stan archiwalny.
Te działania spowodowały naruszenie możliwości budowania projektów, które korzystają z mimemagic jako zależności i są dostarczane na zasadzie licencji niezgodnych z GPLv2. Przy użyciu nowej wersji mimemagic, deweloperzy innych projektów, w tym własnościowych (licencja MIT dopuszcza takie użycie), są zobowiązani do przelicencjonowania swojego kodu na GPL. Problemy pogłębiło to, że stare wersje na licencji MIT przestały być dostępne w RubyGems.org. Jeśli w budowie serwerze nie jest włączone buforowanie pakietów, próba budowy projektów ze starszymi wersjami mimemagic zakończy się błędem.
Na celowniku znalazł się również framework Ruby on Rails, który ładował mimemagic wśród swoich zależności. Ruby on Rails jest dostarczany na licencji MIT i nie może zawierać komponentów na licencji GPL. Problem stał się globalny — jeśli bezpośrednia zmiana dotknęła 172 pakiety, to biorąc pod uwagę zależności, ucierpiało ponad 577 tysięcy repozytoriów.
Naruszenie licencji GPL w projekcie mimemagic wiąże się z dostarczeniem w kodzie pliku freedesktop.org.xml, będącego kopią bazy danych typów MIME z biblioteki shared-mime-info. Wskazany plik jest rozpowszechniany na podstawie licencji GPLv2, a sama biblioteka shared-mime-info jest na licencji ISC, zgodnej z GPL. Źródła mimemagic były dostarczane na licencji MIT, a dostarczenie komponentów na licencji GPLv2 wymaga rozpowszechnienia produktu pochodnego na licencji zgodnej z GPLv2. Towarzyszący shared-mime-info zwrócił na to uwagę, a autor mimemagic zgodził się na wymaganie zmiany licencji.
Wynikiem miałoby być zrealizowanie analizy pliku XML w locie, bez dostarczania freedesktop.org.xml w składzie biblioteki, ale towarzyszący mimemagic zamroził repozytorium projektu, dlatego tę pracę szybko będzie musiał wykonać ktoś inny. Może się zdarzyć, że jeśli autor mimemagic nie zechce przywrócić swojego projektu do działania (na razie odmawia), konieczne będzie stworzenie forka mimemagic i wymiana zależności w wszystkich powiązanych projektach. Jako alternatywa rozważany jest również transfer projektów zależnych od mimemagic na bibliotekę libmagic.
Źródło: opennet.ru
