r   e   k   l   a   m   a
r   e   k   l   a   m   a

Obiecanki cacanki z Microsoftu? Otwarty .NET i nowe Mono wyglądają na licencyjne pułapki

Strona główna AktualnościOPROGRAMOWANIE

Uwolnienie przez Microsoft frameworku .NET nie przebiegło do końca tak, jak się na początku tego spodziewano. Jak wiadomo, Redmond zdecydowało się wydać na wolnej licencji MIT jedynie jego specjalną, zmodularyzowaną wersję, tzw. .NET Core, wraz z zestawem niektórych narzędzi programistycznych i bibliotek. Teraz po kod ten sięgnęli twórcy Mono, otwartej implementacji .NET Frameworka – i to mimo poważnych wątpliwości co do tego, czy faktycznie kod od Microsoftu jest tak wolny, jak się to oficjalnie przedstawia. Czy w tej sytuacji Mono powinno zniknąć z linuksowych dystrybucji?

Na stronie Mono o wątpliwościach związanych z licencjonowaniem nie przeczytamy. Nic dziwnego, lider projektu, Miguel de Icaza, jest w środowisku Open Source uważany za sympatyka Microsoftu, a czasem wręcz za konia trojańskiego tej firmy. Nowa wersja 4.0.0 przynosi jednak tyle technicznych ulepszeń, że te kwestie prawne odchodzą na bok. I tak kompilator obsługuje język C# w wersji 6.0, pojawiło się wsparcie dla 32-bitowych zmiennoprzecinkowych operacji o mniejszej dokładności (a za to większej wydajności), zwiększono sprawność sprzątania nieużytków, wyrzucono wsparcie dla starszych wersji API .NET Frameworka, zmniejszono narzut debuggera – i jak już wspomniano, wykorzystano kod wydany przez Microsoft w ramach .NET ReferenceSource.

To dopiero początek wykorzystania microsoftowego kodu: deweloperzy Mono zapowiadają, że w przyszłości chcą przygotować wydanie Mono Core, które będzie mogło zastąpić .NET Core w ramach nowego systemu dystrybucji bibliotek dla modularnego .NET-u, wykorzystując kod udostępniany nie tylko w ReferenceSource, ale też w CoreFX i CoreCLR. W teorii powinno to zapewnić same korzyści, na czele z większą kompatybilnością, ułatwiając uruchamianie kodu .NET w systemach uniksowych. Łatwość wykorzystania C# na Linuksie, OS X i BSD, jaką przynosi Mono, mogłaby odwrócić uwagę od takich języków jak Rust czy Go, czyniąc go nie tylko prawdopodobnie najlepszym językiem ogólnego zastosowania, ale też językiem najbardziej uniwersalnym. Dzięki wbudowanemu w Mono toolkitowi Xwt można bowiem pisać i utrzymywać jeden kod, z którego powstaną aplikacje równie dobrze działające na Windows (przez Windows Presentation Foundation), co i na Maku (Cocoa) czy Linuksie (Gtk).

r   e   k   l   a   m   a

Czy jednak na pewno korzystanie z darów Microsoftu jest tak bezpieczne? Ciekawą analizę warunków, na których Microsoft udostępnił swój kod, przeprowadzili członkowie niemieckiego IfrOSS (Institut für Rechtsfragen der Freien und Open Source Software), Liu Qihao i Ciaran O'Riordan. Nie zaufali obietnicom firmy z Redmond, lecz pamiętając o historii ataków patentowych zwróconych przeciwko wolnemu oprogramowaniu zdecydowali się przyjrzeć szczegółom, w których wiadomo, co może tkwić.

Nam obietnice nie wystarczają, wam muszą wystarczyć

Formalnie uwolniony kod .NET wydany został na licencji MIT, jednej z najbardziej liberalnych licencji otwartego oprogramowania. Towarzyszy mu jednak oddzielna „obietnica patentowa”, zawarta w pliku PATENTS.TXT opublikowanym w repozytorium na GitHubie, wprowadzająca istotne ograniczenia. Najważniejszym z nich jest to, że gwarancja bezpieczeństwa patentowego dana jest wyłącznie na kod źródłowy będący albo częścią .NET Runtime, albo częścią aplikacji zaprojektowanej pod kątem uruchamiania na .NET Runtime. Jeśli więc ktoś przeniesie aplikację z .NET np. na Javę czy Pythona, obietnica automatycznie przestaje obowiązywać.

Co więcej, obietnica jest ważna jedynie dla zgodnych implementacji, zawierających wszystkie wymagane w standardzie komponenty. Jeśli więc ktoś zrobi sobie odchudzoną wersję środowiska .NET, to i w tym wypadku obietnica przestaje obowiązywać. Liu i O'Riordan zauważają, że to samo dotyczy wszystkich prób stworzenia zgodnych implementacji, które będą miały po drodze przecież wiele publicznie dostępnych wersji beta, jeszcze przecież niekompletnych – a więc i w tym wypadku obietnica by nieobowiązywała.

Samo zaś włączenie się w prace nad otwartym kodem, wykorzystującym źródła Microsoftu wiąże się z obowiązkiem podpisania umowy .NET Contributor Licensing Agreement, na mocy której Fundacja .NET otrzymuje wszystkie niezbędne prawa do tworzenia wolnych i niewolnych odmian kodu, a co gorsze, przenosi na twórcę spore ryzyko prawne, związane z odpowiedzialnością za własność intelektualną i prawem do otrzymania zgody na wykorzystanie patentów.

Największe wątpliwości budzi jednak samo istnienie tej obietnicy patentowej. W licencji MIT nie ma ani słowa o zgodzie na dodatkowych warunkach praw autorskich, mówi się wyłącznie o bezwarunkowej zgodzie. Programista sięgający po kod Microsoftu już otrzymał na mocy licencji MIT zgodę na jego wykorzystanie i modyfikowanie, nie powinien potrzebować dodatkowej obietnicy, że nie zostanie pozwany za takie działania. Członkowie IfrOSS zauważają, że sam Microsoft, gdy chce uzyskać gwarancje, że nie zostanie oskarżony o naruszenie patentów, nigdy na żadne „obietnice” się nie zgadza – żąda udzielenia bezwarunkowych licencji. W tej sytuacji udostępniony przez Microsoft kod po prostu nie spełnia definicji Open Source, mimo że do tej właśnie definicji Microsoft bezpośrednio linkuje, wielokrotnie podkreślając, że udostępniony kod jest wydany na warunkach Open Source.

W tej sytuacji korzystanie w swoich projektach zarówno z .NET Core jak i nowego Mono może wiązać się z ryzykiem prawnym, zależnym od systemu prawnego w ramach którego działa programista, wystarczającego jednak, by postawić pod znakiem zapytania wartość korzystania ze świetnego przecież C# na otwartych platformach software'owych.

© dobreprogramy
r   e   k   l   a   m   a
r   e   k   l   a   m   a

Komentarze

r   e   k   l   a   m   a
r   e   k   l   a   m   a
Czy wiesz, że używamy cookies (ciasteczek)? Dowiedz się więcej o celu ich używania i zmianach ustawień.
Korzystając ze strony i asystenta pobierania wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.