Czy mogę tymczasowo używać bibliotek GPL do prototypowania i sprawić, by przyszły kod był zamkniętym źródłem?

23

Pracuję nad prototypem systemu oprogramowania, który (przynajmniej na początku) będzie źródłem zamkniętym.

Aby zaoszczędzić czas, zastanawiam się nad użyciem (czyli statycznym łączeniem) biblioteki, która jest licencjonowana na licencji GPLv3 , dzięki czemu mogę szybko przetestować swój projekt. Gdybym rozpowszechniał oprogramowanie na tym etapie, musiałbym wraz z nim rozpowszechniać kod źródłowy.

Co jeśli nie, ale upewnię się, że mój system działa, a następnie zastąpię bibliotekę GPL własnym kodem przed rozpowszechnieniem? Czy wynik byłby „zanieczyszczony” przez GPL?

Mam wrażenie, że zachowanie biblioteki GPL w mojej historii Git, czy nie, może mieć znaczenie.

Laurent S.
źródło
16
Podoba mi się wyrażenie „zanieczyszczone GPL”.
Arseni Mourzenko
7
idzie w parze z wirusową naturą licencji :)
Laurent S
5
Popraw mnie, jeśli się mylę, ale chcesz zwolnić system z zamkniętym kodem źródłowym, jednocześnie hostując kod na git? (i przypuszczam, że ten git jest czytelny dla innych, ponieważ inaczej miałbyś się martwić o posiadanie biblioteki GPL w historii?)
user2813274
3
@ user2813274, możesz mieć prywatne repozytorium Git.
Arturo Torres Sánchez,
5
Gdy uznasz to pytanie za interesujące, być może zainteresuje Cię również propozycja nowej wymiany stosów Open Source .
Philipp

Odpowiedzi:

20

GPL pisze :

Możesz przekazać pracę opartą na Programie lub modyfikacje, aby wytworzyć ją z Programu, w formie kodu źródłowego zgodnie z warunkami sekcji 4, pod warunkiem, że spełniasz również wszystkie poniższe warunki:

Zatem ten warunek ma zastosowanie tylko wtedy, gdy twoja praca jest „oparta na” bibliotece, którą licencja definiuje w następujący sposób:

„Modyfikowanie” dzieła oznacza kopiowanie lub adaptowanie całości lub części utworu w sposób wymagający pozwolenia na prawa autorskie, inne niż wykonanie dokładnej kopii. Powstała praca nazywana jest „zmodyfikowaną wersją” wcześniejszej pracy lub pracą „opartą” na wcześniejszej pracy.

Oznacza to, że Twój program jest „oparty” na bibliotece, tylko wtedy, gdy jest dziełem pochodnym zgodnie z prawem autorskim. Prawna definicja tego terminu różni się nieco w zależności od jurysdykcji i zwykle nie dotyczy bezpośrednio oprogramowania. Na przykład amerykańska ustawa o prawie autorskim pisze:

„Dzieło pochodne” to dzieło oparte na jednym lub kilku wcześniejszych utworach, takich jak tłumaczenie, aranżacja muzyczna, dramatyzacja, fikcja, wersja filmowa, nagrywanie dźwięku, reprodukcja sztuki, skrócenie, kondensacja lub każda inna forma, w której dzieło mogą zostać przekształcone, przekształcone lub dostosowane. Praca składająca się z poprawek redakcyjnych, adnotacji, opracowań lub innych modyfikacji, które jako całość stanowią oryginalne dzieło autorstwa, jest „dziełem pochodnym”.

To, co to oznacza dla oprogramowania, musi być interpretowane przez sądy na podstawie wcześniejszych podobnych orzeczeń. Nie znam wystarczającego orzecznictwa w twojej jurysdykcji, aby z całą pewnością stwierdzić, w jaki sposób sąd rozstrzygnie twoją sprawę. Można argumentować, że „zastąpienie biblioteki GPL własnym kodem” jest aktem tłumaczenia, szczególnie jeśli Twój kod jest silnie zainspirowany implementacją GPL. Nawet ponowne użycie interfejsu API biblioteki GPL może wylądować w gorącej wodzie (patrz Oracle vs. Google ).

Jeśli odpowiedź jest dla Ciebie ważna, zalecam szukanie kompetentnej porady prawnej zamiast pytać nieznajomych w Internecie.

meriton - podczas strajku
źródło
1
ok, to interesujące, nie zdawałem sobie sprawy, że dzielenie się interfejsem API można uznać za dzieło pochodne.
Laurent S
Ta odpowiedź stanowi ten sam punkt, który starałem się przedstawić w mojej odpowiedzi poniżej, ale w znacznie jaśniejszy sposób. +1
Michael Shaw
23

Tak długo, jak nie udostępniasz oprogramowania nikomu podczas łączenia się z bibliotekami GPL, jesteś bezpieczny. Wirusowy aspekt GPL pojawia się tylko wtedy, gdy rozpowszechniasz swoje oprogramowanie.

Byłoby lepiej, gdybyś mógł znaleźć bibliotekę z bardziej liberalną licencją, oczywiście, taką jak LGPL, APL2 lub MIT.

James McLeod
źródło
Oczywiście postaram się znaleźć inną bibliotekę z licencją permissive. Ale w przeciwnym razie wygląda na to, że mógłbym mieć stary kod GPL w historii git i nie łamać jego warunków, dystrybuując przyszły stan kodu.
Laurent S
5
Ta odpowiedź nie bierze pod uwagę ryzyka tworzenia pracy pochodnej podczas implementacji nowej wersji biblioteki.
Michael Shaw,
4
@Ptolemy Pamiętaj, że jeśli twoja historia gitów została wydana, to wypuściłeś starą wersję. Żeby policzyć, nie musi być w formie binarnej.
piojo,
2
@piojo Z drugiej strony, co najwyżej zobowiązuje cię do licencjonowania tej starej wersji na licencji GPL (i rozpowszechniania jej źródła); jeśli w pewnym momencie będziesz mieć wyłączne prawa autorskie do kodu, możesz uczynić wszystkie przyszłe wersje zamkniętymi źródłami (chociaż stare wersje nadal podlegają GPL). W zależności od ilości zastrzeżonych rzeczy w starej wersji, możesz mieć problem lub nie.
cpast
1
Tak długo, jak Laurent S jest autorem i właścicielem praw autorskich do wszystkich innych kodów obok GPL, jest również bezpieczny. On może i jest dozwolone , aby zwolnić całą pracę na warunkach GPL3 tylko w przypadku, może to być wynikiem później. Może to być niepożądane, ale OP jest w każdym razie bezpieczne (jeśli prawa autorskie są własnością).
hakre
8

Nie sądzę, aby twoje pytanie dotyczyło GPL. Chodzi o prototyp i to, czy będzie on używany w przyszłości jako podstawa dostarczanego systemu oprogramowania.

Jeśli tworzysz prototyp, którego nie chcesz używać, i nie zamierzasz ponownie wykorzystywać żadnego kodu w systemie dostarczalnym, skorzystaj z biblioteki GPL.

Trzy podejścia, które możesz podjąć

Jeśli jednak zamierzasz rozwinąć prototyp (coś, do czego dąży wielu menedżerów!), Możesz zastosować trzy podejścia:

  1. Przenieś części niezwiązane z rdzeniem do oddzielnych aplikacji, które komunikują się z twoim rdzeniem poprzez JSON lub REST API lub inny język / bibliotekę komunikacji międzyprocesowej. W ten sposób częściami nie-rdzeniowymi może być także GPL i możesz w nich korzystać z dowolnych bibliotek GPL.
  2. Zaprojektuj swój kod, aby można było zamienić biblioteki. Oznacza to utworzenie fasady, która ukrywa szczegóły implementacji. Gdy jesteś gotowy, aby przejść do biblioteki zastrzeżonej lub biblioteki MIT / BSD.
  3. W ogóle nie używaj kodu GPL.

Sugeruję, aby przejść na pierwsze podejście, ponieważ wtedy masz pracę o otwartym kodzie źródłowym, którą możesz wykorzystać w przyszłości jako część swojego profesjonalnego portfolio.

Drugie podejście jest również dobre, ponieważ i tak powinieneś projektować system, tworząc dokładnie potrzebne funkcje / klasy i usuwając je, dopóki nie będziesz mieć biblioteki lub niestandardowego kodu, który wypełni tę funkcjonalność.

Rudolf Olah
źródło
2
Umieszczenie kodu GPL w innym procesie samo w sobie nie oznacza, że ​​nie jest już częścią programu, a zatem nie ma już znaczenia dla licencjonowania reszty. Może jednak pomóc je odpowiednio rozdzielić.
Deduplicator
1
@Deduplicator, jeśli są to osobne aplikacje, które nie są wystarczające, należy je traktować jako osobną bazę kodu, masz rację. Podoba mi się to, co Twitter robi z Bootstrap i co Facebook robi ze wszystkimi swoimi bibliotekami. Non-core open source z podstawowym zastrzeżonym kodem.
Rudolf Olah,
@omouse, nie mogę zrobić 1, ponieważ jest to oprogramowanie wbudowane. 2 było moją pierwszą myślą, ale biorąc pod uwagę to, co wspominają Ptolemeusz i Meriton, brzmi to tak, jakbym tworzył dzieła pochodne, więc 3 jest prawdopodobnie właściwą drogą.
Laurent S
1
Re: „Nie sądzę, że twoje pytanie dotyczy GPL”: nie zgadzam się. Licencja oprogramowania z pewnością może zabraniać tego rodzaju użytkowania. Odpowiedź, która zignorowała część pytania „GPL” i po prostu potraktowała to jako ogólne pytanie dotyczące licencji typu open source z restrykcyjnymi warunkami i zachowaniem wirusowym, musiałaby uciekać się do „nie wiemy, będziesz mieć przeczytać warunki licencji ".
ruakh
Jeśli utworzysz dzieło pochodne i wyrzucisz je, nadal masz dzieło pochodne i możesz to zrobić tylko za zgodą / licencją pierwotnego właściciela praw autorskich. Z GPL masz tę licencję (jeśli nigdy nie rozpowszechniasz dzieła pochodnego przed wyrzuceniem go). W przypadku innej licencji możesz nie mieć pozwolenia. Pozywanie cię o odszkodowanie może być trudne.
gnasher729
5

Mogę wymyślić dwa aspekty, które należy rozważyć przy twoim podejściu. Pierwszy jest prosty, ponieważ nie rozpowszechniasz swojego projektu lub (ponieważ jest to GPLv3 , udostępniając go do użytku publicznego), gdy korzystasz z kodu wydanego na licencji GPL, trudno jest zobaczyć, w jaki sposób będziesz musiał rozpowszechniać swój kod na licencji GPL również na warunkach redystrybucji.

Drugi aspekt może być dla ciebie bardziej znaczący. Tworząc własną implementację w celu zastąpienia biblioteki GPL, należy uważać, aby nie utworzyć pracy pochodnej. Chociaż jestem pewien, że masz dobre intencje, nie kopiuj bezpośrednio kodu źródłowego - bardziej prawdopodobne jest, że nie skopiujesz znacznej części interfejsu API biblioteki.

Jeśli jest to produkt komercyjny, ryzyko to należy wziąć pod uwagę i ocenić, uważnie czytając licencję GPLv3, aw razie wątpliwości, prosząc o profesjonalną opinię prawną.

Michael Shaw
źródło
4

Jeśli planujesz napisać własny kod, aby zastąpić kod GPL, będziesz mieć potencjalny problem, ponieważ nie piszesz kodu w czystym pomieszczeniu. Naprawdę chciałbyś, aby ktoś, kto nigdy nie spojrzał na kod GPL, napisałby bibliotekę zastępczą. Z drugiej strony, jeśli chcesz po prostu zamienić bibliotekę GPL na bibliotekę już opublikowaną, która jest objęta inną licencją, nie stanowi to problemu, druga biblioteka prawdopodobnie została już napisana w środowisku czystego pokoju.

Elin
źródło
2

Jeśli zapewnisz dostęp do wersji za pomocą kodu GPL, będą one całkowicie objęte GPL. Ale nie chcesz, bo to nie byłoby zamknięte źródło ...

Dla jakiegokolwiek późniejszego stanu, który nie używa już kodu GPL, że użyłeś kodu GPL wcześniej, jest po prostu nieistotny.

Deduplikator
źródło
2

GPL jest uruchamiana tylko podczas dystrybucji ... możesz zrobić, co chcesz, jeśli nie wydasz zmodyfikowanej wersji lub pracy pochodnej.

Mam wrażenie, że zachowanie biblioteki GPL w mojej historii Git, czy nie, może mieć znaczenie.

Jeśli masz na myśli opublikowanie swojego źródła w publicznym repozytorium, takim jak GitHub , to tak, możesz mieć problem. Samo używanie git nie ma znaczenia, jeśli jest prywatne.

Corey Goldberg
źródło