Devi includere un avviso di licenza con ogni file sorgente?

100

Ho cercato varie licenze che posso utilizzare per un mio progetto open-source, ma tutti i progetti che ho visto, con tutti i tipi di licenze, sembrano avere un gigante, odioso (in la mia opinione) avviso in ogni file sorgente che afferma che il file è elencato sotto una determinata licenza. Non penso di aver trovato un progetto a sorgente singola non di pubblico dominio che non abbia un avviso del genere.

Questo sembra solo uno spreco di tempo e spazio per i file. Ho intenzione di inserire i tag @license e @author nei miei progetti, ma non vedo perché devo elencare un avviso così gigantesco in ogni singolo file se non voglio rendere pubblico il mio codice.

C'è qualche motivo per cui vorrei includere tale avviso nei miei progetti o semplicemente includere un avviso nel README e un tag @license essere abbastanza buono? Ciò influisce sulla regola "chiaramente dichiarata" della maggior parte delle licenze, o è semplicemente eccessivo in modo che le persone non litighino?

    
posta RétroX 18.12.2011 - 17:19
fonte

7 risposte

39

A mio avviso, la GPLv3 suggerisce strongmente (o forse addirittura richiede, almeno che come capisco il text Come applicare questi termini ai nuovi programmi , dopo la sua sezione 17) un avviso di copyright in ogni file sorgente. Dice

To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found.

<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year>  <name of author>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

E i progetti GNU che sono di proprietà di FSF, come GCC, hanno un avviso simile in ogni file.

So anche di un programma (il sistema CAIA di J.Pitrat) che è stato rifiutato su un sito Web della comunità di software libero perché non aveva tale avviso in ogni file.

Non sono un avvocato , ma credo che tale avviso sia praticamente obbligatorio in ogni file sorgente di un programma GPLv3 .

(se usi un'altra licenza, in particolare una non FSF, leggi attentamente come applicarla; YMMV; comunque AFAIK scrivendo un avviso in ogni file non danneggerà.)

    
risposta data 18.12.2011 - 17:51
fonte
32

Ho visto molti progetti che menzionano solo la licenza nel file README o in un file LICENZA o COPIA.

Il tuo software è automaticamente coperto da copyright, come concordato nel diritto internazionale. (A meno che non lavori per il governo degli Stati Uniti o qualche altra organizzazione per la quale il copyright non si applica.)

Se qualcuno utilizza il tuo software, deve accertarsi di seguire il contratto di licenza o seguire le restrizioni sull'uso corretto su ciò che può fare.

Supponiamo che quella persona voglia utilizzare uno dei file nella distribuzione del codice, che ovviamente richiede una copia e quindi si applica la legge sul copyright. Di default NON hanno il diritto di usare il tuo software secondo la legge sul copyright. È solo quando sanno e seguono le restrizioni della licenza che sono autorizzati a usarlo.

Quindi, se usano un file senza una licenza software, violano la legge sul copyright. Poiché tutte le licenze dicono qualcosa come "La suddetta nota sul copyright e questa nota di autorizzazione devono essere incluse in tutte le copie o parti sostanziali del Software", sono obbligate a mettere questa licenza da qualche parte.

Questo può essere nel file stesso, o quando ho usato il codice come libreria ho inserito le parti rilevanti nella sua directory e aggiunto un "README" o "LICENCE" in quella sottodirectory.

In breve, non è necessario inserire la licenza in ogni file. Penso che sia eccessivo. Non c'è alcuna protezione legale aggiuntiva nel farlo. Aiuta un utente downstream in qualche modo, ma non di molto.

Penso che la tradizione di molti metadati basati sui commenti (licenza, data di creazione di ogni funzione, registro delle modifiche, ecc.) siano tradizioni molto antiche che esistono perché sono facili da fare e che più un talismano che utile.

Ad esempio, il modello Eclipse predefinito aggiunge quelli che considero come metadati inutili prima di ogni funzione, il che penso sia catturato molto meglio dal controllo della versione. Ma questa pratica è comune in molti negozi.

    
risposta data 18.12.2011 - 17:50
fonte
10

Il problema è che è molto facile dis-aggregare un singolo file di codice sorgente dal suo progetto più grande, come qualcuno che sta appena verificando, invia via email, scarica un file, senza il resto che contiene il copyright completo. E poi quel file può essere trasmesso ad-infinitum in tempo, a terzi che potrebbero non avere idea delle origini dei file.

L'avviso sul copyright in alto ricorda a chiunque attraversi quel file solitario che è di fatto protetto da copyright, non di dominio pubblico e quindi alcune licenze possono o non possono essere coinvolte nella sua distribuzione o utilizzo. Versus lasciando che il finder faccia le proprie ipotesi casuali.

    
risposta data 19.12.2011 - 04:15
fonte
8

Non esiste una riunione superpotenziale segreta in un bunker sotterraneo che dice cosa devi mettere in ogni file sorgente.

Rende chiaro all'utente che questo file è sotto qualsiasi licenza e in effetti la maggior parte del software GPL contiene un breve preambolo che dice di leggere license.txt. Ricorda che i progetti vengono suddivisi e i file vengono riutilizzati, quindi non è consigliabile inserire il messaggio in un singolo file.

Se nell'improbabile eventualità in cui fosse mai andato in tribunale avresti avuto più reclami se avessi contrassegnato chiaramente ogni file come lavoro e quale licenza fosse in uso - allora nessuno potrebbe sostenere che pensavano che questo file non fosse coperto

    
risposta data 18.12.2011 - 17:27
fonte
6

C'è una differenza tra licenza e preambolo .

In alcuni dei miei progetti sto usando la GNU General Public License, Versione 3.0 . La GNU GPL rende necessario avere un preambolo su ogni file di codice sorgente:

The preamble and instructions are integral parts of the GNU GPL and may not be omitted.

Fonte: link

Quindi ecco cosa faccio:

1. Aggiungi License.txt

Per seguire le regole ho inserito un LICENSE.txt nella radice del repository del mio progetto. Questo è anche suggerito da GitHub (vedi " Dove vive la licenza ").

2. Aggiungi preambolo utilizzando la piegatura automatica

Successivamente includo il preambolo GPL sopra ogni file di codice sorgente MA per renderlo difficilmente disturbante. Lo nascondo nell'IDE. La maggior parte degli IDE ha una funzione per piegare automaticamente i blocchi di codice. NetBeans supporta il Custom Code Folding e WebStorm supporta commentando anche i commenti .

Ecco come appare:

//<editor-fold desc="Preamble">
/*
 * Company Name
 * Copyright (C) 2016 Company Name
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * ...
 */
//</editor-fold>

console.log('Here is my licensed JavaScript code.');

Penso che questo sia un ottimo compromesso tra comodità e sicurezza legale.

Se hai molti progetti in cui devi aggiungere una licenza, il link potrebbe essere di aiuto.

Nota: il mio consiglio si riferisce a GPLv3. Altri tipi di licenza potrebbero non richiedere un preambolo.

    
risposta data 12.07.2016 - 18:52
fonte
3

Ho quasi postato una domanda molto simile. Meno sui fastidi e altro sui dettagli tecnici. TL; DR: Credo che la risposta sia una questione delle priorità dell'autore. Forse l'intento sarebbe più accurato delle priorità ...

Credo che sia corretto fare riferimento a una licenza nella tua fonte, a seconda della tua definizione di "okay". Ammettiamo che il termine "non accompagnato" indica un file sorgente che fa parte di un progetto che è stato spietatamente separato dal suo amabile codice base. Detto file contiene una riga come questa:

# This file is covered by the LICENSING file in the root of this project.

O una linea molto più cool come questa:

* @license OMGBBQ <http://goodlics.com/bbq>

"Ma aspetta!" , esclamai, "hai appena detto che il file è stato separato dal suo progetto! E goodlics.com reindirizza a un dominio squatter! Hai ragione, l'ho detto, ma che potrebbe stare bene e smettere di urlarmi contro. Ecco il mio ragionamento non-avvocato:

  • Quasi tutti i paesi hanno accettato di [sentire] la Convenzione di Berna, che AFAIK significa che se crei qualcosa, ne hai il copyright, punto. Non hai bisogno di una (c) linea o di qualche cagata come quella, ma quella roba (più un VCS di terze parti come GitHub) rende più facile a dimostrare che lo hai creato e quando l'hai creato.
  • Pertanto, se pubblichi online un codice succoso del 1337 che hai creato, ne hai il copyright. A nessuno è permesso (legalmente) copiarlo. È raro e scioccante, lo so, ma a volte ho sentito che le persone infrangono la legge. È ancora possibile.
  • Quel fantastico file nyancat-bcminer-algo.qbasic che hai scritto e pubblicato su LiveJournal è, credici o no, non di dominio pubblico. A meno che tu dici sia di pubblico dominio. Di default è tuo e tuo solo. E '... Precious . (Almeno per 25-50 anni +, a meno che tu non sia Disney.)
  • Le persone comunicano in modo convenzionale questo intento (rendendo alcuni o tutti i diritti non solo tuoi e tuoi) tramite licencings, ma devi annunciare tale intento; è opt-in opt-out (HAHA OTTIENI? optando per l'opt-out del tuo copyright? ECCEZIONALE). Prendi i tuoi biglietti, siamo quasi arrivati!
  • Se è corretto che i suddetti file non accompagnati sono di dominio privato, ovvero non legalmente copiabili, l'utilizzo di un riferimento potenzialmente interrotto è perfettamente corretto. Tuttavia, se non è corretto , allora penso che sia necessario includere il testo della licenza all'interno di ogni file sorgente. In questo modo, i file non accompagnati sono ancora sicuri di essere concessi in licenza come preferisci - intesi . Sì, è meglio.

Questo ragionamento fa due ipotesi epiche e probabilmente non valide:

  • Un riferimento alla licenza "rotto" ricade sul comportamento predefinito (protetto da copyright), che potrebbe non essere un presupposto valido.
  • Il sito su cui hai pubblicato non ha una sorta di politica di pubblicazione (come StackExchange) che rende tutto di dominio pubblico.

Grazie per aver guidato le vie aeree del cervello delle scimmie.

Dichiarazione di non responsabilità: mi sembra logico che io sia sicuro al 90% di avere sbagliato al 100%.

    
risposta data 08.07.2016 - 03:50
fonte
2

C'è un altro modo pratico non ancora menzionato qui.

% tagSPDX-License-Identifier. link

Usandolo, il tuo "standard legale" in ogni intestazione del file sorgente si riduce a due sole righe:

/* SPDX-License-Identifier: (GPLv3-or-later AND LGPL-2.0-only) WITH bison-exception */
/* Copyright © 1234 Project Author */
    
risposta data 23.11.2018 - 10:13
fonte

Leggi altre domande sui tag