Jaki jest właściwy sposób na rozwidlenie / ponowne użycie kodu z projektu open source?

22

Powiedzmy, że pracuję nad projektem typu open source i chcę ponownie użyć trywialnej funkcji narzędzia z innego projektu typu open source (na przykład funkcji wyszukiwania / zamiany plików). Czy kopiowanie funkcji i legalne umieszczanie w górnej części pliku jest legalne? Czy powinienem podać swoją nazwę jako właściciela praw autorskich do całego projektu w licencji?

Podobnie, powiedzmy, że rozwidlam projekt open source. Gdzie i jak określić, że prawa autorskie są dzielone między pierwotnego właściciela praw autorskich a mną?

Wydaje mi się, że odpowiedź musi się nieco różnić w zależności od licencji open source, ale chciałbym uzyskać ogólną odpowiedź tak bardzo, jak to możliwe.

PS: Najbardziej martwię się o aspekt prawny, ale nie krępuj się podać swój etyczny punkt widzenia.

Olivier Lalonde
źródło
1
Jaka jest licencja na dany projekt i projekt, który wydajesz? Tak, możesz użyć kodu, ale bądź bardziej szczegółowy, abyśmy mogli lepiej informować cię o twoich wymaganiach wynikających z używanej licencji.
Tim Post
1
@Tim Post: Jest to głównie pytanie teoretyczne, ale jeśli może pomóc, załóżmy, że oba projekty mają licencję GPL, ponieważ jest bardzo powszechne.
Olivier Lalonde

Odpowiedzi:

25

Staram się, aby ta odpowiedź była jak najbardziej „meta”.

Używanie fragmentów / bitów z innych projektów

Wyraźnie oznacz kod prawami autorskimi oryginalnego autora. Upewnij się, że twoja licencja jest w pełni kompatybilna z licencją używanego kodu. Będziesz potrzebował zgody autora na przeniesienie kodu na inną licencję (chyba że wyraźnie na to pozwalają, np. „GPL 2 lub dowolna późniejsza wersja”)

Twój program powinien mieć plik AUTORZY (lub podobny), w którym wymieniasz wszystkich współautorów i rzeczy, których użyłeś z innych projektów.

Rozwidlanie projektu

Do każdego modułu, który znacząco zmienisz, dodaj swoje prawa autorskie na podstawie oryginalnego autora. To samo dotyczy licencjonowania, jesteś związany warunkami licencji, która obowiązywała, kiedy ją rozwidliłeś. Jeśli projekt mówi „Tylko GPL2”, musisz to uszanować, nie możesz przejść do GPL3 bez ich zgody.

Różni się to znacznie w zależności od dostępnej licencji. QPL mówi, że możesz na przykład rozpowszechniać tylko zmiany w formacie łatek, więc upewnij się, że rozumiesz warunki, które pozwalają na dystrybucję zmodyfikowanych wersji oprogramowania.

Poza tym zawsze zachowuj prawa autorskie. Jeśli dodajesz własne prawa autorskie do tego, co istnieje, upewnij się, że wyraźnie zaznaczyłeś dokładnie to, co twierdzisz.

Tim Post
źródło
Czasami możesz dodawać licencje. Załóżmy, że chcesz użyć funkcji BSD w projekcie GPLed: nie możesz usunąć licencji BSD, ale jest ona zgodna z GPL, więc możesz wydać cały projekt na licencji GPL i zauważyć, że funkcja jest również objęta BSD licencja. Uprzejmie byłoby opublikować wszelkie zmiany wprowadzone w kodzie licencjonowanym przez BSD zgodnie z BSD.
David Thornley
@David - OP chciał ogólnej odpowiedzi (stąd moje pragnienie zbadania licencji). Masz całkowitą rację. JEDNAK „miło” jest podwójnie licencjonować wszelkie zmiany wprowadzone w kodzie BSD, więc oryginalni autorzy mogą go używać, jeśli chcą.
Tim Post
1
W którym momencie główny plik licencji powinien zawierać informację o prawach autorskich nad oryginalnymi autorami? Kiedy Twoje SLOC przekraczają 200% oryginalnych SLOC projektu? 300%? Czy rozwidlony projekt jest jednym z wielu bibliotek lub modułów w twoim projekcie?
płyty grzewcze
@ hobs imo, kolejność informacji o prawach autorskich nie wskazuje wielkości wkładu, ale raczej chronologicznie podaje pochodzenie.
@TechnikEmpire Chronologiczny porządek ma sens, ale dla listy autorów, a nie informacji o prawach autorskich? Pomyślałem, że informacje o prawach autorskich mogą być lepiej uporządkowane według sekcji kodu, których dotyczą, oraz wartości / ilości tych sekcji w pakiecie. Przydaje się lista osób, z którymi należy się skontaktować, w kolejności pierwszeństwa, jeśli chcesz coś zmienić w licencji. Jeśli więc uzyskasz zgodę od kilku pierwszych, ale nie ostatnich, masz mniejszą ilość kodu do odtworzenia, jeśli zdecydujesz się wprowadzić zmianę. Zastanawiam się, co robi Linus?
płyty grzewcze