Licencjonowanie otwartego oprogramowania

Archived under Articles on January 14th, 2005

Praca projektowa z przedmiotu Ochrona prawna systemów komputerowych, napisana w czasie studiów na Politechnice Rzeszowskiej.

Co najmniej od kilkunastu lat w społeczności programistów sporo mówi się o tzw. wolnym lub otwartym oprogramowaniu. Obecnie terminy te są powszechnie używane, ale często pojawiają się pewne wątpliwości co do ich rzeczywistego znaczenia. W poniższej pracy przedstawiono najpopularniejsze sposoby licencjonowania tego rodzaju oprogramowania oraz różnice między nimi.

Freeware i shareware

Idea, by za darmo udostępniać oprogramowanie, nie jest nowa. Pojedynczy programiści, a nawet firmy z branży nierzadko pozwalali na korzystanie ze swoich dzieł bez pobierania opłat. Często robili to celu promocji swojej marki, innych produktów nią sygnowanych bądź z pobudek altruistycznych.

Terminem freeware określa się programy, które zostały udostępnione bez pobierania opłat, ale z pewnymi zastrzeżeniami. Przede wszystkim chronione są prawa autora do danej aplikacji. Programy tego rodzaju są na ogół rozpowszechniane bez kodu źródłowego, zatem nie jest możliwa ich późniejsza modyfikacja. Autorzy często dołączają umowy licencyjne, które w nakładają pewne ograniczenia na sposób rozprowadzania i zastosowania ich dzieł. Najczęściej dozwolone jest kopiowanie i rozpowszechnianie bez ograniczeń, ale z wyłączeniem wykorzystania w celach komercyjnych. Darmowego oprogramowania (freeware) nie należy mylić z wolnym oprogramowaniem (free software), które zostanie omówione w dalszej części pracy.

Nierzadko autorzy udostępniają nieodpłatne wersje swoich aplikacji po to, aby użytkownicy mogli się jedynie z nimi zapoznać. Najczęściej te programy można wykorzystywać tylko przez określony czas, zaś po jego upływie należy zapłacić za dalsze użytkowanie. Ta kategoria oprogramowania jest nazywana shareware.

Wolne oprogramowanie

Termin wolne oprogramowanie (free software) został stworzony przez Richarda Stallmana. Stallman nie mógł pogodzić się z faktem, że w latach 70. dwudziestego wieku firmy nagminnie zaczęły rozpowszechniać oprogramowanie, którego kod źródłowy nie był dostępny. Według niego użytkownicy powinni mieć prawo do samodzielnego rozwijania i poprawiania już istniejących aplikacji.

W 1985 roku założył on Free Software Foundation (FSF), organizację, która działa na rzecz rozwoju wolnego oprogramowania. Według definicji FSF takie oprogramowanie musi gwarantować cztery swobody:

  1. uruchamiania programu w dowolnym celu;
  2. analizy działania programu i dostosowywania go do swoich potrzeb, z czym związana jest dostępność kodu źródłowego;
  3. rozprowadzania kopii programu;
  4. ulepszania programu i rozpowszechniania własnych modyfikacji.

Najprostszą odmianą wolnego oprogramowania jest nazywana public domain. Tego rodzaju kod może być wykorzystany bez jakichkolwiek ograniczeń i nie chroni w żaden sposób praw autorskich jego twórcy.

Richard Stallman jest również twórcą pojęcia copyleft. Mianem tym określa się uczynienie oprogramowania wolnym i zapewnienie, by wszelkie modyfikacje również były wolne. Oprogramowanie public domain może zostać zawłaszczone przez jakąś osobę lub przedsiębiorstwo i przestanie być wolne. Natomiast zgodnie z regułą copyleft raz udostępniony kod pozostaje już wolny.

Aby ująć ogólnie sformułowaną zasadę copyleft w bardziej precyzyjnej formie, FSF opracowało GNU General Public License (GNU GPL bądź po prostu GPL). Oto niektóre postanowienia tej licencji:

  • Program może być rozpowszechniany bez ograniczeń, w tym również sprzedawany, o ile jest udostępniany także w formie umożliwiającej dowolną modyfikację (a zatem nie tylko w postaci binarnej, ale także źródłowej) i na zasadach GPL.
  • Program może być modyfikowany w całości lub częściowo, a autor zmian musi zamieścić stosowną informację na temat tych modyfikacji.
  • Prace wykorzystujące przynajmniej fragmenty programów rozpowszechnianych na licencji GNU GPL również muszą być objęte tą licencją.
  • Oprogramowanie objęte GPL jest licencjonowane bezpłatnie i jako takie nie podlega gwarancji.

Licencja GNU GPL wywołała sporo kontrowersji w środowisku programistów. Główną tego przyczyną jest wspomniana konieczność udostępnienia na zasadach GPL wszelkich programów wykorzystujących jakikolwiek fragmenty kodu objęte tą licencją. Innymi słowy, jeśli programista stworzy aplikację, która wykorzystuje komponent objęty licencją GNU GPL, to musi upublicznić cały kod swojego programu. Z tego powodu wiele firm zajmujących się produkcją oprogramowania woli zrezygnować z używania jakiegokolwiek kodu opartego na tej licencji.

Istnieje też mniej restrykcyjna odmiana GPL o nazwie Lesser GPL (LGPL), która wcześniej była znana jako Library GPL (GPL dla bibliotek). Pozwala ona na wykorzystanie bibliotek nią objętych również w programach, których źródła nie zostaną w całości upublicznione. Sama biblioteka i jej modyfikacje powinny być dostępne także w formie kodu źródłowego, ale pozostałe fragmenty aplikacji, które korzystają z biblioteki, nie muszą spełniać tego wymagania.

FSF za swój cel uważa nie tyle samo zwiększenie popularności kodu tworzonego w zgodzie z GPL, ale raczej upowszechnienie zasady swobodnego modyfikowania i rozpowszechniania oprogramowania. Tego rodzaju podejście nie zyskało powszechnej akceptacji, szczególnie wśród przedsiębiorców.

Otwarte oprogramowanie

Wkrótce pojawiły się kolejne licencje, które miały ułatwić wykorzystanie kodu przez programistów piszących zamknięte aplikacje. W ten sposób zrodziła się idea otwartego oprogramowania (open source software). Zgodnie z nią autorzy programów muszą udostępnić ich postać źródłową. Kod tego rodzaju można jednak wykorzystać w zamkniętych aplikacjach bez konieczności publikowania pozostałych (nieotwartych) fragmentów kodu. Można więc powiedzieć, że otwarte oprogramowanie jest szerszym pojęciem niż wolne oprogramowanie, a GPL jest jedną z licencji mieszczących się w ramach open Source, ale dodatkowo nakłada na programistę obowiązek dzielenia się całym kodem, o ile tylko wykorzystuje się w aplikacji fragmenty objęte tą licencją.

Pierwotna wersja licencji BSD zawierała tzw. klauzulę ogłoszeniową, która czyniła licencję niezgodną z GPL. Klauzula ta nakładała na podmioty reklamujące produkty z fragmentami licencjonowanymi obowiązek zamieszczenia w tych ogłoszeniach wzmianki, iż fragmenty te są autorstwa pracowników Uniwersytetu Berkley (twórców BSD). W 1999 roku ten punkt umowy został usunięty. Aby uniknąć wątpliwości, o którą wersję chodzi, FSF zaleca korzystanie z innej licencji, X11. Jest ona niemal identyczna z poprawioną licencją BSD.

Powstało sporo licencji open source, które były pozbawione tego kontrowersyjnego warunku obecnego w GPL. Jedną z nich jest licencja BSD. Na tej licencji wydawany jest między innymi system operacyjny OpenBSD. To licencja zgodna z GPL (tzn. w jednym programie mogą występować fragmenty objęte licencjami BSD i GPL), ale nie jest licencją copyleft. Pozwala ona na wykorzystanie fragmentów nią objętych w zamkniętym oprogramowaniu. Nakłada jedynie na programistów obowiązek zachowania informacji o prawach autorskich i pierwotnym autorze kodu. Kod licencjonowany w ten sposób jest dość często wykorzystywany przez duże firmy produkujące oprogramowanie. Np. system operacyjny OS X firmy Apple opiera się na jądrze FreeBSD, co stało się możliwe dzięki zasadom licencjonowania BSD.

Inna popularna licencja tego typu to Apache Software License (ASL) w wersji 2.0 (używanie wersji 1.0 i 1.1 nie jest już zalecane). Została ona opracowana przez Apache Software Foundation (ASF), fundację znaną między innymi z prac nad popularnym serwerem HTTP. ASL to licencja zbliżona do BSD, ale niezgodna z GPL. FSF i ASF pracują obecnie nad wyeliminowaniem pewnych rozbieżności dotyczących kwestii patentowych, dzięki czemu możliwe będzie używanie w jednej aplikacji kodu objętego tak GPL, jak i ASL.

Firma opracowała wówczas także tzw. Netscape Public License (NPL). Licencja ta składała się z MPL oraz dodatkowej klauzuli, która dawała firmie Netscape prawo do wykorzystania bez konieczności późniejszego udostępnienia (przez okres dwóch lat) otwartego kodu w zamkniętych produktach firmy. Obecnie Netscape już nie istnieje (jej znak towarowy jest własnością firmy AOL).

Kolejną ważną licencją open source, która zyskuje sobie coraz większą popularność, jest Mozilla Public License (MPL). Została ona opracowana w związku z zapoczątkowaniem przez firmę Netscape prac nad nową przeglądarką internetową o powszechnie dostępnym kodzie źródłowym. MPL jest bardziej szczegółowa niż licencja BSD, różni się też od GPL. Pozwala na wykorzystanie kodu nią objętego w zamkniętych, komercyjnych aplikacjach, pod warunkiem, że zmodyfikowane fragmenty będą udostępnione w postaci kodu źródłowego. Nie ma jednak obowiązku udostępniania źródeł tych części aplikacji, które nie są modyfikacjami fragmentów objętych MPL. Producenci komercyjnego oprogramowania mogą więc wykorzystywać kod objęty tą licencją pod warunkiem, że ten kod i jego modyfikacje zostaną udostępnione. Najnowsza wersja MPL zezwala na używanie innej licencji w odniesieniu do całego kodu programu lub jego części (to tzw. kod wielokrotnie licencjonowany). Dzięki temu możliwe jest zachowanie zgodności z GPL i używanie w jednej aplikacji fragmentów objętych obiema licencjami. FSF określa Mozilla Public License jako „słabą licencję copyleft”.

Poza tu wymienionymi istnieje wiele innych licencji otwartego oprogramowania, w tym inne niż GPL licencje wolnego oprogramowania w ujęciu FSF. Warto wspomnieć również o takich, które dają ograniczony dostęp do kodu źródłowego. Jedną z bardziej znanych jest zaproponowana przez firmę Microsoft licencja Shared Source. Na jej podstawie możliwe jest uzyskanie wglądu w kod źródłowy oprogramowania firmy Microsoft. Możliwe jest korzystanie z niego w celach edukacyjnych, natomiast zabrania się używania go w produktach komercyjnych.

Podsumowanie

W pracy jedynie naszkicowano problem wyboru licencji na oprogramowanie. Nawet jeśli programista zdecyduje się udostępnić wynik swojej pracy, wybór właściwej licencji może nie być łatwy. Autor musi przede wszystkim ustalić, jaki jest cel, dla którego decyduje się na upublicznienie swojego kodu. Jeżeli zależy mu na możliwie szerokim rozpowszechnieniu swojego dzieła, zarówno w programach otwartych, jak i zamkniętych, najbardziej odpowiednia wydaje się licencja Apache lub BSD. Z kolei proponowana przez FSF licencja GPL zapewni, że nie tylko sam kod i jego modyfikacje, ale też fragmenty go wykorzystujące staną się powszechnie dostępne. MPL plasuje się pomiędzy tymi licencjami.

Interesujące jest zapoznanie się ze statystkami używania różnych licencji przez programistów skupionych wokół serwisu SourceForge.net. Jest to największa na świecie strona skupiająca projekty open source. W momencie pisania tej pracy (październik 2004) znajdowało się tam 55563 projektów korzystających z licencji zatwierdzonych przez Open Source Initiative (OSI). Zdecydowana większość (69,5%) projektów udostępniała kod źródłowy na zasadach określonych przez GNU GPL. Druga w kolejności była licencja LGPL (11%), a trzecia licencja BSD (7%). Pozostałe formy licencjonowania były znacznie rzadziej używane.

Modele licencjonowania w projektach Sourceforge.net
Modele licencjonowania w projektach Sourceforge.net

Źródła