Mettere la licenza in ogni file di codice? [chiuso]


93

Trovo che sia inutilmente duplicato per averlo in ogni file di codice, ma lo vedo sulla maggior parte dei progetti open source. Devo fare lo stesso o includere solo una singola licenza al di fuori del codice?



1
Devi escludere la garanzia in ogni file sorgente, altrimenti potresti essere scoperto. (Si noti che un editor appropriato, come Vim, può essere facilmente configurato per ripiegare automaticamente il boilerplate di esclusione della garanzia fuori dalla vista.)
Evgeni Sergeev

Risposte:


74

Uno solo fuori codice, per favore! Non so degli altri, ma odio vedere la stessa cosa su ogni file.

Penso di averlo letto un paio di volte, semplicemente sfogliandolo.


10
Non sono d'accordo con Zifre. Qualsiasi licenza ripetuta in alto è irritante per me.
strager

49
È ragionevole e sensato identificare con quale licenza è stato rilasciato ciascun file sorgente, perché il file potrebbe essere separato dal resto del codice (riutilizzo - incoraggiato, in generale, dall'Open Source) e se il file non contiene informazioni sulla licenza , è più complicato risalire alla licenza corretta. Ma l'intera licenza in ogni file - no; sarebbe grottesco per GPL o LGPL. Come già suggerito, per le licenze brevi, è un fastidio avere il testo della licenza effettiva nel file, ma è un giudizio. Ma è ragionevole identificare con quale licenza è rilasciato.
Jonathan Leffler

14
Ho appena aggiornato le intestazioni dei file nel mio progetto per avere solo tre righe: copyright, nome della licenza e un URL al testo della licenza. Ha accorciato le mie intestazioni da 26 righe (BSD) a 3 righe. :)
Esko Luontola

3
@Esko: puoi inviare un campione? Non so cosa hai scritto per il copyright. Grazie.
Joan Venge,

6
Questa risposta è contrassegnata come soluzione, ma a mio parere la domanda è ancora aperta finché non abbiamo un no evidence for the legal situation. Perhaps a lawyer can add a link to a court decision.
Jonas Stein

25

EULA è il termine sbagliato qui, poiché le persone che guardano il codice sorgente di solito non sono utenti finali.

Legalmente, non fa alcuna differenza; il copyright non deve essere dichiarato esplicitamente.

Fondamentalmente, tutto ciò che ottieni è un minor rischio che le persone violino accidentalmente i termini della tua licenza. Dovrai decidere quanto è importante per te.

Direi che il miglior compromesso è inserire un'intestazione molto breve contenente un collegamento (URL assoluto e relativo all'interno del progetto) al testo completo della licenza in ogni file di codice sorgente. In questo modo, chiunque abbia a cuore la licenza sa dove trovarla (idealmente, le persone che sono disposte a pagare enormi canoni di licenza; sicuramente vuoi che quelle persone siano in grado di contattarti!)


Potrebbe non essere necessario che il copyright sia esplicito, ma che dire del copy-left?
Kekoa

1
@kekoav: il copyleft è meno restrittivo del copyright. Per impostazione predefinita, non puoi creare opere derivate.
Zifre

3
In una controversia, questo non sarebbe un argomento valido. Se ti viene detto che esiste una licenza e come recuperarla, non puoi trovare le barriere tecniche del sito che sono colpa tua che ti hanno impedito di vedere la licenza.
Lasse V. Karlsen

1
"Copyleft" è gergo per l'idea di base della GPL di "sovvertire" le restrizioni del copyright dall'interno, cioè usare i tuoi diritti come detentore del copyright per concedere una licenza a chiunque di utilizzare il tuo codice liberamente, ma costringerlo a rilasciare il LORO codice che è basato sul tuo con la stessa licenza.
Michael Borgwardt

2
Corretta; ma in questo contesto, come diceva Zifre, non importa. Se non conosci la licenza con cui è stato pubblicato un particolare pezzo di codice, devi presumere che non ti sia permesso di usarlo affatto. Quindi, come editore, non devi fare di più per far leggere la licenza alle persone.
Michael Borgwardt

14

No, non è necessario inserire la licenza in ogni file del codice sorgente.

Se guardi più da vicino, la maggior parte delle applicazioni FOSS non lo fa. Mettono una dichiarazione sul copyright all'inizio di ogni file e una breve frase che ti dice a quale licenza si trova il file e dove puoi trovare il testo completo della licenza. Di solito ti indirizzano al file COPYING o LICENSE contenente il testo completo della licenza e / o un sito Web che contiene il testo completo (nel caso in cui il file COPYING non sia più presente).

Come ha detto Michael Borgwardt nelle sue risposte, legalmente non devi farlo. Ma è consigliabile per il codice sorgente che si intende distribuire poiché le persone possono vedere immediatamente chi ha il copyright e qual è la licenza.


1
Questo. L'avviso di copyright dovrebbe includere un riferimento al nome della licenza (se è standard) e una descrizione di come trovare il file di licenza nell'albero dei sorgenti.
jmucchiello

13

Potrebbe dipendere dalla licenza. La GPL distingue tra preambleelicense . Afferma chiaramente che il (fastidioso) preambolo deve essere parte del codice :

Posso omettere il preambolo della GPL o le istruzioni su come usarlo sui propri programmi, per risparmiare spazio?

Il preambolo e le istruzioni sono parte integrante della GNU GPL e non possono essere omessi. In effetti, la GPL è protetta da copyright e la sua licenza consente solo la copia letterale dell'intera GPL. (Puoi usare i termini legali per fare un'altra licenza ma non sarà la GNU GPL.) (1)

Fonte: 1) http://www.gnu.org/licenses/gpl-faq.html#GPLOmitPreamble

Vedi anche http://softwarefreedom.org/resources/2012/ManagingCopyrightInformation.html

Un ebook gratuito di ifrOSS spiega e commenta la GPL 2 in lingua tedesca. Ce n'è un altro per GPL 3

Per una risposta fondata dovresti chiedere una consulenza legale che non è disponibile su sx. Se non riesci a trovare un avvocato per il tuo progetto (open source), dai un'occhiata alla rete legale di FSFE .


7
Preambolo e istruzioni fanno parte della licenza completa , ma nulla dice che devi inserire la licenza completa in ogni file. [...] attach the following notices to the program.- i seguenti avvisi sono solo una piccola sezione della licenza completa. safest to attach them to the start of each source file- più sicuro ma non richiesto. each file should have at least the "copyright" line and a pointer to where the full notice is found. - l'unico requisito è la riga del copyright con un puntatore al resto. Va bene mettere la licenza completa in un file separato.
toxalot

3
E direi che dovrebbe ! = Deve .
toxalot

7

Penso che il ragionamento alla base dell'inserimento in ogni file sia legale. Se l'accordo si trova in ogni file, non c'è possibilità che qualcuno inciampi in un pezzo di codice senza essere esposto alla licenza.

Potrebbe non essere buono, ma tutti i grandi lo usano, quindi se è solo dolore visivo, cercherò una ragione migliore per non fare lo stesso.

Se stai usando la GPL questo è più un problema, ma se stai usando licenze di dominio pubblico come BSD o MIT, non penso che ti interessi davvero quello che le persone fanno con il codice comunque. Suppongo che dipenda da quanto sia rigida la tua licenza.


1
Bene, in quel caso, indica in ogni file che continuando con esso, accetti la licenza nel file licence.txt. Ma non copiare / incollare lo stesso testo in ogni file. A volte trovo file con codice più breve della licenza.
Rook

Sì, sono d'accordo sul fatto che funzioni altrettanto bene in questo modo, soprattutto per le licenze lunghe. Anche se potrebbe non essere legalmente essenziale, o addirittura sostenibile in tribunale, un riferimento alla tua licenza è per lo meno buono per informare le persone senza che debbano cercare in giro per quale licenza si trova il codice.
Kekoa

3

IANAL,

Supponendo che tu stia parlando di licenze, non di EULA, puoi mettere la licenza all'esterno. Questo è quasi sempre fatto con licenze molto lunghe come la GPL. Sarebbe sciocco mettere l'intera licenza GPL in ogni file. Di solito dovresti avere solo un tipo di avviso che dice dove puoi trovare la licenza effettiva. Questo è perfettamente legale. Tuttavia, con licenze molto brevi come BSD / Apache / MIT / qualunque cosa, è più semplice includere la licenza in ogni file, poiché l'avviso che dice dove trovare la licenza sarebbe lungo quasi quanto la licenza stessa.


2

Dipende da cosa impone la licenza. La GPL, ad esempio, ti dice di mettere un breve avviso in ogni file sorgente, includere l'intera licenza da qualche parte nella tua distribuzione sorgente e rendere la tua distribuzione sorgente disponibile a chiunque ottenga una copia della distribuzione binaria.

Se non sei d'accordo con questo, ed è il TUO codice, sei libero di scegliere una licenza più gradevole o crearne una tua.


1

Se il tuo codice verrà compilato in modo da distribuire solo un file binario, allora non ha importanza. Perché quando crei un file binario, i commenti vengono rimossi prima che abbia luogo il processo di compilazione. È importante solo se distribuirai il codice sorgente effettivo sia open source che closed source. Questo tipico è importante se distribuirai un'applicazione in un linguaggio di scripting che non si compila.


Grazie. Sarà open source.
Joan Venge

Puoi creare una stringa hardcoded per contenere la licenza, quindi apparirà nel file binario, ma probabilmente è troppo :).
Liran Orevi

1

Non è necessario per la licenza, un singolo file esterno andrà bene fintanto che è chiaro quali file copre.

Tuttavia per il copyright dovresti avere l'avviso di copyright su ogni parte di testo.


Grazie, quindi il copyright è diverso?
Joan Venge,

INAL ma una licenza è un contratto tra te e l'utente / cliente. Il copyright è un'affermazione di proprietà di una parte di un'opera scritta. Qualcuno potrebbe raccogliere un frammento del tuo codice e ragionevolmente affermare che non era protetto da copyright perché mancava l'avviso. Non preoccuparti però "Copyright Joe Soap (Cleansoft Inc.)" è tutto ciò di cui hai bisogno.
James Anderson,

10
Ti sbagli di grosso su questo. Sebbene sia generalmente bene aggiungere avvisi di copyright ovunque solo per essere chiari, ma questo non rende un gioco equo "presumere che non fosse protetto da copyright" perché sai che TUTTO è protetto da copyright. Quando qualcuno ottiene il codice sorgente, potrebbe trovare una dichiarazione di licenza che gli consente di usarlo, oppure potrebbe scoprire che è di dominio pubblico per un motivo o per l'altro. In caso contrario, è protetto da copyright e non può essere copiato. Il copyright è una cosa automatica ed è bene menzionarlo, ma non farlo non significa perderlo ...
Jasper

1

Quello che faccio è inserire un commento di due righe nella parte superiore del file, indicando il nome della mia azienda, la data dell'ultima revisione e il nome della licenza del file di origine, quindi in fondo al file una versione breve del licenza.

Naturalmente, la licenza completa (tutte in caso di licenze multiple) è sempre inclusa nel file sorgente e nelle directory di rilascio.


3
come automatizzate la data dell'ultima revisione?
Dustin Getz
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.