Jaka jest najlepsza praktyka w zakresie organizowania „dokumentacji” na licencje biblioteczne innych firm?

60

Rozwijam mały projekt typu open source. Aplikacja korzysta z wielu bibliotek firm trzecich wydanych z szeregiem licencji: Apache, MIT, BSD, LGPL i CDDL.

Każda z tych licencji ma swoje własne „formalności”. Na przykład licencja Apache v2.0 mówi:

Jeśli Dzieło zawiera plik tekstowy „OGŁOSZENIE” jako część jego dystrybucji, wszelkie Dzieła pochodne, które rozpowszechniasz, muszą zawierać czytelną kopię zawiadomień o uznaniu autorstwa zawartych w takim pliku POWIADOMIENIA.

Licencja MIT zawiera informację o prawach autorskich i mówi:

Powyższa informacja o prawach autorskich i ta informacja o pozwoleniu będą zawarte we wszystkich kopiach lub znacznych częściach Oprogramowania.

Licencja BSD zawiera także informację o prawach autorskich i mówi:

Redystrybucje w formie binarnej muszą zawierać powyższą informację o prawach autorskich, niniejszą listę warunków i następujące wyłączenie odpowiedzialności w dokumentacji i / lub innych materiałach dostarczonych wraz z dystrybucją.

LGPL v.3 mówi:

(Powinieneś) wyraźnie informować z każdą kopią Połączonego Dzieła, że ​​Biblioteka jest w nim użyta i że Biblioteka i jej wykorzystanie są objęte niniejszą Licencją.

Licencje LGPL i CDDL wymagają także dostarczenia kodu źródłowego wraz z binarną formą biblioteki, więc gdzieś należy podać informacje o sposobie uzyskania kodu źródłowego.

Jaka jest najlepsza praktyka w zakresie porządkowania wszystkich tych danych? Czy powinienem utworzyć plik tekstowy i skopiować zawartość wszystkich NOTICEplików, licencji MIT i BSD itp. Do tego pliku? ... czy powinienem utworzyć osobny katalog dla każdej biblioteki i umieścić wszystkie dane związane z biblioteką w tym katalogu? … albo coś innego?

Interesujące byłoby również zobaczenie przykładów tej „dokumentacji” w opublikowanych projektach.

AKTUALIZACJA:

Przeczytałem Czy do każdego pliku źródłowego musisz dołączyć informację o licencji? , ale to nie rozwiązuje mojego problemu. Moje pytanie dotyczy bibliotek innych firm, które są używane w projekcie, i to pytanie dotyczy nagłówków we własnym kodzie źródłowym projektu.

Alexey
źródło

Odpowiedzi:

62

Po pierwsze, standardowe zastrzeżenie: IANAL, ale losowy nieznajomy.

Ostatnio pakuję aplikację AGPL (*). Korzysta z bibliotek stron trzecich rozpowszechnianych na licencji jQuery, MIT, BSD (i niektórych innych). Oto jak postępowałem.

Moimi głównymi celami przy projektowaniu było: być zgodnym i uczciwym . Podczas gdy pierwszy powinien wystarczyć, drugi zapewnia, że ​​ktokolwiek próbuje mnie pozwać za to, że nie jest w 100% słuszny, musi przyznać, że zrobiłem wszystko w dobrej wierze.

1) Pliki źródłowe: wszystkie moje pliki mają nagłówek AGPL. Wszystkie pliki stron trzecich pozostają (przeważnie) niezmodyfikowane, dlatego zawierają własny nagłówek licencji.

2) LICENSE.txt, w katalogu głównym pakietu, zawiera tekst licencji AGPL (jak wyjaśniono w sekcji „Jak stosować niniejsze warunki do nowych programów”).

3) Plik licencji dodatkowej, który nazwałem LICENSE-3RD-PARTY.txt, również znajdujący się w katalogu głównym pakietu, zawiera dosłowne kopie WSZYSTKICH licencji. W przypadku każdej licencji nagłówek określa, która licencja jest i do której części dotyczy. Podaję również nazwę właściciela praw autorskich - ponownie wykorzystuję je gdzie indziej, więc warto spróbować.

-----------------------------------------------------------------------------
                        The MIT License (MIT)
        applies to: 
        - AJAX Upload, Copyright (c) Andrew Valums
        - jQuery hashchange event, Copyright (c) 2010 "Cowboy" Ben Alman
        - jquery.hotkeys, Copyright (c) 2010 John Resig
-----------------------------------------------------------------------------

Permission is hereby granted, free of charge [...]

4) README.txt, również w katalogu głównym, wyjaśnia, że ​​oprogramowanie to AGPL (patrz LICENCJA.txt) i korzysta z bibliotek stron trzecich, które są dystrybuowane na własnych warunkach (patrz LICENCJA-3RD-PARTY.txt)

5) W dokumentacji on-line mam stronę licencji, która powtarza informacje z pliku readme: moje oprogramowanie to AGPL i wykorzystuje komponenty innych firm, które są BSD / MIT / [...]. Postanowiłem zachować tę stronę czystszą i bardziej czytelną, dlatego podana jest tylko nazwa licencji wraz z linkiem do pełnego tekstu oraz nazwa posiadaczy praw autorskich z linkiem do ich własnej strony internetowej.

jQuery
    Copyright 2013 jQuery Foundation and other contributors
    http://jquery.com
    MIT License
Data Driven Documents (D3)
    Copyright (c) 2013, Michael Bostock    <-- link to personal website, if any
    http://d3js.org                        <-- link to software website
    BSD-like license                       <-- link to license full text
[...]

6) Również w dokumentacji on-line mam stronę Kredytów , na której wymieniam bezpośrednich i pośrednich głównych autorów. Na przykład zacytowałem grupę PostgreSQL, chociaż PostgreSQL nie jest uwzględniony w pobieraniu, ale potrzebujesz go, aby uruchomić oprogramowanie. Byłoby to dobre miejsce do umieszczenia wszystkich podziękowań, które są wymagane lub pożądane przez autorów narzędzi / bibliotek / programów innych firm.

7) W samym oprogramowaniu lista bibliotek wraz z licencją i posiadaczami praw autorskich jest powtarzana w oknie dialogowym Informacje .

Aby odpowiedzieć na konkretne pytania dotyczące włączenia kodu źródłowego i układu pliku:

  • ogólnie przyjmuje się, że łączy się tylko z pełnym kodem źródłowym pakietów stron trzecich. Skonsultuj się z każdą konkretną licencją, aby się upewnić, ale wystarczy podać link IMHO. Na przykład, jeśli używasz zminimalizowanej wersji biblioteki, możesz podać link do standardowego pliku do pobrania i nic ci nie jest.

  • chyba że komponent strony trzeciej wyraźnie zażąda, aby dystrybucje utrzymywały identyczny układ pliku, możesz zmienić układ według własnego uznania. Wyobraź sobie, że korzystasz z bibliotek internetowych, mając każdy katalog css / i js /, możesz scalić je razem w jednym katalogu lib /, zawierającym scalone css / i js /, a nawet rozproszyć je po całym drzewie źródłowym - twój wybór.

I jako ostatnia uwaga, chciałbym więcej niż mile widziane komentujących, którzy machnąć ręką mówiąc: „robisz to źle” i / lub „należy również zrobić to ”.

(*) Nie jest to zamierzone linkowanie spamu, ale po prostu odpowiedź na pytanie „proszę podać przykłady”. Nie wahajcie się, drodzy mody, aby usunąć ten link, jeśli jest to niezgodne z zasadami.


źródło
2
Dziękuję za świetną odpowiedź! Właśnie tego rodzaju informacji szukam. Nie przyjmuję tego jeszcze, aby zobaczyć, czy inni ludzie mają coś do powiedzenia.
Alexey,
8
Dla tych, którzy przyjdą tu później, FireFox ma dokument podobny do LICENSE-3RD-PARTY.txtpliku opisanego w tej odpowiedzi. (Kliknij Licensing Informationw Aboutpolu.) W Google Chrome jest podobny dokument.
Alexey
1
Oto podobny dokument, w którym wymieniono oprogramowanie innych firm wykorzystywane przez IntelliJ IDEA: confluence.jetbrains.com/display/IDEADEV/…
Alexey