Otwarty kod w firmie: jak wybrać licencję i uniknąć problemów prawnych

0
113
3.6/5 - (10 votes)

Nawigacja:

Po co firmie otwarty kod i dlaczego licencja ma znaczenie

Motywacje biznesowe: korzyści z otwartego kodu w organizacji

Firmy coraz częściej korzystają z otwartego kodu i same go udostępniają, ale motywacje rzadko są idealistyczne. Najczęściej chodzi o bardzo konkretne cele biznesowe. Dobrze dobrana licencja open source pomaga te cele zrealizować, a źle dobrana – potrafi je skutecznie zablokować.

Po pierwsze, otwarty kod to oszczędność czasu i pieniędzy. Zamiast budować wszystko od zera, zespół IT sięga po gotowe biblioteki, frameworki i narzędzia. Jeżeli jednak zignoruje licencje open source, może się okazać, że korzysta z komponentu, który wymaga ujawnienia własnego kodu lub przekazania części praw. To nie jest tylko problem teoretyczny – w praktyce zdarzają się sytuacje, w których klient korporacyjny odmawia wdrożenia, dopóki dostawca nie oczyści sytuacji licencyjnej.

Po drugie, udostępnianie fragmentów kodu jako open source buduje reputację pracodawcy i marki technologicznej. Kandydaci widzą, że firma „gra w otwartej lidze” i że projekt ma realny wpływ na społeczność. Daje to przewagę rekrutacyjną, szczególnie wśród doświadczonych programistów. Konkretny wybór licencji decyduje jednak o tym, czy inni będą mogli swobodnie korzystać z projektu, czy np. powstałe forki będą musiały zachować otwartość.

Po trzecie, otwarty kod pozwala wpływać na standardy branżowe. Gdy firma publikuje komponent, który staje się de facto standardem, zyskuje wpływ na kierunek jego rozwoju. Licencja decyduje, czy inne podmioty będą mogły wziąć rozwiązanie, zamknąć je i zmonopolizować, czy też modyfikacje muszą wracać do społeczności na podobnych zasadach.

„Kod jest na GitHubie” a „kod jest na licencji X” – zasadnicza różnica

Wiele zespołów traktuje GitHuba jak katalog z „kodem, który można wziąć”. Tymczasem sam fakt, że kod jest publicznie dostępny, nie oznacza, że wolno go dowolnie kopiować, modyfikować i wykorzystywać komercyjnie. Bez wyraźnej licencji obowiązuje pełna ochrona prawa autorskiego, a użytkownik ma tylko te uprawnienia, które jasno wyraził autor (albo wynikałyby z przepisów o dozwolonym użytku – w praktyce bardzo ograniczone w kontekście biznesowym).

Dlatego różnica między „kod jest dostępny na GitHubie” a „kod jest na licencji MIT/Apache/GPL” jest kluczowa. W pierwszym scenariuszu tak naprawdę nie wiadomo, co wolno, a czego nie. W drugim – licencja jest swoistą umową, która reguluje uprawnienia i obowiązki. Firma korzystająca z komponentu bez licencji lub wbrew warunkom licencji może naruszać prawa autorskie, co stanowi realne ryzyko prawne.

Co do zasady trzeba przyjąć, że brak licencji oznacza brak zgody na komercyjne wykorzystanie. Zdarza się, że autor deklaruje coś w README, ale bez formalnej licencji to za mało, szczególnie w większych organizacjach. Z perspektywy działu prawnego czy compliance takie repozytorium jest „czerwonym światłem”.

Brak licencji i niejasne zgody – jak rodzi się problem

Brak licencji to nie tylko teoretyczny spór o interpretację prawa autorskiego. W praktyce przekłada się na konkretne sytuacje problematyczne:

  • klient dużej firmy pyta o listę użytych komponentów open source i licencje – zespół nie potrafi odpowiedzieć, bo nikt tego nie śledził;
  • inwestor podczas due diligence wykrywa zależność od biblioteki bez licencji i żąda jej usunięcia albo zastąpienia, co opóźnia transakcję;
  • pracownik wypuszcza prywatnie bibliotekę, ale używa kodu powstałego w godzinach pracy – powstaje spór o to, kto ma prawa i jaką licencję wolno zastosować.

Brak licencji lub jej niejasność mają jeszcze jeden skutek: trudno egzekwować cokolwiek od użytkowników kodu. Jeśli firma chciałaby, aby modyfikacje były odsyłane z powrotem (efekt copyleft), musi to jasno zapisać w licencji. Bez tego inni po prostu wykorzystają kod i nie będą mieli obowiązku dzielenia się poprawkami.

Licencja a bezpieczeństwo i wymagania klientów

Coraz częściej klienci korporacyjni wprowadzają w umowach obowiązek ujawnienia składników open source i potwierdzenia, że dostawca działa zgodnie z ich licencjami. Pojawiają się zapisy o open source compliance, zobowiązania do przekazywania listy komponentów (np. SBOM – Software Bill of Materials) i zapewnienia, że żadne licencje „wirusowe” nie obejmą kodu klienta.

Licencja wpływa też na politykę bezpieczeństwa. Niektóre organizacje mają wewnętrzne ograniczenia, np. zakaz stosowania GPL w oprogramowaniu dystrybuowanym do klientów, bo boją się ryzyka ujawnienia kodu własnościowego. Inne preferują licencje z klauzulą patentową (Apache 2.0), aby zmniejszyć ryzyko sporów patentowych. W efekcie to, jaką licencję wybierze firma dla własnego projektu, zadecyduje, czy projekt będzie akceptowalny dla dużych klientów.

Prawnik i klient podpisują formalne dokumenty przy biurku w biurze
Źródło: Pexels | Autor: www.kaboompics.com

Podstawowe pojęcia: co to w ogóle znaczy „open source”

Open source, darmowe oprogramowanie i freeware – trzy różne światy

W języku potocznym „darmowe” często wrzuca się do jednego worka: „free software”, „open source”, „freeware”. Dla firmy to niebezpieczne uproszczenie. Podstawowe rozróżnienie wygląda następująco:

  • Open source – kod jest dostępny, a licencja daje określone prawa do używania, modyfikowania i dalszego rozpowszechniania. Warunki są zwykle zdefiniowane przez znane licencje (MIT, Apache, GPL itp.).
  • Darmowe oprogramowanie (free software) – w sensie ruchu FSF chodzi o wolność, a nie o cenę. To pojęcie ideowe, ale w praktyce często łączy się z licencjami copyleft (np. GPL).
  • Freeware – oprogramowanie, które można używać bezpłatnie, ale zwykle bez prawa wglądu w kod, modyfikacji czy komercyjnej dystrybucji.

To, że narzędzie jest „za darmo”, nie oznacza, że jest open source. Z perspektywy firmy to zasadnicza różnica: do projektu open source można co do zasady wchodzić głębiej (modyfikować, integrować, forknąć), podczas gdy freeware zwykle pozwala tylko na użycie zgodnie z regulaminem producenta.

Open Source Definition – skrót najważniejszych kryteriów

Open Source Initiative (OSI) stworzyła Open Source Definition – zbiór kryteriów, które musi spełniać licencja, aby można było mówić o open source. W praktyce dla firmy kluczowe są m.in. następujące elementy:

  • prawo do używania oprogramowania w dowolnym celu (w tym komercyjnie);
  • prawo do analizy, modyfikacji i tworzenia utworów zależnych (wgląd w kod źródłowy jest konieczny);
  • prawo do redystrybucji oryginalnego lub zmodyfikowanego oprogramowania, często z pewnymi warunkami (np. zachowanie informacji o autorach, udostępnienie zmian na tej samej licencji).

Nie każda „darmowa licencja” jest zgodna z Open Source Definition. Zdarzają się umowy, które zakazują komercyjnego użycia lub ograniczają grupę użytkowników (np. tylko do celów edukacyjnych). Dla poważnego wykorzystania biznesowego bezpieczniej jest trzymać się licencji powszechnie rozpoznawanych jako open source w sensie OSI.

Licencja jako umowa – co daje, a czego nie daje

Licencja open source pełni funkcję umowy licencyjnej. Autor (lub podmiot praw do kodu) udziela użytkownikowi określonych uprawnień: może np. kopiować, modyfikować i rozpowszechniać program, o ile spełni konkretne warunki. Jeżeli tych warunków nie spełnia, korzysta bezprawnie, jakby licencji nie było.

Typowe uprawnienia w licencjach open source to:

  • prawo do uruchamiania oprogramowania na dowolnej liczbie maszyn;
  • prawo do modyfikowania kodu źródłowego;
  • prawo do redystrybucji takiego samego lub zmodyfikowanego programu, z zachowaniem warunków licencji.

Jednocześnie licencje open source zwykle zawierają szerokie wyłączenia odpowiedzialności („AS IS”, brak gwarancji) oraz klauzule o braku odpowiedzialności za szkody. Z perspektywy firmy korzystającej z open source oznacza to, że trudno jest dochodzić roszczeń za błędy w zewnętrznym kodzie – stąd znaczenie wewnętrznych procedur bezpieczeństwa i testów.

Prawa autorskie, praca pracownicza i znaczenie dla firm

Aby móc rozsądnie zarządzać licencjami open source w firmie, trzeba rozumieć, kto jest właścicielem praw do kodu. Co do zasady, w polskim prawie autorskim rozróżnia się prawa osobiste (niezbywalne, np. prawo do autorstwa) i prawa majątkowe (zbywalne, decydują o komercyjnym wykorzystaniu).

W kontekście firm kluczowa jest zasada, że utwory pracownicze zazwyczaj przechodzą na pracodawcę, jeżeli powstają w ramach obowiązków służbowych. Oznacza to, że to nie programista zatrudniony na etacie decyduje samodzielnie o licencji dla kodu pisanego w pracy. Taką decyzję powinna podjąć firma jako posiadacz majątkowych praw autorskich.

Ta kwestia zaczyna być istotna, gdy:

  • pracownik chce „wypuścić” bibliotekę powstałą w pracy na GitHubie pod własnym kontem;
  • firma chce połączyć kod powstały prywatnie u pracownika z kodem firmowym;
  • kontrybucje pracowników są wysyłane do zewnętrznych projektów open source (czy robią to prywatnie, czy w imieniu pracodawcy).

Bez jasnych zasad wewnętrznych pojawiają się spory: czy wolno było opublikować dany fragment kodu, kto decyduje o licencji, czy przypadkiem nie „wyniesiono” praw firmy do publicznego repozytorium.

Główne typy licencji: permisywne, copyleft, „wirusowe” – o co w tym chodzi

Licencje permisywne: MIT, BSD, Apache 2.0

Licencje permisywne to te, które dają szeroką swobodę wykorzystania kodu, przy minimalnych obowiązkach. Przykładowe licencje z tej grupy to MIT, BSD (2- i 3-klauzulowe) oraz Apache 2.0. Wspólnym mianownikiem jest to, że firma może:

  • wykorzystać kod w zamkniętym produkcie;
  • zmodyfikować go i nie ujawniać zmian (chyba że zdecyduje inaczej biznesowo);
  • sprzedawać rozwiązanie bez udostępniania kodu źródłowego użytkownikom końcowym.

Obowiązki zwykle sprowadzają się do zachowania informacji o autorach (copyright notice), dołączenia tekstu licencji do dystrybucji oraz pozostawienia zastrzeżenia braku odpowiedzialności. W przypadku Apache 2.0 dochodzi jeszcze kwestia licencji patentowej i zrzeczenia się pewnych roszczeń patentowych przez kontrybutorów.

Z perspektywy działu prawnego licencje permisywne są zwykle najmniej kłopotliwe i najchętniej widziane w środowisku korporacyjnym. Łatwo je „wkomponować” w produkt komercyjny bez ryzyka, że pojawi się obowiązek otwierania kodu samego produktu.

Copyleft: „słabe” i „silne” – mechanizm dziedziczenia warunków

Licencje copyleft (np. GNU GPL, LGPL, MPL) opierają się na idei, że modyfikacje i prace zależne powinny pozostać wolne w podobnym stopniu jak oryginał. Osiąga się to przez warunek, że redystrybucja takiego oprogramowania lub utworów zależnych musi odbywać się na tej samej lub kompatybilnej licencji.

W praktyce wyróżnia się zwykle:

  • „Silne” copyleft – jak GPL, która obejmuje całe pochodne dzieło, jeżeli uznać je za utwór zależny od kodu GPL (to właśnie rodzi obawy „wirusowości”).
  • „Słabe” copyleft – jak LGPL, które pozwala łączyć bibliotekę z zamkniętym kodem, pod warunkiem że sama biblioteka i jej modyfikacje pozostaną na LGPL.
  • Copyleft ograniczone do pliku lub modułu – jak MPL 2.0, która obejmuje zmodyfikowane pliki objęte MPL, ale nie rozciąga się automatycznie na cały projekt.

Dla biznesu kluczowe jest zrozumienie, że copyleft nie zabrania komercyjnego użycia. Zabrania natomiast, co do zasady, „zamknięcia” kodu pochodnego przy jego dystrybucji. Można sprzedawać produkt na GPL, ale trzeba zapewnić dostęp do kodu źródłowego i wolności dalej definiowanych w licencji.

„Wirusowe” działanie licencji – skąd się bierze ten termin

Określenie „licencje wirusowe” jest skrótem myślowym, który bywa mylący. Chodzi o sytuacje, gdy wykorzystanie kodu na GPL w większym projekcie prowadzi do tego, że całość lub większość projektu musi być udostępniona na GPL przy dystrybucji. Nie istnieje jednak automat „zarażania”. Zawsze trzeba przeanalizować:

  • czy doszło do stworzenia utworu zależnego (np. przez statyczne linkowanie, kopiowanie kodu, głęboką integrację);
  • Granice „zarażania” – kilka typowych scenariuszy technicznych

    Aby ocenić, czy warunki licencji copyleft rozciągają się na resztę projektu, trzeba zderzyć język prawny z konkretami technicznymi. Najczęstsze scenariusze w firmach to:

  • statyczne linkowanie – biblioteka na GPL jest „wkompilowana” do binarki. W wielu interpretacjach prowadzi to do powstania utworu zależnego, a więc „pociąga” GPL na całość dystrybuowanego programu;
  • dynamiczne linkowanie – kod aplikacji ładuje bibliotekę w czasie uruchomienia (DLL, .so). Tu stanowiska są mniej jednoznaczne; niektóre projekty przyjmują, że to wciąż utwór zależny, inne – że to odrębne dzieła połączone interfejsem;
  • komunikacja przez API / sieć – aplikacja łączy się z usługą lub serwerem na GPL przez HTTP, gRPC czy inny protokół. Co do zasady postrzegane jest to raczej jako odrębne utwory współdziałające, a nie utwór zależny;
  • kopiowanie fragmentów kodu – przeniesienie funkcji lub modułu „na żywca” do własnego repozytorium. To zazwyczaj klasyczny utwór zależny i silne copyleft będzie miało pełne zastosowanie.

Dla zarządów i product ownerów istotne jest, że ocena tych scenariuszy bywa sporna. Softwarowy „refactoring” po kilku latach, gdy nagle odkrywa się bibliotekę GPL głęboko w sercu systemu, potrafi kosztować znacznie więcej niż kilka konsultacji prawnych i uporządkowanie polityk na etapie projektu.

Zbliżenie stołu konferencyjnego z dokumentami podpisywanymi przez zespół
Źródło: Pexels | Autor: Oleg Cervi

Jak przełożyć typ licencji na praktykę biznesową

Mapa ryzyka: od „zielonych” do „czerwonych” licencji

Większość firm, które systemowo podchodzą do otwartego kodu, buduje prostą „mapę ryzyka” licencji. Nie chodzi o formalną klasyfikację OSI, tylko o praktyczny podział pod kątem wpływu na model biznesowy:

  • „Zielona strefa” – licencje permisywne (MIT, BSD, Apache 2.0), niektóre licencje o słabym copyleft (np. MPL 2.0);
  • „Żółta strefa” – licencje copyleft o ograniczonym zakresie (LGPL, MPL przy określonych typach integracji), licencje mniej znane, ale zbliżone do popularnych wzorców;
  • „Czerwona strefa” – silne copyleft (GPL, AGPL), licencje nietypowe lub „samodzielnie napisane” przez autora, a także wszelkie klauzule zakazujące komercyjnego użycia.

Taka mapa nie jest „prawem natury”, tylko decyzją biznesową. W jednej firmie GPL może trafić do „czerwonej strefy” (brak zgody na jej stosowanie w produktach), w innej – będzie akceptowana w konkretnych scenariuszach, np. wyłącznie w narzędziach developerskich używanych wewnętrznie.

Licencje a kanały dystrybucji: SaaS, on‑premise, open core

To, czy kod jest dystrybuowany do klienta, czy tylko działa na serwerach dostawcy, ma fundamentalne znaczenie dla licencji copyleft. Kilka schematów powtarza się szczególnie często:

  • Model SaaS (usługa w chmurze) – użytkownik łączy się przez przeglądarkę lub API, ale nie dostaje kopii programu. W takim modelu klasyczna GPL najczęściej nie generuje obowiązku udostępnienia kodu użytkownikom, bo nie dochodzi do „rozpowszechniania” programu w sensie praw autorskich. Inaczej wygląda to przy AGPL, która rozszerza obowiązek udostępniania kodu również na dostęp przez sieć.
  • On‑premise / instalacja u klienta – klient otrzymuje binarkę lub nawet kod źródłowy do wdrożenia u siebie. W tym scenariuszu warunki GPL czy LGPL uruchamiają się znacznie częściej, bo mamy klasyczną dystrybucję oprogramowania.
  • Open core – część produktu jest open source (zwykle na licencji przyjaznej biznesowi, jak Apache 2.0), a część pozostaje zamknięta, jako płatne moduły. W takim modelu wprowadzenie silnego copyleft do „rdzenia” może mocno skomplikować ofertę komercyjnych rozszerzeń.

Zmiana kanału dystrybucji – np. z rozwiązania instalowanego lokalnie na SaaS – potrafi „wyłączyć” część ryzyk związanych z copyleft, ale jednocześnie otwiera inne pola (np. zgodność z RODO, lokalizacją danych). Zespół prawny i produktowy powinny więc omawiać licencje równolegle z modelem dostarczania rozwiązania.

Wewnętrzne użycie vs. produkt komercyjny

Korzystanie z open source „do środka” firmy to zupełnie inna sytuacja niż włączanie go do produktu sprzedawanego klientom. Zwykle rozróżnia się trzy poziomy:

  • narzędzia developerskie (kompilatory, IDE, testery) – używane wyłącznie wewnętrznie; nawet silne copyleft nie stanowi tu co do zasady problemu, bo nie ma dystrybucji kodu;
  • komponenty serwerowe (np. baza danych na GPL, framework webowy) – używane na serwerach firmy, bez dystrybucji do klienta; problem pojawia się dopiero przy udostępnianiu binarek lub obrazów, które je zawierają;
  • elementy wbudowane w produkt – biblioteki i fragmenty kodu, które “jadą” razem z produktem do klienta (SDK, aplikacje desktopowe, rozwiązania embedded). Tu typ licencji i sposób integracji są krytyczne.

Wielu napięć da się uniknąć prostą zasadą: to, co jest tylko wewnętrznym narzędziem, może być bardziej „ryzykowne” licencyjnie (GPL, AGPL), natomiast wszystko, co trafia do klientów, powinno przechodzić ostrzejsze sito i opierać się głównie na licencjach z „zielonej” i „żółtej” strefy.

Polityka „no GPL” – kiedy ma sens, a kiedy szkodzi

Spora część korporacji przyjmuje na poziomie globalnym prosty zakaz: „nie używamy GPL w produktach”. Z punktu widzenia zarządzania ryzykiem to zrozumiałe – łatwo zapanować nad procesem, nie trzeba analizować każdego przypadku. W praktyce takie podejście:

  • ułatwia compliance – mniej wyjątków, mniej analiz, prostszy audyt;
  • ogranicza wybór technologii – część dojrzałych i popularnych rozwiązań (np. niektóre systemy zarządzania treścią czy bazy danych) jest od razu poza zasięgiem;
  • sprzyja „partyzantce” – deweloperzy, którzy potrzebują konkretnego narzędzia na GPL, czasem instalują je mimo zakazu, licząc, że nikt nie zauważy.

Bardziej elastyczny wariant polega na zróżnicowaniu zasad: np. brak GPL w komponentach dystrybuowanych klientom, ale dopuszczalność GPL w narzędziach buildowych, wewnętrznych skryptach czy rozwiązaniach administratorskich. Warunkiem jest jednak dobra widoczność tych komponentów (np. przez skanery SBOM) i przeszkolenie zespołów.

Zespół specjalistów omawia dokumenty przy biurku w biurze
Źródło: Pexels | Autor: www.kaboompics.com

Najważniejsze licencje w praktyce firmowej – przegląd z komentarzem

MIT – minimum obowiązków, maksimum swobody

Licencja MIT jest jednym z najprostszych i najchętniej stosowanych wzorców. W skrócie mówi: „możesz zrobić prawie wszystko, byle zachować informację o autorze i zastrzeżenie braku odpowiedzialności”. Z punktu widzenia firmy:

  • kod na MIT można wbudować w produkt zamknięty, bez obowiązku publikowania źródeł;
  • w dystrybucji trzeba dołączyć tekst licencji i informację o autorach, najczęściej w pliku NOTICE, ABOUT, w dokumentacji lub sekcji „O programie”;
  • brak jest klauzul patentowych – w projektach, gdzie patenty odgrywają istotną rolę, sięga się raczej po Apache 2.0.

MIT dominuje w świecie frontendowym (JavaScript, biblioteki UI), w mniejszych narzędziach linuksowych oraz w wielu bibliotekach pisanych przez indywidualnych programistów. Z perspektywy compliance sprawia najmniej problemów – kluczowe jest tylko, aby informacje o autorach nie „gubiły się” przy budowaniu pakietów instalacyjnych czy kontenerów.

BSD 2- i 3-klauzulowa – podobnie do MIT, z drobnymi różnicami

Licencje BSD (szczególnie w wersji 2- i 3-klauzulowej) są w praktyce zbliżone do MIT: dają szeroką swobodę wykorzystania kodu w rozwiązaniach zamkniętych. Różnica sprowadza się głównie do brzmienia klauzul i ich liczby. Historycznie bywało tak, że licencja BSD wymagała zamieszczania informacji o autorach także w materiałach re