Umieszczasz licencję w każdym pliku kodu? [Zamknięte]

95

Uważam, że jest to niepotrzebnie duplikowane, aby mieć go w każdym pliku kodu, ale widzę to w większości projektów open source. Powinienem zrobić to samo, czy po prostu dołączyć pojedynczą licencję poza kodem?

Joan Venge
źródło
1
Musisz wykluczyć gwarancję w każdym pliku źródłowym, w przeciwnym razie możesz zostać złapany. (Zauważ, że odpowiedni edytor, taki jak Vim, można łatwo skonfigurować tak, aby automatycznie składał szablon wykluczenia gwarancji.)
Evgeni Sergeev

Odpowiedzi:

76

Poproszę jeden poza kodem! Nie wiem o innych, ale nienawidzę widzieć tego samego w każdym pliku.

Wydaje mi się, że przeczytałem to kilka razy, po prostu przeglądając to page_down.

Wieża
źródło
10
Nie zgadzam się z Zifre. Każda powtórna licencja na górze mnie irytuje.
strager
49
Rozsądne i rozsądne jest określenie, na podstawie której licencji każdy plik źródłowy został wydany, ponieważ plik może być oddzielony od reszty kodu (ponowne wykorzystanie - ogólnie zalecane przez Open Source) i jeśli plik nie zawiera informacji o licencji , odnalezienie właściwej licencji jest trudniejsze. Ale cała licencja w każdym pliku - nie; byłoby to groteskowe dla GPL czy LGPL. Jak już zasugerowano, w przypadku krótkich licencji uciążliwe jest posiadanie faktycznego tekstu licencji w pliku, ale jest to decyzja o ocenie. Ale rozsądne jest określenie, na której licencji jest on wydany.
Jonathan Leffler
14
Właśnie zaktualizowałem nagłówki plików w moim projekcie, aby zawierały tylko trzy linie: prawa autorskie, nazwa licencji i adres URL do tekstu licencji. Skróciło moje nagłówki z 26 linii (BSD) do 3 linii. :)
Esko Luontola
3
@Esko: Czy możesz wysłać próbkę? Nie wiem, co napisałeś o prawach autorskich. Dzięki.
Joan Venge
6
Ta odpowiedź jest oznaczona jako rozwiązanie, ale moim zdaniem pytanie pozostaje otwarte, dopóki nie mamy odpowiedzi evidence for the legal situation. Perhaps a lawyer can add a link to a court decision.
Jonas Stein
25

EULA to niewłaściwy termin, ponieważ osoby oglądające kod źródłowy zwykle nie są użytkownikami końcowymi.

Z prawnego punktu widzenia to też nie ma znaczenia; prawa autorskie nie muszą być wyraźnie deklarowane.

Zasadniczo wszystko, co osiągasz, to mniejsze ryzyko przypadkowego naruszenia warunków licencji przez ludzi . Musisz zdecydować, jak ważne jest to dla Ciebie.

Powiedziałbym, że najlepszym kompromisem jest umieszczenie bardzo krótkiego nagłówka zawierającego odsyłacz (bezwzględny adres URL oraz względny w projekcie) do pełnego tekstu licencji w każdym pliku kodu źródłowego. W ten sposób każdy, komu zależy na licencji, wie, gdzie ją znaleźć (najlepiej ludzie, którzy są gotowi zapłacić ogromne opłaty licencyjne; z pewnością chcesz, aby ci ludzie mogli się z tobą skontaktować!)

Michael Borgwardt
źródło
1
Prawa autorskie nie muszą być wyraźne, ale co z kopiowaniem po lewej?
Kekoa
1
@kekoav: copyleft jest mniej restrykcyjny niż prawa autorskie. Domyślnie nie możesz tworzyć dzieł pochodnych.
Zifre
3
W sporze nie byłby to ważny argument. Jeśli zostaniesz poinformowany, że istnieje licencja i jak ją odzyskać, nie możesz umieścić barier technicznych, które są Twoją winą, i które uniemożliwiły Ci wyświetlenie licencji.
Lasse V. Karlsen
1
„Copyleft” to slang określający podstawową ideę GPL polegającą na „obalaniu” wewnętrznych ograniczeń praw autorskich, tj. Wykorzystywaniu swoich praw jako posiadacza praw autorskich w celu udzielenia każdemu licencji na swobodne używanie Twojego kodu, ale zmusić ich do wydania ICH kodu, który jest na podstawie Twojej na tej samej licencji.
Michael Borgwardt
2
Poprawny; ale w tym kontekście, jak powiedział Zifre, nie ma to znaczenia. Jeśli nie znasz licencji, na podstawie której opublikowano określony fragment kodu, musisz założyć, że w ogóle nie możesz go używać. Jako wydawca nie musisz się zbytnio starać, aby ludzie przeczytali licencję.
Michael Borgwardt
14

Nie, nie musisz umieszczać licencji w każdym pliku kodu źródłowego.

Jeśli przyjrzysz się bliżej, większość aplikacji FOSS też tego nie robi. Umieszczają oświadczenie o prawach autorskich na górze każdego pliku i krótkie zdanie informujące, na jakiej licencji znajduje się plik i gdzie można znaleźć pełny tekst licencji. Zwykle kierują do pliku KOPIOWANIE lub LICENCJI zawierającego pełny tekst licencji i / lub strony internetowej zawierającej pełny tekst (na wypadek, gdyby pliku COPYING już tam nie ma).

Jak powiedział Michael Borgwardt w swoich odpowiedziach, zgodnie z prawem nie musisz tego robić. Jednak w przypadku kodu źródłowego, który zamierzasz rozpowszechniać, zaleca się natychmiastowe sprawdzenie, kto ma prawa autorskie i jaka jest licencja.

Sander Marechal
źródło
1
To. Informacja o prawach autorskich powinna zawierać odniesienie do nazwy licencji (jeśli jest standardowa) oraz opis, jak znaleźć plik licencji w drzewie źródłowym.
jmucchiello
13

Może to zależeć od licencji. GPL rozróżnia preambleilicense . Wyraźnie stwierdza się, że (irytująca) preambuła musi być częścią kodu :

Czy mogę pominąć preambułę GPL lub instrukcje, jak jej używać we własnych programach, aby zaoszczędzić miejsce?

Preambuła i instrukcje są integralnymi częściami GNU GPL i nie można ich pominąć. W rzeczywistości GPL jest objęta prawem autorskim, a jej licencja zezwala tylko na dosłowne kopiowanie całej GPL. (Możesz użyć warunków prawnych, aby stworzyć kolejną licencję, ale nie będzie to GNU GPL.) (1)

Źródło: 1) http://www.gnu.org/licenses/gpl-faq.html#GPLOmitPreamble

Zobacz także http://softwarefreedom.org/resources/2012/ManagingCopyrightInformation.html

ZA Darmowy ebook z ifrOSS wyjaśnia i komentuje GPL 2 w języku niemieckim. Jest jeszcze jeden dla GPL 3

Aby uzyskać dobrze uzasadnioną odpowiedź, poproś o poradę prawną, która nie jest dostępna na sx. Jeśli nie możesz znaleźć prawnika dla swojego (open source) projektu, zajrzyj do sieci prawniczej FSFE .

Jonas Stein
źródło
7
Preambuła i instrukcje częścią pełnej licencji, ale nic nie mówi, że musisz umieścić pełną licencję w każdym pliku. [...] attach the following notices to the program.- poniższe uwagi to tylko niewielka część pełnej licencji. safest to attach them to the start of each source file- najbezpieczniejszy, ale nie wymagany. each file should have at least the "copyright" line and a pointer to where the full notice is found. - jedynym wymaganiem jest wiersz dotyczący praw autorskich ze wskaźnikiem do reszty. Pełną licencję można umieścić w oddzielnym pliku.
Toxalot
3
I uważam, że powinno ! = Musi .
Toxalot
Mylisz się. Nie jesteś zmuszony do dodawania pełnej licencji do kodu (nie żeby ktokolwiek by to robił ), ale NIE jesteś też zmuszony do dodawania żadnych uwag w swoim kodzie (słynny nagłówek GPL w plikach) - chociaż może to mieć sens. Cytujesz po prostu, że nie możesz rozerwać tekstu GPL.
user136036
7

Myślę, że powód umieszczenia go w każdym pliku jest uzasadniony prawem. Jeśli umowa jest w każdym pliku, nie ma szans, by ktoś natknął się na fragment kodu bez ujawnienia licencji.

Może nie jest dobry, ale wszyscy duzi chłopcy go używają, więc jeśli to tylko ból wizualny, szukałbym lepszego powodu, aby nie robić tego samego.

Jeśli używasz GPL, jest to większy problem, ale jeśli używasz licencji domeny publicznej, takich jak BSD lub MIT, nie sądzę, żeby tak naprawdę obchodziło cię, co ludzie robią z kodem. Przypuszczam, że zależy to od tego, jak surowe jest twoje prawo jazdy.

Kekoa
źródło
1
Cóż, w takim przypadku wystarczy wskazać w każdym pliku, że kontynuując go, zgadzasz się na licencję w pliku licence.txt. Ale nie kopiuj / wklejaj tego samego tekstu w każdym pliku. Czasami znajduję pliki z kodem krótszym niż licencja.
Wieża
Tak, zgadzam się, że działa to równie dobrze, zwłaszcza w przypadku długich licencji. Nawet jeśli nie jest to prawnie istotne, a nawet uzasadnione w sądzie, odniesienie do twojego prawa jazdy jest co najmniej dobre, aby poinformować ludzi bez konieczności szukania licencji, na której znajduje się kod.
Kekoa
3

IANAL,

Zakładając, że mówisz o licencji, a nie o umowie licencyjnej, możesz umieścić licencję na zewnątrz. Prawie zawsze odbywa się to w przypadku naprawdę długich licencji, takich jak GPL. Byłoby głupio umieszczać całą licencję GPL w każdym pliku. Zwykle masz po prostu jakieś powiadomienie z informacją, gdzie można znaleźć właściwą licencję. Jest to całkowicie legalne. Jednak przy naprawdę krótkich licencjach, takich jak BSD / Apache / MIT / cokolwiek, łatwiej jest po prostu dołączyć licencję do każdego pliku, ponieważ informacja o tym, gdzie znaleźć licencję, byłaby prawie tak długa, jak sama licencja.

Zifre
źródło
2

Zależy to od warunków licencji. Na przykład GPL nakazuje umieszczenie krótkiego powiadomienia w każdym pliku źródłowym, umieszczenie całej licencji w jakimś miejscu dystrybucji źródłowej i udostępnienie dystrybucji źródłowej każdemu, kto otrzyma kopię dystrybucji binarnej.

Jeśli się z tym nie zgadzasz, a to jest TWÓJ kod, możesz wybrać bardziej dogodną licencję lub stworzyć własną.

Mark Jones
źródło
1

Jeśli twój kod ma zostać skompilowany, więc po prostu rozprowadzasz plik binarny, to naprawdę nie ma to znaczenia. Ponieważ podczas tworzenia pliku binarnego komentarze są usuwane przed rozpoczęciem procesu kompilacji. Ma to znaczenie tylko wtedy, gdy będziesz rozprowadzać rzeczywisty kod źródłowy w wersji open source lub zamkniętej. Jest to typowe, jeśli będziesz dystrybuować aplikację w języku skryptowym, który się nie kompiluje.

adimitri
źródło
Dzięki. To będzie open source.
Joan Venge
Możesz utworzyć na stałe zakodowany ciąg znaków, który będzie zawierał licencję, aby pojawił się w pliku binarnym, ale to prawdopodobnie za dużo :).
Liran Orevi
1

Nie potrzebujesz tego do licencji, pojedynczy plik zewnętrzny wystarczy, o ile jest jasne, jakie pliki obejmuje.

Jednak w przypadku praw autorskich należy umieścić informację o prawach autorskich na każdym fragmencie tekstu.

James Anderson
źródło
Dzięki, więc prawa autorskie są inne?
Joan Venge
INAL, ale licencja to umowa między Tobą a użytkownikiem / klientem. Prawo autorskie to dochodzenie własności fragmentu pracy pisemnej. Ktoś mógłby odebrać fragment twojego kodu i rozsądnie twierdzić, że nie jest to prawa autorskie, ponieważ brakowało powiadomienia. Nie martw się jednak „Copyright Joe Soap (Cleansoft Inc.)” to wszystko, czego potrzebujesz.
James Anderson
10
Tak bardzo się mylisz. Chociaż generalnie dobrze jest dodawać wszędzie informacje o prawach autorskich, tylko dla jasności, ale to nie czyni uczciwej gry „zakładanie, że nie było to chronione prawami autorskimi”, ponieważ wiesz, że WSZYSTKO jest chronione prawem autorskim. Kiedy ktoś uzyska kod źródłowy, może znaleźć oświadczenie licencyjne, które pozwala mu go używać, lub może dowiedzieć się, że znajduje się on w domenie publicznej z tego czy innego powodu. Jeśli nie, pomyśli, że jest chroniony prawem autorskim i nie można go skopiować. Prawa autorskie to rzecz automatyczna i dobrze o tym wspomnieć, ale nie robienie tego nie oznacza, że ​​je tracisz ...
Jasper
1

To, co robię, to umieszczenie dwuwierszowego komentarza na górze pliku, podającego nazwę mojej firmy, datę ostatniej zmiany i nazwę licencji, którą ma plik źródłowy, a następnie na samym dole pliku krótką wersję licencja.

Oczywiście pełna licencja (wszystkie w przypadku wielu licencji) jest zawsze dołączona do pliku źródłowego i katalogu wydań.

GaiusSensei
źródło
4
jak zautomatyzować datę ostatniej rewizji?
Dustin Getz,