Kod z GitHuba w produkcie komercyjnym: licencje i co sprawdzić
MarkdownLicencje liberalne MIT, Apache i BSD, licencje copyleft GPL/AGPL, brak pliku LICENSE oraz sprawdzanie pochodzenia kodu dodanego przez AI.
Przeczytaj cały artykuł
Tworzysz produkt i znajdujesz na GitHubie gotowy fragment: bibliotekę, szablon albo cały projekt, który robi dokładnie to, czego potrzebujesz. Claude sugeruje, żeby dodać go do projektu. I wtedy się zatrzymujesz: kod wydaje się publicznie dostępny, ale czy naprawdę możesz go używać, a tym bardziej sprzedawać produkt, który go zawiera? Czy autor może później wystąpić przeciwko tobie?
Omówię to po kolei: dlaczego otwarty kod na GitHubie sam w sobie nie oznacza pozwolenia, które licencje pozwalają używać kodu i sprzedawać produkt, które warunki copyleft mogą wymagać odpowiadających źródeł objętego utworu oraz jak sprawdzić licencję w minutę przed użyciem kodu. Bez „to zależy od sytuacji”.
Praktyczne informacje o korzystaniu z Ailoot znajdziesz w dokumentacji.
Uwaga
Ten materiał ma charakter informacyjny; nie jestem prawnikiem. Poniżej opisuję warunki popularnych licencji i zasady, podając linki do źródeł pierwotnych, ale sprawdź swoją konkretną sytuację w treści licencji, a jeśli produkt jest duży i komercyjny, skonsultuj się z prawnikiem. Decyzję podejmujesz samodzielnie.
Czy to prawda, że jeśli kod jest na GitHubie, możesz używać go za darmo?
Najważniejsza informacja
Nie. To, że kod można oglądać, nie oznacza, że wolno ci używać go we własnej pracy. Domyślnie każdy kod jest chroniony prawem autorskim i nie wolno go używać, chyba że autor osobno udzielił na to zgody. Samo opublikowanie kodu na GitHubie pozwala innym jedynie przeglądać repozytorium i tworzyć jego kopię w obrębie GitHuba. Prawo do umieszczenia kodu w swoim produkcie wynika z licencji dołączonej przez autora do repozytorium. GitHub sam go nie przyznaje.
Główną pułapką jest tu słowo „otwarty”. Widzisz kod źródłowy, więc wydaje się, że skoro nie został ukryty, wolno ci go używać. To błędne rozumowanie. „Otwarty do odczytu” i „objęty licencją zezwalającą na użycie” to dwie różne rzeczy.
Domyślnie każdy utwór, w tym kod, jest chroniony prawem autorskim od chwili powstania. Dopóki autor wyraźnie nie udzieli zgody, nie wolno ci go używać. Tak opisuje to GitHub na własnej stronie z informacjami o licencjach.
Gdy tworzysz utwór (a kod również jest utworem), domyślnie podlega on wyłącznej ochronie prawnoautorskiej. Jeśli nie dołączysz licencji stanowiącej inaczej, nikt inny nie może kopiować, rozpowszechniać ani modyfikować twojego utworu bez ryzyka roszczenia lub pozwu.
Druga kwestia dotyczy samego GitHuba. Niektórzy uważają, że skoro publikując kod, zaakceptowali zasady GitHuba, mogą też używać zamieszczonego tam kodu innych osób. Zasady mówią dokładnie coś przeciwnego. Upubliczniając repozytorium, autor pozwala innym jedynie je przeglądać i forkować, czyli tworzyć kopię w samym GitHubie. Nie upoważnia to do używania kodu we własnej pracy.
Upubliczniając repozytorium, udzielasz innym użytkownikom niewyłącznej, ogólnoświatowej licencji na używanie, wyświetlanie i powielanie (przez forkowanie) twoich materiałów za pośrednictwem usługi, w ramach funkcji GitHuba. Możesz przyznać dodatkowe prawa, dołączając licencję.
Kluczowe są ostatnie słowa: „w ramach funkcji GitHuba” oraz „dodatkowe prawa przyznaje licencja”. Fork pozostaje w GitHubie. Gdy tylko zechcesz użyć kodu we własnym produkcie, a tym bardziej go sprzedawać, potrzebujesz osobnej licencji od autora. Bez licencji nie masz praw — nawet jeśli kod leży tuż przed tobą i jest widoczny dla wszystkich.
Co decyduje o tym, czy możesz używać cudzego kodu?
Najważniejsza informacja
Decyduje o tym plik licencji w repozytorium, zwykle o nazwie LICENSE lub LICENSE.md. To zgoda autora określająca, co wolno, a czego nie wolno robić z kodem. Licencja odpowiada na trzy pytania: czy możesz użyć kodu w produkcie komercyjnym, czy możesz go modyfikować i czy możesz zachować własny kod źródłowy jako zamknięty. Różne licencje odpowiadają na te pytania inaczej, dlatego najpierw sprawdź ten plik, a dopiero potem otwórz sam kod.
Wszystko sprowadza się do jednego pliku. Prawidłowo utrzymywane repozytorium zawiera plik licencji — zwykle LICENSE, czasem LICENSE.md albo wzmiankę bezpośrednio w README. To zgoda autora określająca warunki, na jakich możesz używać kodu. GitHub zwykle wyświetla nazwę licencji na pasku bocznym strony repozytorium, zanim jeszcze otworzysz sam plik.
Aby nie zgubić się w języku prawnym, warto czytać licencję, zadając sobie trzy pytania dotyczące swojej sytuacji:
- Czy możesz użyć tego kodu w produkcie komercyjnym, za który ludzie płacą?
- Czy możesz modyfikować kod na własne potrzeby?
- Czy musisz później udostępnić kod źródłowy swojego produktu, czy możesz zachować go jako zamknięty?
Prawie wszystkie różnice między licencjami sprowadzają się do różnych odpowiedzi na trzecie pytanie. Na dwa pierwsze popularne licencje open source najczęściej odpowiadają „tak”: używaj, modyfikuj, sprzedawaj. Problem pojawia się wtedy, gdy licencja wymaga udostępnienia własnego kodu. Dalej omówimy główne typy licencji, kierując się tymi trzema pytaniami.
Które licencje pozwalają używać kodu i sprzedawać produkt?
Najważniejsza informacja
Najwygodniejsze w przypadku produktu komercyjnego są licencje liberalne: MIT, Apache 2.0 i BSD. Pozwalają na prawie wszystko: używanie i modyfikowanie kodu, sprzedaż produktu oraz zachowanie własnego kodu źródłowego jako zamkniętego. Jest jeden obowiązek: zachować treść licencji i oznaczenie autorstwa. Apache 2.0 chroni też przed roszczeniami patentowymi i wymaga oznaczania zmodyfikowanych plików. Jeśli cudzy kod ma jedną z tych licencji, możesz bezpiecznie użyć go w produkcie komercyjnym.
Zacznijmy od dobrej wiadomości. Dla osoby tworzącej produkt na sprzedaż najlepszym wyborem jest grupa licencji nazywanych licencjami liberalnymi. Jest ich kilka, ale najczęściej spotyka się trzy: MIT, Apache 2.0 i BSD. Wszystkie trzy odpowiadają „tak” na dwa pierwsze pytania i pozwalają zachować własny kod źródłowy jako zamknięty.
Najpopularniejsza i najprostsza jest MIT. Jej treść mieści się w jednym akapicie.
Niniejszym udziela się bezpłatnie każdej osobie, która uzyska kopię tego oprogramowania, prawa do korzystania z niego bez ograniczeń, w tym do używania, kopiowania, modyfikowania, łączenia, publikowania, rozpowszechniania, udzielania sublicencji i sprzedaży kopii, pod warunkiem dołączenia powyższej informacji o prawach autorskich oraz niniejszej informacji o zezwoleniu do wszystkich kopii.
Prościej mówiąc, MIT pozwala robić z kodem prawie wszystko, w tym sprzedawać produkt i zachować własny kod źródłowy jako zamknięty. Jedynym obowiązkiem jest dołączenie treści licencji i informacji o autorstwie. Na przykład Babel, .NET i Rails są wydawane na licencji MIT, więc niemal na pewno już korzystałeś z kodu objętego tą licencją.
Apache 2.0 działa podobnie, ale dodaje dwa ważne elementy. Po pierwsze, wyraźną ochronę przed roszczeniami patentowymi: autorzy kodu obiecują, że nie będą pozywać cię w związku z patentami dotyczącymi tego kodu. Po drugie, kilka dodatkowych formalnych wymogów dotyczących korzystania.
Możesz powielać i rozpowszechniać kopie utworu lub utworów pochodnych w dowolnym medium, ze zmianami lub bez, pod warunkiem przekazania odbiorcom kopii tej licencji, oznaczenia zmodyfikowanych plików, zachowania informacji o prawach autorskich i patentach oraz dołączenia czytelnej kopii pliku NOTICE, jeśli istnieje.
BSD (w wersjach z 2 i 3 klauzulami) jest zasadniczo podobna do MIT: można używać, modyfikować i sprzedawać, zachowując informację o prawach autorskich. Zestawiłem wszystkie trzy licencje w tabeli, żeby można było szybko porównać różnice.
| Licencja | Sprzedaż produktu | Możliwość zachowania kodu źródłowego jako zamkniętego | Wymagane działania | Ochrona patentowa |
|---|---|---|---|---|
| MIT | tak | tak | zachowanie informacji o prawach autorskich i treści licencji | brak klauzuli |
| Apache 2.0 | tak | tak | informacja o prawach autorskich, plik NOTICE, oznaczenie zmian | tak |
| BSD (2 i 3 klauzule) | tak | tak | zachowanie informacji o prawach autorskich | nie |
Jak zastosować to w praktyce: jeśli przy cudzym kodzie widzisz MIT, Apache 2.0 lub BSD, możesz się nie martwić — możesz użyć go w produkcie komercyjnym, modyfikować go i zachować własny kod źródłowy jako zamknięty. Musisz tylko pamiętać, żeby nie usuwać pliku licencji i oznaczenia autorstwa z wykorzystanej części.
Jak stosuje się obowiązki źródeł GPL i AGPL?
Najważniejsza informacja
GPL i AGPL pozwalają na użycie komercyjne. Obowiązki GPL powstają przy przekazywaniu objętego utworu; samo działanie serwera bez przekazania kopii nie jest tym wyzwalaczem. AGPLv3 dodaje ofertę źródeł dla użytkowników zdalnie korzystających ze zmodyfikowanej wersji. Ustal objęty utwór łączony: niezależne komponenty nie stają się automatycznie jego częścią.
Copyleft zachowuje objęty utwór i pochodne na tej samej licencji przy właściwych warunkach. GPLv3 wymaga zgodności z licencją i odpowiadającymi źródłami przy rozpowszechnianiu kopii źródłowych lub wynikowych objętego utworu lub połączonej pochodnej. Nie obejmuje automatycznie każdego niezależnego programu tego samego produktu lub serwera.
W przykładzie usługi hostowanie biblioteki GPL na własnym serwerze bez dawania kopii użytkownikom samo nie wymaga publikacji całej usługi. Dystrybucja objętej połączonej aplikacji klientom może wyzwalać obowiązki GPL; przed ustaleniem źródeł sprawdź integrację i licencję. Klient przeglądarkowy dostarczany użytkownikom to osobna kwestia dystrybucji.
AGPLv3 dodaje warunek sieci: jeśli modyfikujesz program, a użytkownicy korzystają z tej wersji zdalnie, musi wyraźnie oferować im odpowiadające źródła. To dokładniejsze niż twierdzenie, że samo hostowanie dowolnego AGPL otwiera wszystkie niezależne części usługi.
Dla produktu zamkniętego sprawdź objęty utwór, sposób łączenia, dystrybucję kopii i interakcję sieciową AGPL. Wybierz zgodną liberalną alternatywę lub uzyskaj osobne pozwolenie, jeśli nie spełnisz obowiązków. Użycie komercyjne jest dozwolone; liczy się zgodność z rzeczywistą licencją i integracją.
Co zrobić, jeśli repozytorium w ogóle nie ma pliku licencji?
Najważniejsza informacja
Brak pliku licencji oznacza, że nie możesz używać kodu. Nie oznacza to, że kod jest „darmowy”: przeciwnie, bez licencji pozostaje on objęty pełną ochroną prawnoautorską autora i nie masz prawa go używać, kopiować ani modyfikować. Możliwość przeglądania i forkowania w GitHubie nic tu nie zmienia — nie daje prawa do umieszczenia kodu w produkcie. Jeśli naprawdę go potrzebujesz, jedynym prawidłowym rozwiązaniem jest napisanie do autora z prośbą o zgodę albo poczekanie, aż doda licencję.
Częstym błędem jest założenie, że brak licencji oznacza brak ograniczeń i pozwala swobodnie korzystać z kodu. Jest odwrotnie. Brak licencji nie oznacza zgody; domyślnie oznacza jej brak. Kod bez licencji pozostaje objęty pełną ochroną prawnoautorską autora i nie wolno go używać.
Ponownie obowiązuje zasada, od której zaczęliśmy: kod jest domyślnie chroniony prawem autorskim, a bez wyraźnej zgody nie wolno go kopiować, modyfikować ani rozpowszechniać. Możliwość przeglądania i forkowania go w GitHubie nie znosi tego ograniczenia — nie daje prawa do użycia kodu we własnym produkcie.
Co zrobić w praktyce, jeśli kod nie ma licencji, ale naprawdę go potrzebujesz:
- Napisz do autora. Bezpośrednio w sekcji dyskusji repozytorium albo pocztą elektroniczną zapytaj, czy możesz użyć kodu i na jakich warunkach. Czasem autor po prostu zapomniał dodać licencję i zrobi to, jeśli go o to poprosisz.
- Poszukaj zamiennika. Do niemal każdego zadania istnieje drugie, trzecie i dziesiąte podobne repozytorium — znajdziesz wśród nich takie z prawidłową licencją MIT lub Apache.
- Nie używaj go. Jeśli nie masz zgody i nie ma zamiennika, kod nie należy do ciebie i nie możesz umieścić go w produkcie przeznaczonym na sprzedaż. Pokusa, by pomyśleć „kto się dowie?”, źle się kończy, gdy produkt zaczyna zarabiać i przyciągać uwagę.
Co jeśli Claude sam dodał do projektu cudzy kod?
Najważniejsza informacja
To odrębny przypadek, którego nie należy mylić z bezpośrednim kopiowaniem repozytorium. Gdy sam pobierasz kod z konkretnego repozytorium, musisz przestrzegać jego licencji. Gdy Claude lub inne AI generuje kod w odpowiedzi na twoją prośbę, zazwyczaj tworzy własny tekst dopasowany do zadania, a nie kopię cudzego pliku; wtedy pytanie dotyczy praw do wygenerowanego kodu. Jeśli jednak AI wyraźnie odtworzyło rozpoznawalny fragment cudzego kodu objętego licencją, warunki tej licencji nadal obowiązują. W obu przypadkach warto sprawdzić pochodzenie kodu.
Jest tu jeszcze druga kwestia, którą łatwo pomylić z pierwszą. Gdy wchodzisz do repozytorium i kopiujesz z niego plik, wszystko, co wyżej napisano o licencji, staje się twoim bezpośrednim obowiązkiem. Inaczej jest, gdy Claude pisze kod na twoją prośbę.
W typowych przypadkach AI tworzy własny tekst dopasowany do twojego zadania, a nie kopię cudzego pliku. Wtedy pytanie przenosi się na inny obszar: kto posiada wygenerowany kod i czy można go sprzedać? To osobny, obszerny temat, który omówiłem w artykule o tym, do kogo należy kod napisany przez AI.
Warto jednak pamiętać o wyjątku. Czasami AI generuje rozpoznawalny fragment cudzego kodu niemal słowo w słowo — na przykład całą funkcję ze znanej biblioteki. W takim przypadku nadal obowiązuje licencja biblioteki, bez względu na to, kto fizycznie nacisnął klawisze. Dlatego duże gotowe fragmenty, które Claude przeniósł w całości, należy sprawdzić tak samo, jakbyś skopiował je samodzielnie.
Jak sprawdzić licencję przed użyciem kodu: kolejne kroki
Najważniejsza informacja
Postępuj tak: otwórz stronę repozytorium i sprawdź nazwę licencji na pasku bocznym, otwórz sam plik LICENSE, ustal typ licencji — liberalna (MIT, Apache, BSD) albo copyleft (GPL, AGPL) — porównaj go ze swoją sytuacją i zdecyduj, czy użyć kodu, czy znaleźć zamiennik. Jeśli nie ma żadnej licencji, nie używaj kodu. Całe sprawdzenie zajmuje kilka minut i należy je przeprowadzić, zanim kod trafi do projektu, a nie później.
Zbierzmy wszystko w krótką listę kontrolną, która pomoże sprawdzić dowolny kod innej osoby przed dodaniem go do projektu. Przechodź kolejno od góry do dołu.
Znajdź nazwę licencji na stronie repozytorium
Otwórz repozytorium na GitHubie. Nazwa licencji jest zwykle widoczna w prawej kolumnie albo pod listą plików — na przykład „MIT License”, „Apache-2.0” lub „GPL-3.0”. Jeśli pole jest puste i nie ma pliku licencji, to już sygnał ostrzegawczy; wróć do tej kwestii w ostatnim kroku.
Otwórz sam plik licencji
Znajdź na liście plików LICENSE, LICENSE.md albo COPYING i otwórz go. Upewnij się, że nazwa zgadza się z tą widoczną na pasku bocznym oraz że licencja dotyczy używanego przez ciebie kodu, a nie tylko odrębnej części repozytorium.
Ustal typ: liberalna czy copyleft
MIT, Apache 2.0 i BSD to licencje liberalne; możesz używać kodu w zamkniętym produkcie komercyjnym. GPL i AGPL to copyleft; sprawdź objęty utwór, dystrybucję i ewentualny warunek sieci AGPL przed ustaleniem obowiązków źródeł. Sama nazwa nie ustala zakresu niezależnych komponentów.
Porównaj licencję ze swoją sytuacją
Odpowiedz na trzy pytania: czy sprzedajesz produkt, czy modyfikujesz kod i czy chcesz zachować kod źródłowy jako zamknięty? MIT, Apache i BSD pasują do zamkniętego produktu na sprzedaż. Dla GPL i AGPL ustal objęty lub połączony utwór wymagający odpowiadających źródeł i wyzwalacz obowiązku; oceń możliwość spełnienia warunków.
Brak licencji oznacza, że nie wolno używać kodu
Jeśli nie ma pliku licencji, a README nie mówi nic o zgodzie, nie możesz używać kodu. Napisz do autora z prośbą o zgodę albo znajdź odpowiednik z prawidłową licencją. „Jest publicznie dostępny” nie oznacza zgody.
Ta kontrola wydaje się uciążliwa aż do chwili, gdy twój produkt urośnie, zacznie zarabiać, a ktoś zapyta o kod innych osób, który się w nim znajduje. Dwie minuty na początku kosztują mniej niż późniejsze rozwiązywanie sporu. Osobno opisuję, co zrobić z produktem po tym, żeby nie utknął po premierze: Zbudowałem produkt z AI; co dalej.
Często zadawane pytania
Czy możesz sprzedawać produkt zawierający cudzy kod z GitHuba?
Tak, jeśli kod ma licencję liberalną — MIT, Apache 2.0 lub BSD. Pozwalają one używać kodu w produkcie komercyjnym, sprzedawać go i zachować własny kod źródłowy jako zamknięty; wymagają jedynie zachowania treści licencji i oznaczenia autorstwa. GPL i AGPL też dopuszczają użycie komercyjne, lecz obowiązki źródeł zależą od objętego utworu i dystrybucji lub właściwego warunku sieci AGPL. Bez pliku licencji nie wolno ci w ogóle używać kodu.
Co oznacza brak licencji w repozytorium GitHub?
Oznacza, że nie możesz używać kodu. Domyślnie brak licencji oznacza brak zgody; nie oznacza, że kod jest „darmowy”. Kod pozostaje objęty pełną ochroną prawnoautorską autora. Możliwość przeglądania i forkowania repozytorium w GitHubie nie daje prawa do używania kodu w produkcie. Jeśli go potrzebujesz, napisz do autora z prośbą o zgodę albo znajdź odpowiednik z otwartą licencją.
Czym MIT różni się od GPL w przypadku mojego produktu?
MIT pozwala używać i modyfikować kod, sprzedawać produkt oraz zachować własny kod źródłowy jako zamknięty — jedynym obowiązkiem jest zachowanie treści licencji. GPL także dopuszcza komercję, lecz przekazanie objętego połączonego lub pochodnego utworu wymaga spełnienia obowiązków odpowiadających źródeł i tej samej licencji. Sam hosting bez kopii jest inny, a niezależne komponenty nie są automatycznie objęte.
Czy muszę coś zrobić, jeśli używam kodu na licencji MIT?
Tak, wystarczy jedna drobna rzecz: zachowaj w swoim projekcie treść licencji MIT i oznaczenie autorstwa dla użytego kodu. Zwykle jest to ten sam plik LICENSE, który dołączono do oryginału. MIT nie wymaga niczego więcej — możesz modyfikować kod, sprzedawać produkt i zachować kod źródłowy jako zamknięty.
Co jeśli to Claude dodał cudzy kod, a nie ja?
Nadal sprawdź jego pochodzenie. AI zwykle tworzy własny tekst na potrzeby twojego zadania, a wtedy kwestia dotyczy praw do wygenerowanego kodu — to osobny temat. Jeśli jednak AI niemal słowo w słowo odtworzy rozpoznawalny fragment cudzego kodu ze znanej biblioteki, nadal obowiązuje licencja tej biblioteki. Duże gotowe fragmenty przeniesione w całości sprawdzaj tak samo jak własne kopiowanie i wklejanie.
Źródła
- choosealicense.com - projekt referencyjny GitHub pomagający wybrać licencję
- choosealicense.com - co oznacza brak licencji
- Warunki korzystania z GitHub, sekcja D (przyznanie licencji innym użytkownikom)
- Licencja MIT (opensource.org)
- Apache License 2.0 (apache.org)
- GNU General Public License v3.0 (gnu.org)
- GNU Affero General Public License v3.0 (gnu.org)
Więcej szczegółów
Pytania i odpowiedzi
Czy hostowanie biblioteki GPL wymusza publikację całej usługi internetowej?
Sam hosting bez przekazywania kopii nie wyzwala dystrybucji GPL. Przy dystrybucji objętej połączonej lub pochodnej aplikacji mogą dotyczyć jej obowiązki źródeł; niezależne komponenty nie są objęte automatycznie.
Jaki dodatkowy warunek AGPLv3 dotyczy usługi internetowej?
Zmodyfikowany program AGPL z interakcją sieciową musi oferować odpowiadające źródła tym użytkownikom. Sprawdź objęty program i integrację zamiast zakładać brak źródeł albo otwarcie każdej niezależnej usługi.