Cum să alegi o licență Open Source pentru un framework RAD pe GitHub

În acest articol, vom discuta puțin despre drepturile de autor, dar în principal despre alegerea unei licențe libere pentru cadrul RAD IONDV. Framework și pentru produsele open-source bazate pe acesta. Vom vorbi despre licența permisivă Apache 2.0, despre ce ne-a dus la aceasta și cu ce soluții ne-am confruntat în proces.

Procesul de alegere a licenței este destul de laborios și trebuie abordat cu o bună pregătire, iar dacă nu ești un fericit posedător de educație juridică, înaintea ta se deschide un câmp de informații neexplorate despre diverse licențe libere. Principalul lucru pe care trebuie să-l faci este să formulezi o serie de criterii restrictive. În discuție și reflecție, tu și echipa ta veți putea înțelege ce vrei să permiți utilizatorilor produsului tău și ce vrei să interzici. Când ai deja o descriere, trebuie să o suprapui licențelor existente și să identifici cea în care se potrivesc cele mai multe puncte. Sună, desigur, simplu, dar în realitate, de obicei, chiar și după discuții, rămân întrebări.

Cum să alegi o licență Open Source pentru un framework RAD pe GitHub

Primul - un link către choosealicense.com, un site util pe care l-am folosit activ. Acordați o atenție deosebită la tabelul comparativ al licențelor pe 13 criterii principale. Fie ca limba engleză și răbdarea să fie cu voi.

Dilema alegerii

Să începem cu trăsăturile generale ale licențelor pentru software-ul liber. Software-ul liber presupune în mod exclusiv o licență liberă care nu limitează distribuția comercială și necomercială după modelul Open Core. În consecință, distribuind software-ul sub o licență liberă, nu poți restricționa complet transferul, distribuția și vânzarea acestuia de către terți și trebuie să te pregătești moral pentru acest lucru.

Licența liberă oferă utilizatorului dreptul de a participa la dezvoltarea inversă a software-ului sau de a-l modifica prin alte metode disponibile. Cele mai multe licențe nu permit redenumirea produsului sau efectuarea de manipulări asupra lui care să schimbe drepturile autorului sau/și proprietarului sistemului.

Întrebările principale care ne-au interesat despre licențele libere au fost:

  1. Modificările aduse software-ului trebuie să fie înregistrate și nu au nicio legătură cu titularul drepturilor sistemului?
  2. Numele software-ului derivat nu trebuie să coincidă cu numele software-ului titularului drepturilor?
  3. Se poate schimba licența pentru orice versiuni noi într-o alta, inclusiv una proprietară?

După ce am examinat cu atenție lista celor mai comune licențe, am selectat câteva pe care le-am analizat mai în detaliu. Licențele potențiale pentru IONDV. Framwork au fost: GNU GPLv3, Apache 2.0, MIT și MPL. MIT Am exclus practic imediat, aceasta fiind o licență permisivă copyleft care permite utilizarea, modificarea și distribuția codului în aproape orice mod, iar noi nu ne-am dorit o astfel de variantă, voiam ca licența să reglementeze relațiile dintre deținătorul drepturilor de autor și utilizator. Majoritatea proiectelor mai mici de pe GitHub sunt publicate sub licența MIT sau diversele sale variante. Licența însăși este foarte scurtă, iar din interdicții singura cerință este menționarea autorului creatorului software-ului.

Următoarea a fost licența MPL 2.0. Recunosc că nu am ajuns imediat la ea, dar după ce am studiat-o mai atent, am exclus-o rapid, deoarece principalul său dezavantaj este că este aplicată nu pentru întregul proiect, ci pentru fișierele individuale. În plus, dacă utilizatorul modifică un fișier, nu poate schimba licența. De fapt, oricât de mult ai încerca să modifici un proiect Open Source, nu vei putea să-l monetizezi din cauza unei astfel de licențe. Acest lucru nu se aplică deținătorului drepturilor de autor.

O problemă similară persistă și în cazul licenței GNU GPLv3. Aceasta necesită ca fiecare fișier să rămână sub aceeași licență. GNU GPL este o licență copyleft care impune ca codurile sursă ale lucrărilor derivate să fie deschise și să rămână sub aceeași licență. Asta înseamnă: dacă modifici două linii de cod, vei fi obligat să-ți înregistrezi modificările și, la utilizarea sau distribuirea ulterioară, să păstrezi codul sub GNU GPL. În acest caz, acesta este un factor limiting pentru utilizatorul proiectului nostru, nu pentru noi. Dar schimbarea GPL-ului cu orice altă licență este interzisă, chiar și în interiorul versiunilor GPL. De exemplu, dacă schimbi LGPL (extensie peste GPL) cu GPL, atunci nu mai există întoarcere la LGPL. Și acest punct a fost decisiv în votul împotriva.

În general, alegerea noastră s-a înclinat inițial către GPL3 exactly for the reason of distributing modified code under the same license. We thought this would secure our product, but we saw fewer risks with Apache 2.0. According to the Free Software Foundation, GPLv3 is compatible with Apache License v2.0, meaning there is always the option to change the license from Apache License v2.0 to GPL v3.0.

Apache 2.0

Apache 2.0 — a balanced permissive license focusing on copyright. Here are the answers it provided to the questions we had. Are the modifications made to the software required to be documented and have no relation to the rights holder of the system? Yes, all modifications must be documented and we are not responsible for either the original code or the modified version. A file with changes must accompany the code in which these changes were made. Should the name of the derivative software match the name of the rights holder's software? No, derivative software should be released under a different name and trademark, but credit must be given to the rights holder. Is it allowed to change the license for any new versions to another one, including proprietary? Yes, it's possible to release under different licenses, Apache 2.0 does not restrict the use of any non-commercial and commercial licenses.

Additionally, when releasing new products based on open-source Apache 2.0 code or products with additional functionality, it is not necessary to use the same license. Below is an image outlining the terms and limitations of the Apache 2.0 license.

Cum să alegi o licență Open Source pentru un framework RAD pe GitHub

The license requires the preservation and mention of copyright and the license under which the software is released. The requirement is mandatory. copyright notice with the name of the rights holder and the license protects the original author's rights, as even if it is renamed, transferred, or sold under another license, the author's mark will still remain. For this purpose, a file can also be used NOTICE and attached either in the source code or in the project documentation.

We release all our products under the Apache 2.0 license as open access on GitHub, except IONDV. War archive, the source code of which was published under GPLv3 on GitHub in April of this year by the Far Eastern Center for Social Technologies. Currently, besides the actual framework-ului și acesta modules sunt publicate myapp made on the framework. We have already discussed on Habr about the Project Management System și despre Registrul de legătură.

Detalii tehnice despre framework

IONDV. Framework – un framework open-source pe node.js pentru crearea de aplicații web de nivel înalt pe baza metadatelor, care nu necesită abilități de programare avansate.

Funcționalitatea aplicației se bazează pe un registru de date – modul Registrul. Acesta este modul cheie, destinat în mod direct lucrului cu datele pe baza structurilor de metadate – inclusiv pentru gestionarea proiectelor, programelor, evenimentelor etc. De asemenea, proiectul folosește modul portal pentru a afișa șabloane de date arbitrare – pe acesta fiind implementat front-end-ul registrului documentelor arhivate.

Pentru SGBD se folosește MongoDB – în care sunt stocate atât setările aplicației, cât și metadatele și datele propriu-zise.

Cum să aplici o licență proiectului tău?

Adăugați un fișier LICENSE cu textul licenței în depozitul proiectului vostru și voilà, proiectul este sub protecția Apache 2.0. Trebuie să specificați titularul dreptului, acesta fiind notificarea copyright. Acest lucru se poate face în codul sursă sau în fișierul NOTICE (fișier text, care enumeră toate bibliotecile licențiate sub licența Apache împreună cu numele creatorilor lor). Fișierul în sine se poate plasa fie în codul sursă, fie în documentația distribuită împreună cu lucrarea. La noi arată astfel:

Copyright © 2018 SRL «ION DV».
Licențiat sub Licența Apache, Versiunea 2.0

Textul licenței Apache 2.0

Licența Apache
Versiunea 2.0, Ianuarie 2004
http://www.apache.org/licenses/

TERMENII ȘI CONDIȚIILE PENTRU UTILIZARE, REPRODUCERE ȘI DISTRIBUȚIE

  1. Definiții.

    „Licența” se referă la termenii și condițiile pentru utilizare, reproducere,
    și distribuție așa cum sunt definite în Secțiunile 1 până la 9 ale acestui document.

    „Licențiator” se referă la deținătorul dreptului de autor sau entitatea autorizată de
    deținătorul dreptului de autor care acordă Licența.

    „Entitate legală” se referă la unirea entității active și a tuturor
    celorlate entități care controlează, sunt controlate de sau se află sub control comun
    cu acea entitate. În scopul acestei definiții,
    „control” înseamnă (i) puterea, directă sau indirectă, de a cauza
    direcția sau managementul acelei entități, fie prin contract sau
    în alt mod, sau (ii) deținerea a cincizeci la sută (50%) sau mai mult din
    acțiunile emise, sau (iii) deținerea benefică a acelei entități.

    „Tu” (sau „Al Tău”) se referă la o persoană individuală sau Entitate Legală
    care exercită permisiunile acordate de această Licență.

    Forma „Sursă” se referă la forma preferată pentru a face modificări,
    inclusiv, dar fără a se limita la codul sursă al software-ului, documentația
    sursă și fișierele de configurare.

    Forma „Obiect” se referă la orice formă care rezultă dintr-o transformare
    mecanică sau traducere a unei forme Sursă, inclusiv, dar
    fără a se limita la codul obiect compilat, documentația generată,
    și conversiile în alte tipuri de media.

    „Lucrare” se referă la opera de autor, fie în formă Sursă sau
    Obiect, disponibilă sub Licență, așa cum este indicat printr-o
    notificare a copyright-ului care este inclusă sau atașată lucrării
    (un exemplu este furnizat în Aplicația de mai jos).

    „Lucrări derivate” se referă la orice lucrare, fie în formă Sursă sau Obiect
    care se bazează pe (sau derivă din) Lucrare și pentru care
    revizii editoriale, note, elaborări sau alte modificări
    reprezintă, în ansamblu, o lucrare originală de autor. În scopul
    această Licență, Lucrările Derivative nu vor include lucrări care rămân
    separabile sau doar leagă (sau leagă prin nume) de interfețele
    Lucrărilor și Lucrărilor Derivative ale acestora.

    «Contribuție» se referă la orice lucrare de autor, inclusiv
    versiunea originală a Lucrării și orice modificări sau adăugiri
    la acea Lucrare sau Lucrările Derivative ale acesteia, care este
    în mod intenționat
    trimisă Licențiatorului pentru a fi inclusă în Lucrare de proprietarul drepturilor de autor
    sau de o persoană fizică sau Entitate Juridică autorizată să trimită în numele
    proprietarului drepturilor de autor. În scopul acestei definiții, «trimis»
    înseamnă orice formă de comunicare electronică, verbală sau scrisă trimisă
    Licențiatorului sau reprezentanților săi, inclusiv, dar fără a se limita la
    comunicări pe liste de corespondență electronică, sisteme de control al codului sursă,
    și sisteme de urmărire a problemelor care sunt gestionate de, sau în numele,
    Licențiatorului pentru scopul discutării și îmbunătățirii Lucrării, dar
    excluzând comunicările care sunt marcate în mod evident sau în alt mod

    indicate în scris de către proprietarul drepturilor de autor ca «Nu o Contribuție.»
    «Contribuitor» se referă la Licențiator și orice persoană fizică sau Entitate Juridică
    în numele căreia o Contribuție a fost primită de Licențiator și

  2. ulterior încorporată în Lucrare.
    Acord de Licență de Drept de Autor. Sub rezerva termenilor și condițiilor
    această Licență, fiecare Contribuitor vă acordă o licență de
    drept de autor perpetuă, la nivel mondial, non-exclusivă, fără plată, fără redevențe,
    irevocabilă pentru a reproduce, a pregăti Lucrări Derivative,
    a expune public, a interpreta public, a sublicenția și a distribui

  3. Lucrarea și astfel de Lucrări Derivative în formă de Sursă sau Obiect.
    Acord de Licență de Drept de Autor. Sub rezerva termenilor și condițiilor
    această Licență, fiecare Contribuitor vă acordă o licență de
    Acord de Licență pentru Brevete. Sub rezerva termenilor și condițiilor
    (sub rezerva celor menționate în această secțiune) licență de brevet pentru a face, a avea făcut,
    a utiliza, a oferi spre vânzare, a vinde, a importa și a transfera
    lucrarea, unde această licență se aplică doar la acele revendicări de brevet licențiate
    de către astfel de Contribuitori care sunt consecințe inevitabile ale contribuției lor
    singure sau prin combinația contribuțiilor lor
    cu Lucrarea la care aceste contribuții au fost trimise. Dacă dumneavoastră
    initiați litigii legate de brevete împotriva oricărei entități (inclusiv
    o cerere reconvențională sau contrecere în cadrul unui proces) care susține că Lucrarea
    sau o Contribuție încorporată în Lucrare constituie o încălcare directă
    sau contribuitivă a brevetului, atunci orice licențe de brevet
    acordate dumneavoastră sub această Licență pentru acea Lucrare vor înceta

  4. începând cu data în care acest litigiu este intentat.
    Redistribuirea. Puteți reproduce și distribui copii ale
    Lucrării sau Lucrărilor Derivative ale acesteia în orice mediu, cu sau fără
    modificări, și în formă de Sursă sau Obiect, cu condiția să

    îndepliniți următoarele condiții:
    (a) Trebuie să oferiți oricăror alți destinatari ai Lucrării sau

    Lucrărilor Derivative o copie a acestei Licențe; și
    (b) Trebuie să faceți ca orice fișiere modificate să poarte Anunțuri proeminente

    care să declare că ați modificat fișierele; și
    (c) Trebuie să păstrați, în forma de Sursă a oricăror Lucrări Derivative
    pe care le distribuiți, toate notele de drept de autor, brevete, mărci comerciale și
    note de atribuție din forma Sursă a Lucrării,
    excluzând acele note care nu se referă la nicio parte din

    Lucrările Derivative; și
    (d) Dacă Lucrarea include un fișier text «NOTICE» ca parte a
    distribuției sale, atunci orice Lucrări Derivative pe care le distribuiți trebuie
    să includă o copie lizibilă a notelor de atribuție conținute
    în cadrul acestui fișier NOTICE, excluzând acele note care nu se referă
    la nicio parte din Lucrările Derivative, în cel puțin unul
    dintre următoarele locuri: într-un fișier text NOTICE distribuit
    ca parte a Lucrărilor Derivative; în forma de Sursă sau
    documentație, dacă este furnizată împreună cu Lucrările Derivative; sau,
    într-o afișare generată de Lucrările Derivative, dacă și
    oriunde aceste note ale terților apar în mod normal. Conținutul
    nu modificați Licența. Puteți adăuga creditul dumneavoastră
    notificări în lucrările derivate pe care le distribuiți, împreună cu
    sau ca un addendum la textul AVIZ din lucrare, cu condiția
    ca aceste notificări suplimentare de credit să nu poată fi interpretate
    ca modificând Licența.

    Puteți adăuga propria declarație de drept de autor la modificările dumneavoastră și
    puteți oferi termeni și condiții de licențiere suplimentare sau diferite
    pentru utilizarea, reproducerea sau distribuția modificărilor dumneavoastră, sau
    pentru orice lucrări derivate ca un întreg, cu condiția ca utilizarea dumneavoastră,
    reproducerea și distribuția lucrării să respecte în continuare
    condițiile stipulate în această Licență.

  5. Trimiterea contribuțiilor. Cu excepția cazului în care declarați explicit altfel,
    orice contribuție trimisă intenționat pentru includerea în lucrare
    de către dumneavoastră către Licențiator va fi sub termenii și condițiile
    această Licență, fără termeni sau condiții suplimentare.
    Nu obstante cele de mai sus, nimic din prezent nu va înlocui sau modifica
    termenii oricărui acord de licență separat pe care l-ați semnat
    cu Licențiatorul referitor la aceste contribuții.

  6. Mărci comerciale. Această Licență nu acordă permisiunea de a folosi numele de comerț,
    mărci comerciale, mărci de servicii sau nume de produse ale Licențiatorului,
    exceptând cazurile în care este necesar pentru utilizări rezonabile și obișnuite în descrierea
    originei lucrării și reproducerea conținutului fișierului AVIZ.

  7. Declinare de responsabilitate. Cu excepția cazului în care este cerut de legea aplicabilă sau
    aprobat în scris, Licențiatorul furnizează lucrarea (și fiecare
    contributor își oferă contribuțiile) pe o bază „CA ATARE”,
    FĂRĂ GARANȚII SAU CONDIȚII DE NICIUN FEL, fie expres sau
    implicite, inclusiv, fără limitare, orice garanții sau condiții
    de TITLU, NEÎNCĂLCARE, COMERCIALITATE sau ADECVARE PENTRU O
    ÎNTREBUINȚARE ANUME. Sunteți singurul responsabil pentru determinarea
    adecvării utilizării sau redistribuirii lucrării și vă asumați orice
    riscuri asociate cu exercitarea permisiunilor în baza acestei Licențe.

  8. Limitarea responsabilității. În niciun caz și sub nicio teorie legală,
    fie în delict (inclusiv neglijență), contract sau altfel,
    cu excepția cazului în care este cerut de legea aplicabilă (cum ar fi acte deliberate și grav neglijente)
    sau convenit în scris, niciun contributor nu va fi
    responsabil față de dumneavoastră pentru daune, inclusiv daune directe, indirecte, speciale,
    incidentale sau consecvente de orice natură apărute ca urmare a
    această Licență sau a utilizării sau incapacității de a utiliza
    lucrarea (inclusiv, dar fără a se limita la daune pentru pierderea bunăvoinței,
    oprirea muncii, eșecul sau malfuncția computerului sau orice și toate
    alte daune comerciale sau pierderi), chiar dacă acest contributor
    a fost informat de posibilitatea unor astfel de daune.

  9. Acceptarea garanției sau a responsabilității suplimentare. În timp ce redistribuiți
    lucrarea sau lucrările derivate ale acesteia, puteți alege să oferiți,
    și să percepeți o taxă pentru, acceptarea suportului, garanției, despăgubirii
    sau altor obligații și/sau drepturi de responsabilitate care sunt conforme cu această
    Licență. Cu toate acestea, în acceptarea acestor obligații, puteți acționa doar
    în numele dumneavoastră și pe propria responsabilitate, nu în numele
    altui contributor, și doar dacă conveniți să despăgubiți,
    să apărați și să păstrați fiecare contributor neafectat pentru orice responsabilitate
    suportată de, sau revendicări afirmate împotriva, acestui contributor din cauza
    acceptării de către dumneavoastră a oricărei astfel de garanții sau responsabilități suplimentare.

    SFÂRȘITUL TERMENILOR ȘI CONDIȚIILOR

    ANEXĂ: Cum să aplicați Licența Apache la lucrările dumneavoastră.

    Pentru a aplica Licența Apache la lucrările dumneavoastră, atașați următoarea
    notificare standard, cu câmpurile încrucișate prin paranteze «[]»
    înlocuite cu informațiile dvs. de identificare. (Nu includeți
    parantezele!) Textul ar trebui să fie închis în sintaxa adecvată
    a comentariilor pentru formatul fișierului. Recomandăm de asemenea ca un
    nume de fișier sau de clasă și o descriere a scopului să fie incluse pe
    aceeași „pagina tipărită” ca și notificarea de drept de autor pentru o identificare mai ușoară
    în arhivele terților.

    Drepturi de autor [yyyy] [numele deținătorului dreptului de autor]

    Licențiat sub Licența Apache, Versiunea 2.0 (denumită „Licența”);
    nu puteți utiliza acest fișier decât în conformitate cu Licența.
    Puteți obține o copie a Licenței la

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

    Cu excepția cazului în care este cerut de legea aplicabilă sau convenit în scris, software-ul
    distribuit sub Licență este distribuit pe o bază «AȘA CUM ESTE»
    FĂRĂ GARANȚII SAU CONDIȚII DE NICIO NATURĂ, fie expres sau implicit.
    Vezi Licența pentru limbajul specific care reglementează permisiunile și
    limitele prevăzute în Licență.

Licența = contract

Licența liberă, deși liberă, nu permite nici o libertate absolută și am dat deja exemple de restricții. Alegeți licența având în vedere atât interesele proprii, cât și ale utilizatorilor, deoarece software-ul deschis este destinat în special acestora. Utilizatorul proiectului ar trebui să perceapă licența ca un fel de contract între el și deținătorul drepturilor, așa că înainte de a efectua orice acțiune asupra codului sursă, studiază cu atenție restricțiile impuse de licența proiectului.

Sperăm că am aruncat puțin lumină asupra subiectului licențelor și, în ciuda complexității, acesta nu ar trebui să devină un obstacol pe drumul tău în Open Source. Dezvoltă-ți proiectul și nu uita de drepturile tale și ale altora.

Linkuri utile

În cele din urmă, iată câteva resurse utile care ne-au ajutat în căutarea informațiilor despre licențele existente și alegerea celei mai potrivite pentru obiectivele noastre:

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster