Qual è il modo giusto per fork / riutilizzare il codice da un progetto open source?


22

Diciamo che sto lavorando a un progetto open source e voglio riutilizzare una banale funzione di utilità da un altro progetto open source (ad esempio, una funzione di ricerca / sostituzione di file). È legale copiare la funzione e semplicemente scrivere una piccola nota sul copyright nella parte superiore del file? Devo includere il loro nome come detentore del copyright dell'intero progetto nella licenza?

Allo stesso modo, diciamo che forzo un progetto open source. Dove e come posso specificare che il copyright è condiviso sia dal titolare del copyright originale che da me stesso?

Immagino che la risposta debba variare in qualche modo in base alla licenza open source, ma vorrei una risposta generale il più possibile.

PS: sono principalmente preoccupato per l'aspetto legale, ma sentiti libero di includere il tuo punto di vista etico.


1
Qual è la licenza del progetto in questione e il progetto che stai rilasciando? Sì, è possibile utilizzare il codice, ma si prega di essere più specifici in modo che possiamo informarvi meglio delle vostre esigenze ai sensi della licenza in uso.
Tim Post

1
@Tim Post: è principalmente una domanda teorica ma se può aiutare supponiamo che entrambi i progetti abbiano una licenza GPL poiché è molto comune.
Olivier Lalonde,

Risposte:


25

Sto cercando di rendere questa risposta il più possibile 'meta' applicabile.

Utilizzo di frammenti / bit di altri progetti

Contrassegna chiaramente il codice con il copyright dell'autore originale. Assicurati che la tua licenza preferita sia pienamente compatibile con la licenza del codice che stai utilizzando. Avrai bisogno dell'autorizzazione dell'autore per spostare il codice su una licenza diversa (a meno che non ti consenta specificamente di farlo, vale a dire "GPL 2 o versione successiva")

Il tuo programma dovrebbe avere un file AUTHORS (o simile), in cui elenchi tutti i collaboratori e le cose che hai usato da altri progetti.

Forking un progetto

Per ogni modulo che cambi sostanzialmente , aggiungi il tuo copyright sotto l'autore originale. La stessa cosa vale per le licenze, sei vincolato dai termini della licenza che era in vigore quando l'hai biforcata. Se il progetto dice "Solo GPL2", devi rispettarlo, non puoi andare su GPL3 senza il loro permesso.

Ciò varia notevolmente a seconda della licenza in uso. La QPL afferma che è possibile distribuire le modifiche solo nel formato patch, ad esempio, quindi assicurarsi di comprendere i termini che consentono di distribuire versioni modificate del software.

Oltre a ciò, preserva sempre il copyright. Se aggiungi il tuo copyright a ciò che esiste, assicurati di contrassegnare chiaramente ciò che stai rivendicando.


A volte puoi aggiungere licenze. Supponiamo di voler utilizzare una funzione BSD in un progetto GPL: non puoi rimuovere la licenza BSD, ma è compatibile con la GPL, quindi puoi emettere l'intero progetto sotto la GPL e notare che la funzione è anche sotto la BSD licenza. Sarebbe educato rilasciare tutte le modifiche apportate al codice con licenza BSD ai sensi del BSD.
David Thornley,

@ David - L'OP ha voluto una risposta generica (da qui la mia sollecitazione a ricercare le licenze). Hai ragione. TUTTAVIA, è "bello" duplicare in licenza qualsiasi modifica apportata al codice BSD, quindi gli autori originali possono effettivamente utilizzarlo se lo desiderano.
Tim Post

1
A che punto il file di licenza principale deve avere la tua nota sul copyright al di sopra degli autori originali? Quando i tuoi SLOC superano il 200% degli SLOC del progetto originale? 300%? Se il progetto che hai biforcato finisce per essere una delle tante librerie o moduli all'interno del tuo progetto?
Piani cottura

@hobs imo, l'ordine di notifica del copyright non è un'indicazione dell'entità del contributo, ma piuttosto dettaglia cronologicamente le origini.

@TechnikEmpire L'ordine cronologico ha senso, ma per un elenco di collaboratori piuttosto che un avviso sul copyright? Ho pensato che le notifiche sul copyright potessero essere organizzate meglio in base alle sezioni di codice a cui si applicano e al valore / quantità di quelle sezioni nel pacchetto. È utile avere un elenco delle persone che è necessario contattare, in ordine di priorità, se si desidera modificare qualcosa sulla licenza. Pertanto, se si ottiene l'autorizzazione dai primi, ma non dall'ultimo, è necessario ricreare una quantità minore di codice se si è determinati a apportare la modifica. Mi chiedo cosa faccia Linus?
Piani cottura
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.