Dichiarazione di più licenze in un progetto GitHub

17

Per anni, sono stato un grande fan di mettere le licenze su cose condivise online per rendere più facile agli altri determinare se e come poter riutilizzare le cose dette. Prima che GitHub iniziasse a "spingere" delicatamente i suoi utenti a includere i file LICENSE con i loro repository, non sapevo davvero come fare al meglio con il codice, in particolare il codice condiviso pubblicamente su GitHub! - ma ho provato a fare buon uso dei file LICENSE da allora.

Ora mi trovo nella situazione in cui ho lavorato a un piccolo progetto con altre persone, il che richiede la menzione di diverse licenze (a causa di librerie e codici di terze parti e file non di codice). Mentre i miei partner affrontano il problema piuttosto "sciatto" - mi è stato suggerito di "mettere il codice online così com'è, a nessuno interesserà" -, preferisco farlo correttamente. Il problema è: Non so come si dovrebbe fare riferimento a diverse (diverse) licenze su GitHub.

Ho visto diverse soluzioni su GitHub, ed è per questo che è difficile per me giudicare se questa risposta a una domanda leggermente diversa è autoritaria. Quello che mi piacerebbe sapere è quale dei seguenti - se c'è - è il più comune, o se ci sono altri modi per farlo.

  1. Crea un singolo file LICENSE e inserisci le descrizioni di tutte le diverse licenze. ( Domande : Se dovessero essere inseriti in un ordine particolare? Avvio del file con menzione dei nomi di tutte le licenze contenute all'interno, per una migliore panoramica)?
  2. Crea un file LICENZA per licenza utilizzato e dai un nome a LICENSE.md , LICENSE.LibNameA.md , LICENSE.AssetsB.md ecc. come suggerito nella risposta collegata. ( Domanda : la denominazione si baserebbe sui nomi dei progetti? Non sui nomi delle licenze? Se usassi più di una licenza per i materiali autofirmati, dovrei menzionarli tutti nella "principale" LICENSE.md ? In caso contrario, cosa farei invece?)
  3. Crea due file LICENZA : uno che elenca le licenze per i contenuti "principali", cioè tutti i codici / risorse creati da te stesso; uno per tutti i materiali di terze parti. ( Domande come sopra : esiste un particolare schema di denominazione da utilizzare e ordine in cui si elencano i materiali di terze parti?)

Infine, se ho compreso le varie spiegazioni di GitHub e i progetti riguardo all'API delle licenze correttamente, solo il file LICENSE 'principale' sarà essere preso in considerazione quando si determina la licenza di un repository (anche se non sono stato in grado di capire quale licenza sarebbe stata scelta se ne sono stati citati diversi).

    
posta Kay 12.12.2015 - 01:17
fonte

3 risposte

9

Puoi utilizzare qualsiasi meccanismo per includere le licenze che ti piacciono, purché sia chiaro a un visitatore del tuo progetto quale licenza è applicabile a quale parte del progetto.

La mia preferenza sarebbe:

  • Inserisci ogni libreria di terze parti che usi in una directory a parte. Questa directory dovrebbe contenere tutti file che fanno parte della distribuzione della libreria, inclusi i file di licenza e readme.
  • Nel tuo file di licenza, fai riferimento solo alla licenza del tuo codice
  • Nel file readme del tuo progetto, menziona quali librerie di terze parti utilizzi e quali licenze sono distribuite su ciascuna libreria. Per i dettagli della licenza completa, fare riferimento al file di licenza nella directory della libreria.
risposta data 12.12.2015 - 10:32
fonte
4

In una presentazione dei creatori SPDX ( slide 12 ), è molto chiaro:

Contenuto di LICENSE :

Apache-2.0 OR GPL-2.0-or-later

Potresti aggiungere due file LICENSE aggiuntivi: LICENSE.Apache-2.0 e LICENSE.GPL-2.0-or-later .

In tutti i casi, README.md deve contenere un SPDX identificatore di licenza:

SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later

Puoi farlo in questo modo:

## License

This work is dual-licensed under Apache 2.0 and GPL 2.0 (or any later version).
You can choose between one of them if you use this work.

'SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later'

Tieni presente che Apache-2.0 OR GPL-2.0-or-later e Apache-2.0 AND GPL-2.0-or-later fanno una grande differenza. Il primo significa che l'utente può scegliere tra entrambi (che è il caso normale!) E il secondo indica che l'utente deve rispettare le licenze . Vedi anche multi licenza su Wikipedia.

Nota che sto usando il nuovo (a partire da 2017-12-28 ) Elenco delle licenze SPDX 3.0 qui. Le versioni del 2017 avevano GPL-2.0 è identificatore per GPL 2.0, ma non era chiaro se ciò significava "solo GPL 2.0" o "GPL 2.0 o versioni successive".

    
risposta data 23.05.2018 - 20:20
fonte
1

Alla fine ho contattato direttamente il supporto di GitHub per quanto riguarda la mia domanda e hanno detto che era giusto citarli se ho chiarito che le loro risposte erano solo suggerimenti, consigli non .

Our team doesn't have any particular recommendations to offer at this time, but we'll make sure to ask around and update you if we have anything else to share!

La loro risposta originale offriva quanto segue:

One suggestion is to have one LICENSE file for the majority of your code, and add the text of the licenses for the rest of the 3rd party materials in your README file.

Another way is for each path to have its own LICENSE file when it makes sense. So if, for example, your repository has the following path: libs/awesome-lib-v2/ you could have libs/awesome-lib-v2/LICENSE.

In the latter case, you may want to mention that in the README file and/or the LICENSE file in your root.

You may also consider just using one LICENSE file in the root of your repository, and add subsections for any 3rd party material, code, et cetera.

    
risposta data 25.05.2018 - 01:27
fonte

Leggi altre domande sui tag