Czy kod źródłowy wydany na licencji GPL musi być czytelny dla człowieka?


Odpowiedzi:


37

GPL wymaga, aby była to preferowana wersja do edycji. Jeśli zwykle piszesz zaciemnionym kodem i wprowadzasz zmiany bezpośrednio w nim, to jest to źródło GPL. Jeśli pracujesz nad wersją czytelną, a następnie uruchomisz ją za pomocą dowolnego zaciemniacza, wersja czytelna jest tym, co GPL uważa za źródło.

„Czytelność” jest subiektywna i nie została zdefiniowana. Wydanie naprawdę złego, trudnego do zrozumienia kodu na podstawie GPL jest legalne. Nie jest dozwolone przyjmowanie wersji, w której wprowadzasz zmiany, usuwanie białych znaków lub w inny sposób zmniejszanie jej czytelności, i nazywanie tego źródłem na licencji GPL.


1
bardzo interesujące, dzięki. Czy jest określona część licencji, która to stwierdza?
Armand

12
GPLv2, Warunki, z klauzuli 3: „Kod źródłowy utworu oznacza preferowaną formę utworu do wprowadzania modyfikacji”.
David Thornley,

4
To ograniczenie dotyczy tylko licencjobiorców. W przypadku własnego kodu (bez wciągania zewnętrznego kodu GPL) możesz zaciemnić tyle, ile chcesz i nadal umieszczać na nim naklejkę GPL (aby przyznać prawa innym). nVidia zrobiła to z kodem sterownika w ciągu dnia (około 1998 r.)
Patrick Georgi

2
To powiedziawszy, nie ma sensu „uderzać naklejką GPL” w dzieło, w którym nie podajesz użytecznego kodu źródłowego, jak w przykładzie nVidia. Równie dobrze mogłeś skorzystać z licencji zastrzeżonej. Najwyraźniej nVidia chciała być postrzegana jako dzieląca się swoim kodem bez faktycznego udostępniania kodu.
thomasrutter

1
Z czystej ciekawości. Co jeśli pracujesz w zastrzeżonym edytorze, który zapisuje źródło w postaci zaszyfrowanej? Teoretycznie masz kod tak, jak z nim pracujesz, jednak nikt inny nie mógłby z nim pracować, ponieważ jest to zastrzeżone narzędzie, do którego nikt nie ma dostępu.
Aidiakapi

6

Biorąc GPL v3, w sekcji 1 masz:

„Odpowiednie źródło” dla pracy w postaci kodu obiektowego oznacza cały kod źródłowy potrzebny do wygenerowania, instalacji i (w przypadku pracy wykonywalnej) uruchomienia kodu obiektowego i zmodyfikowania pracy, w tym skryptów kontrolujących te działania.

Gdyby komentarze i białe znaki zostały usunięte, a także zmienione nazwy funkcji i zmiennych, nie byłoby możliwe racjonalne zmodyfikowanie pracy.

Dodatkowo:

Odpowiednim źródłem dla pracy w formie kodu źródłowego jest ta sama praca.

Ta sama praca, a nie zmieniona.

Tak więc, aby wyjaśnić mój poprzedni punkt, kod źródłowy musi być niezmieniony, zakładam, że ludzki zapis == czytelny dla człowieka. Ale tak, możesz pisać bezpośrednio w tym, co można uznać za nieczytelne dla ludzi.


4

Pytanie nie zawiera niektórych istotnych informacji. Jeśli jesteś jedynym autorem, możesz wydać własny kod na dowolnej licencji (w tym GPL), niekoniecznie przestrzegając wszystkich jego zasad. W ten sposób możesz wysłać kod w formie, która nie jest preferowana do edycji i nie narusza żadnych praw autorskich. To, czy inni mogliby rozszerzyć Twój kod w duchu posiadania licencji na Wolne Oprogramowanie, jest wątpliwe, więc mało kto mógłby spróbować.

Jednak przez większość czasu nie będziesz jedynym autorem dzieła. Wykorzystasz istniejący kod, tworząc dzieło pochodne. Takie dzieło musi być zgodne z połączonymi zasadami jego rodowodu, w przeciwnym razie nie będziesz mieć pozwolenia na rozpowszechnianie go bez naruszenia praw autorskich.

Aby to wyjaśnić, oto kilka przykładów (IANAL):

  • Jeśli użyjesz biblioteki GPL w swoim kodzie, nie będziesz mógł wysyłać własnego kodu źródłowego tylko w zaciemnionej formie, chyba że (jak pisze David Thornley), to w rzeczywistości jest to forma, w której go piszesz i edytujesz.
  • Jeśli korzystasz z biblioteki LGPL w swoim kodzie, możesz wysłać własny kod źródłowy tylko w zaciemnionej formie. Wynika to z faktu, że LGPL wymaga jedynie możliwości korzystania z pracy korzystającej z biblioteki w nowszej wersji biblioteki.
  • Jeśli rozszerzysz bibliotekę LGPL, będzie to tak jak w przypadku GPL i będziesz musiał wysłać nie zaciemniony kod (ponownie, chyba że tak właśnie go edytujesz).

1
musisz przestrzegać wszystkich zasad licencji, niezależnie od tego, kto jest właścicielem praw autorskich. Jeśli zdecydujesz, że chcesz korzystać z biblioteki JS we własnej witrynie, a także wydać ją na licencji GPL, możesz to zrobić osobno. To pytanie nie dotyczy LGPL, chociaż jeśli podobne ograniczenia dotyczą LGPL, ponieważ GPL dotyczy czytelności kodu, warto o tym wspomnieć.
Armand

@Alison: Warunki licencji mają zastosowanie do tego, który używa (i redystrybuuje, w tym przypadku) dzieła, a nie do tego, który pierwotnie je tworzy i udziela licencji.
Paŭlo Ebermann

1
@Alison Disagreed. Jeśli jesteś jedynym właścicielem dzieła, możesz dowolnie licencjonować go. Dlatego możesz rozpowszechniać go na warunkach (magiczna, nieokreślona licencja tutaj) i pozwalać innym na redystrybucję go na warunkach GPL - GPL dodaje tylko prawa pozwalające innym na redystrybucję dzieł pochodzących od ciebie. Oczywiście nie jest to prawdopodobny scenariusz, ponieważ gdybyś nie wierzył w GPL i był jedynym właścicielem, nie skorzystałbyś z niej.
Michael Urman

Nie musisz wysyłać własnego kodu źródłowego korzystającego z biblioteki LGPL, pod warunkiem, że język zezwala na pliki binarne. Musisz wysłać to, co pozwoli użytkownikowi zmienić część LGPLed i przebudować aplikację (chociaż GPLv2 pozwala ci uniemożliwić instalację zmienionej wersji). Jeśli wysyłasz źródło, z konieczności lub z wygody, może ono zostać zaciemnione.
David Thornley

Słuszna uwaga. Będę edytować swój post, aby nie mówić, że LGPL nie nakłada żadnych wymagań na pracę, która z niego korzysta.
Michael Urman
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.