Come scegliere una licenza Open Source per un framework RAD su GitHub

In questo articolo parleremo un po' di diritti d'autore, ma principalmente della scelta di una licenza libera per un framework RAD IONDV. Framework e per i prodotti open source basati su di esso. Discuteremo della licenza permissiva Apache 2.0, di cosa ci ha portato a sceglierla e quali decisioni abbiamo affrontato nel processo.

Il processo di scelta della licenza è piuttosto complesso e bisogna affrontarlo con una buona preparazione, e se non sei un fortunato possessore di una laurea in giurisprudenza, ti troverai di fronte a un mare di informazioni su diverse licenze libere. La cosa principale da fare è stabilire una serie di criteri restrittivi. Durante la discussione e la riflessione, tu e il tuo team potrete capire cosa desiderate permettere agli utenti del vostro prodotto e cosa vietare. Quando avrete già una descrizione, sarà necessario sovrapporla alle licenze esistenti per identificare quella in cui il numero maggiore di punti coincide. Sembra semplice, certo, ma nella realtà, di solito, anche dopo aver discusso, rimangono domande.

Come scegliere una licenza Open Source per un framework RAD su GitHub

Per prima cosa — un link a choosealicense.com, un sito utile che abbiamo utilizzato attivamente. Fai particolare attenzione alla tabella comparativa delle licenze secondo 13 criteri principali. Che l'inglese e la pazienza siano con te.

Il tormento della scelta

Iniziamo con le caratteristiche generali delle licenze per il software open source. L'OSS implica esclusivamente una licenza libera che non limita la distribuzione commerciale e non commerciale secondo il modello Open Core. Pertanto, pubblicando online software sotto licenza libera, non è possibile limitare completamente la sua trasmissione, distribuzione e vendita da parte di terzi, e bisogna solo prepararsi moralmente a questo.

Una licenza libera dà all'utente il diritto di partecipare personalmente alla reverse engineering del software o modificarlo in altri modi accessibili. La maggior parte delle licenze non consente di rinominare il prodotto o di apportare qualsiasi modifica che alteri i diritti dell'autore e/o del proprietario del sistema.

Le principali domande che ci interessavano riguardo le licenze libere erano:

  1. Le modifiche apportate al software devono essere registrate e non hanno alcuna relazione con il titolare dei diritti del sistema?
  2. Il nome del software derivato non deve corrispondere al nome del software del detentore dei diritti?
  3. È possibile modificare la licenza per le nuove versioni in un'altra, inclusa quella proprietaria?

Esaminando attentamente l'elenco delle licenze più comuni, abbiamo scelto alcune che abbiamo esaminato più in dettaglio. Le licenze potenziali per IONDV. Framwork erano: GNU GPLv3, Apache 2.0, MIT e MPL. MIT abbiamo subito escluso, poiché si tratta di una licenza permissiva non copyleft che permette l'uso, la modifica e la distribuzione del codice praticamente senza restrizioni. Non ci soddisfaceva, poiché volevamo che la licenza regolasse i rapporti tra il detentore dei diritti e l'utente. La maggior parte dei progetti non troppo grandi su GitHub è rilasciata sotto licenza MIT o sue varie forme. La licenza stessa è molto breve e l'unico divieto è l'attribuzione al creatore del software.

La successiva è stata la licenza MPL 2.0. Ammettiamo che non ci siamo arrivati subito, ma dopo un'analisi più approfondita l'abbiamo rapidamente esclusa, poiché il principale svantaggio è che la licenza si applica non all'intero progetto, ma a file singoli. Inoltre, se un utente modifica un file, non può cambiare la licenza. In effetti, per quanto diligentemente tu possa modificare un progetto open source, non potrai monetizzarlo a causa di questa licenza. Questo, tra l'altro, non riguarda il titolare del copyright.

Un problema simile persiste anche con la licenza GNU GPLv3. Essa richiede che ogni file rimanga sotto la stessa licenza. GNU GPL è una licenza copyleft che richiede che i codici sorgente delle opere derivate siano aperti e rimangano sotto questa stessa licenza. Quindi: modificando due righe di codice, sarai costretto a registrare le tue modifiche e nel successivo utilizzo o distribuzione dovrai mantenere il codice sotto GNU GPL. In questo caso, è un fattore limitante per l'utente del nostro progetto, non per noi. Ma è vietato cambiare la GPL con qualsiasi altra licenza, anche all'interno delle versioni GPL. Ad esempio, se cambi LGPL (estensione su GPL) su GPL, non ci sarà alcun ritorno a LGPL. Questo punto è stato decisivo nel voto contro.

In generale, la nostra scelta inizialmente tendeva verso GPL3 proprio a causa della distribuzione del codice modificato sotto la stessa licenza. Pensavamo che in questo modo avremmo potuto proteggere il nostro prodotto, ma abbiamo percepito meno rischi in Apache 2.0. Secondo la Free Software Foundation, GPLv3 è compatibile con Apache License v2.0, il che significa che c'è sempre la possibilità di cambiare la licenza da Apache License v2.0 a GPL v3.0.

Apache 2.0

Apache 2.0 — licenza permissiva bilanciata con un focus sui diritti d'autore. Ecco quali risposte ha fornito alle domande che ci interessano. Le modifiche apportate al software devono essere documentate e non hanno alcuna relazione con il titolare dei diritti del sistema? Sì, tutte le modifiche devono essere registrate e non ci assumiamo responsabilità per il codice sorgente o per le modifiche apportate. Il file con le modifiche deve essere allegato al codice in cui sono state effettuate queste modifiche. Il nome del software derivato non deve coincidere con il nome del software del titolare dei diritti? Sì, il software derivato deve avere un nome diverso e un marchio diverso, ma deve citare il reale autore. È possibile cambiare la licenza per eventuali nuove versioni in un'altra, anche in una proprietaria? Sì, è possibile rilasciarlo sotto licenze diverse, l'Apache 2.0 non limita l'uso di licenze commerciali e non commerciali.

Inoltre, rilasciando nuovi prodotti basati su codice aperto sotto Apache 2.0 o prodotti con funzionalità aggiuntive, non è necessario utilizzare la stessa licenza. Di seguito puoi vedere un'immagine con i termini e le condizioni della licenza Apache 2.0.

Come scegliere una licenza Open Source per un framework RAD su GitHub

La licenza prevede l'obbligo di mantenere e menzionare i diritti d'autore e la licenza sotto cui viene rilasciato il software. È obbligatoria la presenza dell'avviso di copyright che, con il nome del titolare dei diritti e la licenza, protegge i diritti dell'autore originale del software; anche se il software viene rinominato, trasferito o venduto sotto un'altra licenza, il segno dell'autore rimarrà. A tal fine, è possibile utilizzare anche un file NOTICE e allegarlo al codice sorgente o alla documentazione del progetto.

Rilasciamo in accesso pubblico su GitHub tutti i nostri prodotti sotto licenza Apache 2.0, ad eccezione di IONDV. War archive, il cui codice sorgente è stato pubblicato ad aprile di quest'anno sotto licenza GPLv3 su GitHub dal Centro Tecnologico Sociale del Far East. Attualmente, oltre al framework e ai suoi moduli pubblicati applicativi realizzati sul framework. Su Habr abbiamo già parlato di Sistema di gestione dei progetti e di Registro delle comunicazioni.

Dettagli tecnici sul framework

IONDV. Framework – un framework open source su node.js per la creazione di applicazioni web di alto livello basate su metadata, che non richiede competenze di programmazione avanzate.

La funzionalità principale dell'applicazione si basa su un registro dati — il modulo Registro. Questo è un modulo chiave, progettato specificamente per l'elaborazione di dati in base a strutture di metadati, inclusa la gestione di progetti, programmi, eventi e altro. Inoltre, il progetto utilizza un modulo portale per visualizzare modelli di dati arbitrari – qui è implementato il front-end del registro delle pratiche archivistiche.

Per il database si utilizza MongoDb — qui vengono memorizzati sia le impostazioni dell'applicazione che i metadati e i dati stessi.

Come applicare la licenza al proprio progetto?

Aggiungi un file LICENSE con il testo della licenza nel repository del tuo progetto e voilà, il progetto è protetto da Apache 2.0. È necessario indicare il titolare dei diritti, che corrisponde a copiright notice. È possibile farlo nel codice sorgente o nel file NOTICE (un file di testo che elenca tutte le librerie coperte dalla licenza Apache insieme ai nomi dei loro autori). Puoi mettere il file nel codice sorgente o nella documentazione distribuita insieme al lavoro. Ecco come appare da noi:

Copyright © 2018 LLC «ION DV».
Licensed under the Apache License, Version 2.0

Testo della licenza Apache 2.0

Apache License
Versione 2.0, Gennaio 2004
http://www.apache.org/licenses/

TERMINI E CONDIZIONI PER USO, RIPRODUZIONE E DISTRIBUZIONE

  1. Definizioni.

    «Licenza» indica i termini e le condizioni per l'uso, la riproduzione,
    e la distribuzione come definiti dalle Sezioni 1 a 9 di questo documento.

    «Licenziante» indica il titolare del copyright o l'entità autorizzata dal
    titolare del copyright che concede la Licenza.

    «Entità Legale» indica l'unione dell'entità operante e di tutte le
    altre entità che controllano, sono controllate da, o sono sotto controllo comune
    con quell'entità. Ai fini di questa definizione,
    «controllo» significa (i) il potere, diretto o indiretto, di causare la
    direzione o gestione di tale entità, sia per contratto che
    altre modalità, o (ii) la proprietà di almeno cinquanta percento (50%) o più delle
    azioni in circolazione, o (iii) la proprietà sostanziale di tale entità.

    «Tu» (o «Tuo») indica un individuo o un'Entità Legale
    che esercita i diritti concessi da questa Licenza.

    La forma «Fonte» indica la forma preferita per apportare modifiche,
    inclusi ma non limitati al codice sorgente software, documentazione
    sorgente e file di configurazione.

    La forma «Oggetto» indica qualsiasi forma risultante da trasformazione
    meccanica o traduzione di una forma Source, inclusi ma
    non limitati al codice oggetto compilato, documentazione generata,
    e conversioni in altri tipi di media.

    «Opera» indica l'opera di autorialità, sia in forma Source che
    Object, resa disponibile sotto la Licenza, come indicato da un
    avviso di copyright incluso o allegato all'opera
    (un esempio è fornito nell'Appendice qui sotto).

    «Opere Derivate» indica qualsiasi opera, sia in forma Source che Object
    che è basata su (o deriva da) l'Opera e per la quale le
    revisioni editoriali, annotazioni, elaborazioni o altre modifiche
    rappresentano, nel loro complesso, un'opera originale di autorialità. Ai fini
    di questa Licenza, le Opere Derivate non includeranno opere che rimangono
    separabili da, o semplicemente collegano (o legano per nome) alle interfacce di,
    l'Opera e le Opere Derivate di essa.

    «Contributo» indica qualsiasi opera d'autore, inclusa
    la versione originale dell'Opera e qualsiasi modifica o aggiunta
    a quell'Opera o Opere Derivative, che è intenzionalmente
    inviata al Licenziante per l'inclusione nell'Opera dal proprietario dei diritti d'autore
    o da un individuo o Entità Legale autorizzata a inviare per conto del
    proprietario dei diritti d'autore. Ai fini di questa definizione, «inviato»
    significa qualsiasi forma di comunicazione elettronica, verbale o scritta inviata
    al Licenziante o ai suoi rappresentanti, incluse, ma non limitate a
    comunicazioni su liste di distribuzione elettroniche, sistemi di controllo del codice sorgente,
    e sistemi di tracciamento delle problematiche gestiti da, o per conto di, il
    Licenziante per discutere e migliorare l'Opera, ma
    escludendo comunicazioni che sono chiaramente contrassegnate o diversamente
    designate per iscritto dal proprietario dei diritti d'autore come «Non un Contributo.»

    «Contributore» indica il Licenziante e qualsiasi individuo o Entità Legale
    per conto del quale un Contributo è stato ricevuto dal Licenziante e
    successivamente incorporato nell'Opera.

  2. Concessione di Licenza per il Copyright. Soggetto ai termini e alle condizioni di
    questa Licenza, ciascun Contributore concede qui a Te una licenza di copyright perpetua,
    mondiale, non esclusiva, senza costi, royalty-free, irrevocabile
    per riprodurre, preparare Opere Derivative,
    visualizzare pubblicamente, eseguire pubblicamente, sublicenziare e distribuire l'
    Opera e tali Opere Derivative in forma Fonte o Oggetto.

  3. Concessione di Licenza per Brevetto. Soggetto ai termini e alle condizioni di
    questa Licenza, ciascun Contributore concede qui a Te una licenza di copyright perpetua,
    mondiale, non esclusiva, senza costi, royalty-free, irrevocabile
    (salvo quanto indicato in questa sezione) licenza per brevetto per fare, far fare,
    usare, offrire in vendita, vendere, importare, e trasferire diversamente l'Opera,
    dove tale licenza si applica solo a quelle rivendicazioni di brevetto concedibili
    da tale Contributore che sono necessariamente violate dalle loro
    Contribuzioni o dalla combinazione delle loro Contribuzioni
    con l'Opera alla quale tali Contribuzioni sono state presentate. Se Tu
    avvii una causa di brevetto contro qualsiasi entità (incluso un
    controversia o controdomanda in una causa legale) che sostiene che l'Opera
    o un Contributo incorporato nell'Opera costituisca una violazione diretta
    o indiretta di brevetto, allora eventuali licenze sui brevetti
    concesse a Te ai sensi di questa Licenza per quell'Opera termineranno
    a partire dalla data in cui tale contenzioso viene intentato.

  4. Redistribuzione. Puoi riprodurre e distribuire copie dell'
    Opera o Opere Derivate in qualsiasi mezzo, con o senza
    modifiche, e in forma Sorgente o Oggetto, a condizione che Tu
    rispetti le seguenti condizioni:

    (a) Devi fornire a qualsiasi altro destinatario dell'Opera o
    Opere Derivate una copia di questa Licenza; e

    (b) Devi far sì che qualsiasi file modificato porti avvisi evidenti
    che dichiarano che hai modificato i file; e

    (c) Devi mantenere, nella forma Sorgente di qualsiasi Opera Derivata
    che distribuisci, tutte le notifiche di copyright, brevetto, marchio e
    attribuzione dalla forma Sorgente dell'Opera,
    escludendo quelle notifiche che non si riferiscono a nessuna parte di
    le Opere Derivate; e

    (d) Se l'Opera include un file di testo «NOTICE» come parte della sua
    distribuzione, allora qualsiasi Opera Derivata che distribuisci deve
    includere una copia leggibile delle notifiche di attribuzione contenute
    all'interno di tale file NOTICE, escludendo quelle notifiche che non
    si riferiscono a nessuna parte delle Opere Derivate, in almeno uno
    dei seguenti luoghi: all'interno di un file di testo NOTICE distribuito
    come parte delle Opere Derivate; all'interno della forma Sorgente o
    documentazione, se fornita insieme alle Opere Derivate; o,
    all'interno di un display generato dalle Opere Derivate, se e
    dove tali avvisi di terze parti appaiono normalmente. I contenuti
    del file NOTICE sono solo a scopo informativo e
    non modificano la Licenza. Puoi aggiungere le tue avvertenze di attribuzione
    nelle Opere Derivate che distribuisci, accanto
    o come un appendice al testo NOTICE dell'Opera, a condizione
    che tali ulteriori avvertenze di attribuzione non possano essere interpretate
    come modifiche alla Licenza.

    Puoi aggiungere una tua dichiarazione di copyright alle tue modifiche e
    puoi fornire termini e condizioni di licenza aggiuntivi o diversi
    per l'uso, la riproduzione o la distribuzione delle tue modifiche, o
    per eventuali Opere Derivate nel loro complesso, a condizione che il tuo uso,
    la riproduzione e la distribuzione dell'Opera altrimenti siano conformi a
    le condizioni stabilite in questa Licenza.

  5. Invio di Contributi. A meno che tu non indichi esplicitamente il contrario,
    qualsiasi Contributo inviato intenzionalmente per l'inclusione nell'Opera
    da parte tua al Licenziante sarà soggetto ai termini e alle condizioni di
    questa Licenza, senza termini o condizioni aggiuntivi.
    Nonostante quanto sopra, nulla in questo documento sostituirà o modificherà
    i termini di qualsiasi accordo di licenza separato che tu possa aver firmato
    con il Licenziante riguardo a tali Contributi.

  6. Marchi. Questa Licenza non concede il permesso di utilizzare i nomi commerciali,
    marchi, marchi di servizio o nomi di prodotto del Licenziante,
    eccetto se necessario per un uso ragionevole e consueto nel descrivere
    l'origine dell'Opera e nel riprodurre il contenuto del file AVVISO.

  7. Dichiarazione di Esclusione di Garanzia. Salvo il contrario richiesto dalla legge
    applicabile o concordato per iscritto, il Licenziante fornisce l'Opera (e ciascun
    Contributore fornisce i suoi Contributi) su una base «COSÌ COM'È»,
    SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, né esplicite né
    implicite, inclusa, senza limitazione, qualsiasi garanzia o condizione
    di TITOLARITÀ, NON VIOLAZIONE, COMMERCIABILITÀ o IDONEITÀ PER UN
    PARTICOLARE SCOPO. Sei l'unico responsabile per determinare l'adeguatezza
    di utilizzare o ridistribuire l'Opera e assumi i rischi associati con il tuo
    esercizio delle autorizzazioni in base a questa Licenza.

  8. Limitazione di Responsabilità. In nessun caso e sotto nessuna teoria legale,
    sia in torto (compresa la negligenza), contratto o altro,
    salvo il contrario richiesto dalla legge applicabile (come atti deliberati e
    gravemente negligenti) o concordato per iscritto, nessun Contributore potrà essere
    responsabile nei tuoi confronti per danni, inclusi danni diretti, indiretti, speciali,
    incidentali o consequenziali di qualsiasi tipo derivanti da
    questo Licenza o dall'uso o dall'incapacità di utilizzare il
    Lavoro (inclusi, ma non limitati a, danni per perdita di reputazione,
    interruzione dell'attività, guasto o malfunzionamento del computer, o qualsiasi altro
    danno o perdita commerciale), anche se tale Contributore
    è stato avvisato della possibilità di tali danni.

  9. Accettando Garanzia o Responsabilità Aggiuntiva. Durante la ridistribuzione
    del Lavoro o delle Opere Derivate, puoi scegliere di offrire
    e addebitare una tassa per, l'accettazione di supporto, garanzia, indennizzo
    o altre obbligazioni e/o diritti di responsabilità coerenti con questa
    Licenza. Tuttavia, nel prendere tali obbligazioni, puoi agire solo
    per tuo conto e a tuo esclusivo rischio, non per conto
    di qualsiasi altro Contributore, e solo se accetti di indennizzare,
    difendere e tenere indenne ciascun Contributore per qualsiasi responsabilità
    sostenuta o reclami avanzati contro tale Contributore a causa
    della tua accettazione di eventuali garanzie o responsabilità aggiuntive.

    FINE DEI TERMINI E CONDIZIONI

    APPENDICE: Come applicare la Licenza Apache al tuo lavoro.

    Per applicare la Licenza Apache al tuo lavoro, allega il seguente
    avviso standard, con i campi racchiusi tra parentesi quadre «[]»
    sostituiti con le tue informazioni identificative. (Non includere
    le parentesi!) Il testo dovrebbe essere racchiuso nella adeguata
    sintassi di commento per il formato del file. Raccomandiamo anche che un
    nome di file o classe e una descrizione dello scopo siano inclusi nella
    stessa «pagina stampata» dell'avviso di copyright per una più facile
    identificazione all'interno degli archivi di terzi.

    Copyright [yyyy] [nome del titolare del copyright]

    Licenziato ai sensi della Licenza Apache, Versione 2.0 (la «Licenza»);
    non puoi usare questo file se non in conformità con la Licenza.
    Puoi ottenere una copia della Licenza presso

    http://www.apache.org/licenses/LICENSE-2.0

    Salvo quanto richiesto dalla legge applicabile o concordato per iscritto, software
    distribuito ai sensi della Licenza è distribuito su base «AS IS»,
    SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, né esplicite né implicite.
    Consulta la Licenza per il linguaggio specifico che governa i diritti e
    le limitazioni ai sensi della Licenza.

Licenza = contratto

Una licenza libera, sebbene sia libera, non ammette libertà assoluta e abbiamo già fornito esempi di limitazioni. Scegli la licenza tenendo conto sia dei tuoi interessi che di quelli dell'utente, perché il software open source è pensato proprio per lui. L'utente del progetto dovrebbe considerare la licenza come un particolare contratto tra lui e il titolare dei diritti; prima di effettuare qualsiasi operazione sul codice sorgente, leggi attentamente le limitazioni imposte dalla licenza del progetto.

Speriamo di aver fatto luce sulla questione delle licenze e, nonostante la complessità dell'argomento, non dovrebbe diventare un ostacolo nel tuo percorso nell'Open Source. Fai crescere il tuo progetto e non dimenticare i diritti, i tuoi e degli altri.

Link utili

Infine, ecco alcune risorse utili che ci hanno aiutato nella ricerca di informazioni sulle licenze esistenti e nella selezione della più adatta ai nostri scopi:

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster