Jak wybrać licencję Open Source dla frameworka RAD na GitHubie

W tym artykule porozmawiamy trochę o prawie autorskim, ale przede wszystkim o wyborze licencji typu open source dla frameworka RAD IONDV. Framework i dla projektów open source opartych na nim. Opowiemy o licencji zezwalającej Apache 2.0, o tym, co doprowadziło nas do niej oraz z jakimi rozwiązaniami się spotkaliśmy w trakcie.

Proces wyboru licencji jest dość pracochłonny i warto do niego podejść z odpowiednią wiedzą, a jeśli nie jesteś szczęśliwym posiadaczem wykształcenia prawniczego, to przed Tobą rozpościera się nieprzebyta przestrzeń informacji o różnych licencjach open source. Najważniejsze, co należy zrobić, to ustalić szereg ograniczających kryteriów. W trakcie dyskusji i analizy z zespołem będziecie mogli zrozumieć, co chcecie pozwolić użytkownikom Waszego produktu, a co zabronić. Kiedy już będziecie mieć opis, należy nałożyć go na istniejące licencje i wyłonić tę, w której największa liczba punktów się pokrywa. Brzmi to oczywiście prosto, ale w rzeczywistości, zazwyczaj nawet po dyskusji, pozostają pytania.

Jak wybrać licencję Open Source dla frameworka RAD na GitHubie

Na początek — link do choosealicense.com, przydatnej strony, z której aktywnie korzystaliśmy. Szczególnie zwróćcie uwagę na tabelę porównawczą licencji w 13 podstawowych kryteriach. Niech angielski i cierpliwość będą z Wami.

Kłopoty z wyborem

Zacznijmy od ogólnych cech licencji dla oprogramowania typu open source. Oprogramowanie typu open source zakłada wyłącznie wolną licencję, która nie ogranicza komercyjnego i niekomercyjnego rozpowszechniania na zasadach Open Core. W związku z tym, publikując oprogramowanie pod wolną licencją, nie można całkowicie ograniczyć jego przekazywania, rozpowszechniania i sprzedaży osobom trzecim i do tego należy się jedynie mentalnie przygotować.

Wolna licencja daje użytkownikowi prawo do samodzielnego uczestniczenia w inżynierii wstecznej oprogramowania lub jego modyfikacji innymi dostępnymi sposobami. Większość licencji nie zezwala na zmienianie nazwy produktu ani na żadne manipulacje, które zmieniają prawa autora oraz/lub właściciela systemu.

Główne pytania, które nas interesowały w kontekście wolnych licencji, dotyczyły:

  1. Czy wprowadzone zmiany w oprogramowaniu muszą być udokumentowane i nie mają żadnego związku z właścicielem praw do systemu?
  2. Czy nazwa pochodnego oprogramowania nie powinna być taka sama jak nazwa oprogramowania właściciela praw?
  3. Czy można zmienić licencję na inną dla wszelkich nowych wersji, w tym na licencję proprietary?

Skrupulatnie przeglądając listę najpopularniejszych licencji, wybraliśmy kilka, które omawialiśmy bardziej szczegółowo. Potencjalne licencje dla IONDV. Framwork to były: GNU GPLv3, Apache 2.0, MIT i MPL. MIT Zaraz na początku odrzuciliśmy licencję, ponieważ jest to licencja permissywna i non-copyleft, która pozwala na użycie, modyfikację i dystrybucję kodu niemal w dowolny sposób. Taki wariant nam nie odpowiadał, chcieliśmy, aby licencja regulowała relacje między właścicielem praw a użytkownikiem. Większość mniejszych projektów na GitHubie jest dostępnych właśnie pod licencją MIT lub jej różnymi wariacjami. Sama licencja jest bardzo krótka, a jedynym zakazem jest wskazanie autorstwa twórcy oprogramowania.

Następną była licencja MPL 2.0. Przyznajemy, że nie dotarliśmy do niej od razu, ale po dokładniejszym badaniu szybko ją odrzuciliśmy, ponieważ jej główną wadą jest to, że licencja dotyczy nie całego projektu, a tylko poszczególnych plików. Co więcej, jeśli użytkownik zmienia plik, nie może zmienić licencji. W praktyce, niezależnie od tego, jak starannie będziesz modyfikować projekt open source, nie będziesz mógł go zmonetyzować z powodu takiej licencji. To nie dotyczy jednak właściciela praw.

Podobny problem dotyczy licencji GNU GPLv3. Wymaga ona, aby każdy plik pozostał pod nią. GNU GPL to licencja copyleft, która wymaga, aby źródła prac pochodnych były otwarte i pozostawały pod tą samą licencją. Oznacza to, że przepisań dwóch linii kodu będziesz zmuszony odnotować swoje zmiany i przy dalszym używaniu lub dystrybucji zachować kod pod GNU GPL. W tym przypadku to ograniczający czynnik dla użytkownika naszego projektu, a nie dla nas. Zmiana GPL na jakąkolwiek inną licencję jest zabroniona, nawet w obrębie wersji GPL. Na przykład, jeśli zamienisz LGPL (warstwa nad GPL) na GPL, to nie będzie już możliwości powrotu do LGPL. I ten punkt był decydujący w głosowaniu przeciwko.

Ogólnie, nasz wybór pierwotnie skłaniał się ku GPL3 to ze względu na rozpowszechnienie zmodyfikowanego kodu na tej samej licencji. Myśleliśmy, że w ten sposób zabezpieczymy swój produkt, ale dostrzegliśmy mniej ryzyk w Apache 2.0. Zgodnie z Free Software Foundation, GPLv3 jest zgodna z Apache License v2.0, co oznacza, że zawsze istnieje możliwość zmiany licencji z Apache License v2.0 na GPL v3.0.

Apache 2.0

Apache 2.0 — zrównoważona licencja ze skupieniem się na prawach autorskich. Oto jakie odpowiedzi udzieliła na interesujące nas pytania. Zmiany w oprogramowaniu muszą być udokumentowane i nie mają żadnego związku z właścicielem praw do systemu? Tak, wszystkie zmiany muszą być udokumentowane i nie ponosimy odpowiedzialności ani za kod źródłowy, ani za zmodyfikowany. Plik z zmianami powinien być dołączony do kodu, w który te zmiany wprowadzono. Nazwa oprogramowania pochodnego nie może być taka sama jak nazwa oprogramowania właściciela praw? Tak, oprogramowanie pochodne musi być wydawane pod inną nazwą i innym znakiem towarowym, ale z zaznaczeniem autorstwa właściciela praw. Czy można zmienić licencję na inne nowe wersje, w tym na licencję własnościową? Tak, można wydawać pod różnymi licencjami, Apache 2.0 nie ogranicza zastosowania jakichkolwiek licencji komercyjnych i niekomercyjnych.

Również wydając nowe produkty na podstawie otwartego kodu pod Apache 2.0 lub produkty dodatkowej funkcjonalności, nie ma obowiązku używania tej samej licencji. Poniżej można zobaczyć obrazek z warunkami i ograniczeniami licencji Apache 2.0.

Jak wybrać licencję Open Source dla frameworka RAD na GitHubie

Licencja stawia wymaganie zachowania i wspomnienia o prawach autorskich oraz licencji, na której wydawane jest oprogramowanie. Obowiązkowa obecność informacji o prawach autorskich z imieniem właściciela praw i licencją chroni prawa pierwotnego autora oprogramowania, ponieważ nawet jeśli zostanie ono przemianowane, przekazane lub sprzedane pod inną licencją, znak autora wciąż pozostanie. Można również do tego wykorzystać plik NOTICE i załączyć go albo do kodu źródłowego, albo do dokumentacji projektu.

Wydajemy w otwartym dostępie na GitHub wszystkie nasze produkty pod licencją Apache 2.0, z wyjątkiem IONDV. War archive, którego kod źródłowy został opublikowany w kwietniu tego roku pod licencją GPLv3 na GitHub przez Dalekowschodnie Centrum Technologii Społecznych. Na chwilę obecną, oprócz samego frameworku i jego modułów opublikowane aplikacji wykonane na frameworku. Na Habrze już opowiadaliśmy o Systemie zarządzania projektami i o Rejestr połączeń.

Szczegóły techniczne dotyczące frameworka

IONDV. Framework – otwartoźródłowy framework na node.js do tworzenia aplikacji internetowych wysokiego poziomu opartych na metadanych, który nie wymaga zaawansowanych umiejętności programistycznych.

Podstawową funkcjonalność aplikacji stanowi rejestr danych — moduł Rejestru. Jest to kluczowy moduł, zaprojektowany do pracy z danymi opartymi na strukturach metadanych – w tym do zarządzania projektami, programami, wydarzeniami itp. W projekcie używany jest również moduł portalu do wyświetlania dowolnych szablonów danych – na którym zrealizowano front rejestru archiwalnych spraw.

Do bazy danych wykorzystywana jest MongoDb — to w niej przechowywane są zarówno ustawienia aplikacji, metadane, jak i same dane.

Jak zastosować licencję w swoim projekcie?

Dodaj plik LICENSE z tekstem licencji do repozytorium swojego projektu i voilà, projekt jest objęty ochroną Apache 2.0. Należy podać właściciela praw autorskich, a to jest informacja o prawach autorskich. Można to zrobić w kodzie źródłowym lub w pliku NOTICE (plik tekstowy, wymieniający wszystkie biblioteki licencjonowane na podstawie licencji Apache wraz z nazwiskami ich twórców). Sam plik umieścić można w kodzie źródłowym lub w dokumentacji, dystrybuowanej razem z pracą. U nas wygląda to tak:

Copyright © 2018 LLC „ION DV”.
Licencjonowane na podstawie Licencji Apache, Wersja 2.0

Tekst Licencji Apache 2.0

Licencja Apache
Wersja 2.0, styczeń 2004
http://www.apache.org/licenses/

WARUNKI I ZASADY UŻYTKOWANIA, REPRODUKCJI I DYSTRYBUCJI

  1. Definicje.

    „Licencja” oznacza postanowienia i warunki dotyczące użytkowania, reprodukcji,
    i dystrybucji określone w Sekcjach 1-9 tego dokumentu.

    „Licencjodawca” oznacza właściciela praw autorskich lub podmiot upoważniony przez
    właściciela praw autorskich, który udziela Licencji.

    „Podmiot prawny” oznacza połączenie działającego podmiotu i wszystkich
    innych podmiotów, które kontrolują, są kontrolowane przez lub są pod wspólną
    kontrolą z tym podmiotem. Na potrzeby tej definicji,
    „kontrola” oznacza (i) władzę, bezpośrednią lub pośrednią, do powodowania
    kierunku lub zarządzania takim podmiotem, niezależnie od tego, czy przez umowę, czy
    inaczej, lub (ii) posiadanie pięćdziesięciu procent (50%) lub więcej
    wyemitowanych akcji, lub (iii) korzystne posiadanie takiego podmiotu.

    „Ty” (lub „Twój”) oznacza osobę lub Podmiot Prawny
    wykorzystującą uprawnienia przyznane przez tę Licencję.

    „Forma źródłowa” oznacza preferowaną formę do wprowadzania modyfikacji,
    w tym między innymi kod źródłowy oprogramowania, dokumentację
    źródłową i pliki konfiguracyjne.

    „Forma obiektowa” oznacza dowolną formę wynikającą z mechanicznej
    transformacji lub tłumaczenia formy źródłowej, w tym między innymi
    skompilowany kod obiektowy, wygenerowaną dokumentację
    i konwersje na inne typy mediów.

    „Praca” oznacza dzieło autorstwa, niezależnie od tego, czy w Formie Źródłowej, czy
    Obiektowej, udostępnione na podstawie Licencji, jak wskazano w
    informacji o prawach autorskich, która jest dołączona do lub jest załączona do pracy
    (przykład znajduje się w poniższym załączniku).

    „Prace pochodne” oznaczają jakiekolwiek dzieło, niezależnie od tego, czy w Formie Źródłowej, czy Obiektowej
    czy które jest oparte na (lub pochodzi z) Pracy i dla której
    rewizje redakcyjne, adnotacje, opracowania lub inne modyfikacje
    stanowią w całości oryginalne dzieło autorskie. Na potrzeby
    tej Licencji, Utwory Derywacyjne nie obejmują prac, które pozostają
    oddzielne lub jedynie łączą (lub wiążą nazwą) z interfejsami,
    Utworu oraz jego Utworów Derywacyjnych.

    «Wkład» oznacza każde dzieło autorskie, w tym
    oryginalną wersję Utworu oraz wszelkie modyfikacje lub dodatki
    do tego Utworu lub jego Utworów Derywacyjnych, które są celowo
    przekazane Licencjodawcy w celu włączenia do Utworu przez właściciela praw autorskich
    lub przez osobę prawną lub osobę fizyczną upoważnioną do zgłaszania w imieniu
    właściciela praw autorskich. Na potrzeby tej definicji, «przekazane»
    oznacza każdą formę komunikacji elektronicznej, ustnej lub pisemnej, wysłanej
    do Licencjodawcy lub jego przedstawicieli, w tym, ale nie ograniczając się do
    komunikacji na listach elektronicznych, systemach kontroli kodu źródłowego,
    i systemach śledzenia problemów zarządzanych przez, lub w imieniu,
    Licencjodawcy w celu dyskusji i poprawy Utworu, z wyłączeniem
    komunikacji, która jest wyraźnie oznaczona lub w inny sposób
    określona na piśmie przez właściciela praw autorskich jako «Nie wkład.»

    «Współtwórca» oznacza Licencjodawcę oraz każdą osobę fizyczną lub prawną,
    w imieniu której Wkład został przyjęty przez Licencjodawcę i
    następnie włączony do Utworu.

  2. Przyznanie Licencji na Prawa Autorskie. Z zastrzeżeniem warunków
    tej Licencji, każdy Współtwórca niniejszym przyznaje Tobie wieczystą,
    ogólnoświatową, niewyłączną, bezpłatną, wolną od tantiem, nieodwołalną
    licencję na prawa autorskie do reprodukcji, przygotowywania Utworów Derywacyjnych,
    publicznego wyświetlania, publicznego wykonywania, sublicencjonowania i dystrybucji
    Utworu oraz takich Utworów Derywacyjnych w formie Źródłowej lub Obiektowej.

  3. Przyznanie Licencji Patentowej. Z zastrzeżeniem warunków
    tej Licencji, każdy Współtwórca niniejszym przyznaje Tobie wieczystą,
    ogólnoświatową, niewyłączną, bezpłatną, wolną od tantiem, nieodwołalną
    (z wyjątkiem przypadków wskazanych w tej sekcji) licencja patentowa do produkcji,
    wytwarzania, używania, oferowania do sprzedaży, sprzedaży, importu
    i wszelkiego innego przenoszenia Utworu,
    gdzie taka licencja dotyczy tylko tych roszczeń patentowych, które mogą być licencjonowane
    przez takiego Współtwórcę, które są koniecznie naruszane przez ich
    Wkłady lub połączenie ich Wkładów
    z Utworem, do którego takie Wkłady zostały zgłoszone. Jeśli Ty
    wprowadzisz postępowanie patentowe przeciwko jakiejkolwiek jednostce (w tym
    roszczeniu wzajemnym lub przeciwnemu w procesie sądowym), twierdząc, że Utwór
    lub Wkład włączony do Utworu stanowi bezpośrednie
    lub współwinną naruszenie patentu, to wszelkie licencje patentowe
    przyznane Tobie na mocy tej Licencji dla tego Utworu wygasną

  4. z dniem, w którym takie postępowanie zostanie złożone.
    Redistribucja. Możesz reprodukować i dystrybuować kopie
    Utworu lub jego Utworów Derywacyjnych w dowolnym medium, z lub bez
    modyfikacji, oraz w formie Źródłowej lub Obiektowej, pod warunkiem że

    spełnisz następujące warunki:
    (a) Musisz dać każdemu innemu odbiorcy Utworu lub

    Utworów Derywacyjnych kopię tej Licencji; oraz
    (b) Musisz umieścić na wszelkich zmodyfikowanych plikach wyraźne informacje

    stwierdzające, że zmieniłeś pliki; oraz
    (c) Musisz zachować, w formie Źródłowej jakichkolwiek Utworów Derywacyjnych
    które rozprowadzisz, wszelkie powiadomienia o prawach autorskich, patentach, znakach towarowych i
    uznania z formy Źródłowej Utworu,
    wykluczając te powiadomienia, które nie odnoszą się do żadnej części

    Utworów Derywacyjnych; oraz
    (d) Jeśli Utwór zawiera plik tekstowy «NOTICE» jako część swojej
    dystrybucji, to wszelkie Utwory Derywacyjne, które rozprowadzisz, muszą
    zawierać czytelną kopię powiadomień o uznaniu zawartych
    w takim pliku NOTICE, wykluczając te powiadomienia, które nie odnoszą się
    do żadnej części Utworów Derywacyjnych, w co najmniej jednym
    z następujących miejsc: w pliku tekstowym NOTICE dystrybuowanym
    jako część Utworów Derywacyjnych; w formie Źródłowej lub
    dokumentacji, jeśli jest dostarczana wraz z Utworami Derywacyjnymi; lub,
    w wyświetlaniu generowanym przez Utwory Derywacyjne, jeśli i
    gdziekolwiek takie powiadomienia osób trzecich zwykle się pojawiają. Treść
    nie modyfikuj licencji. Możesz dodać własne uznanie
    zawiadomienia w dziełach pochodnych, które rozpowszechniasz, obok
    lub jako załącznik do tekstu POWIADOMIENIA z Pracy, pod warunkiem
    że takie dodatkowe zawiadomienia uznaniowe nie mogą być interpretowane
    jako modyfikacja Licencji.

    Możesz dodać własne oświadczenie o prawach autorskich do swoich modyfikacji oraz
    możesz dostarczyć dodatkowe lub odmienne warunki licencyjne i zasady
    dotyczące użytkowania, reprodukcji lub dystrybucji Twoich modyfikacji lub
    jakichkolwiek dzieł pochodnych jako całości, pod warunkiem, że Twoje użytkowanie,
    reprodukcja i dystrybucja Pracy w inny sposób są zgodne z
    warunkami określonymi w tej Licencji.

  5. Zgłaszanie Wkładów. Chyba że wyraźnie stwierdzisz inaczej,
    jakikolwiek Wkład celowo przedstawiony do włączenia do Pracy
    przez Ciebie do Licencjodawcy będzie będzie na warunkach i zasadach
    tej Licencji, bez żadnych dodatkowych warunków.
    Niezależnie od powyższego, nic tutaj nie zastępuje ani nie modyfikuje
    warunków jakiejkolwiek oddzielnej umowy licencyjnej, którą mogłeś podpisać
    z Licencjodawcą dotyczącej takich Wkładów.

  6. Znak towarowy. Ta Licencja nie przyznaje zezwolenia na używanie nazw handlowych,
    znaków towarowych, znaków usługowych ani nazw produktów Licencjodawcy,
    chyba że jest to wymagane dla rozsądnego i zwyczajowego użycia w opisie
    pochodzenia Pracy oraz reprodukcji treści pliku POWIADOMIENIE.

  7. Wyłączenie gwarancji. Chyba że wymaga tego obowiązujące prawo lub
    uzgodnione na piśmie, Licencjodawca dostarcza Pracę (a każdy
    Wkładca dostarcza swoje Wkłady) na zasadzie «JAK JEST»,
    BEZ GWARANCJI ANI WARUNKÓW JAKIEGOKOLWIEK RODZAJU, ani wyraźnych ani
    domniemanych, w tym, bez ograniczeń, jakichkolwiek gwarancji lub warunków
    TYTUŁU, BRAKU NARUSZENIA, PRZYDATNOŚCI HANDLOWEJ lub PRZYDATNOŚCI DO
    KONKRETNEGO CELU. Do Ciebie należy określenie
    stosowności korzystania lub redystrybucji Pracy i przyjęcie wszelkich
    ryzyk związanych z korzystaniem z uprawnień na podstawie tej Licencji.

  8. Ograniczenie odpowiedzialności. W żadnym przypadku i na żadnej podstawie prawnej,
    czy to w delikcie (w tym zaniedbaniu), umowie, czy w inny sposób,
    chyba że wymaga tego obowiązujące prawo (takie jak działanie umyślne i rażące
    zaniedbanie) lub uzgodnione na piśmie, żaden Wkładca nie ponosi
    odpowiedzialności wobec Ciebie za szkody, w tym wszelkie szkody bezpośrednie,
    pośrednie, specjalne, przypadkowe lub następcze jakiegokolwiek rodzaju powstałe w wyniku
    tej Licencji lub w wyniku używania lub niemożności używania Pracy
    (w tym, ale nie tylko, szkody za utratę dobrego imienia,
    przerwy w pracy, awarie komputerów lub usterki, lub wszelkie inne
    szkody komercyjne lub straty), nawet jeśli taki Wkładca
    został poinformowany o możliwości wystąpienia takich szkód.

  9. Akceptowanie gwarancji lub dodatkowej odpowiedzialności. Podczas redystrybucji
    Pracy lub jej Dzieł pochodnych możesz zdecydować się na oferowanie
    i pobieranie opłaty za akceptację wsparcia, gwarancji, odszkodowania
    lub innych zobowiązań i/lub praw zgodnych z tą
    Licencją. Jednak, przyjmując takie zobowiązania, możesz działać tylko
    na własną odpowiedzialność i wyłącznie na swoim własnym
    rachunku, a nie w imieniu jakiegokolwiek innego Wkładcy, i tylko wtedy, jeśli zgadzasz się
    odszkodować, bronić i chronić każdego Wkładcę przed wszelką odpowiedzialnością
    poniesioną przez, lub roszczeniami zgłoszonymi przeciwko, takim Wkładcom z powodu
    twojego przyjęcia jakiejkolwiek takiej gwarancji lub dodatkowej odpowiedzialności.

    KONIEC WARUNKÓW I ZASAD

    ZAŁĄCZNIK: Jak zastosować Licencję Apache do swojej pracy.

    Aby zastosować Licencję Apache do swojej pracy, dołącz następujące
    boilerplate powiadomienie, z polami zamkniętymi w nawiasach «[]»
    zastąpionymi własnymi informacjami identyfikacyjnymi. (Nie dołączaj
    nawiasów!) Tekst powinien być zamknięty w odpowiedniej
    składni komentarza dla formatu pliku. Rekomendujemy również, aby
    nazwa pliku lub klasy oraz opis celu były zawarte na
    tej samej «wydrukowanej stronie» co zawiadomienie o prawach autorskich w celu łatwiejszej
    identyfikacji w archiwach osób trzecich.

    Prawa autorskie [rrrr] [nazwa właściciela praw autorskich]

    Licencjonowane na podstawie Licencji Apache, Wersja 2.0 (»Licencja«);
    Nie możesz używać tego pliku, chyba że w zgodności z Licencją.
    Możesz uzyskać kopię Licencji pod adresem

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

    Chyba że wymaga tego obowiązujące prawo lub ustnie uzgodniono inaczej, oprogramowanie
    dystrybuowane na mocy Licencji jest dystrybuowane na zasadzie „TAK JAK JEST”
    BEZ GWARANCJI I WARUNKÓW JAKIEGOKOLWIEK RODZAJU, zarówno wyraźnych, jak i dorozumianych.
    Zobacz Licencję, aby zapoznać się z konkretnym językiem regulującym uprawnienia i
    ograniczenia pod względem Licencji.

Licencja = umowa

Wolna licencja, chociaż jest wolna, nie dopuszcza wszechobecności, a my już przedstawiliśmy przykłady ograniczeń. Wybieraj licencję, biorąc pod uwagę zarówno swoje interesy, jak i użytkownika, ponieważ otwarte oprogramowanie jest przeznaczone właśnie dla niego. Użytkownik projektu powinien postrzegać licencję jako swego rodzaju umowę między nim a właścicielem praw, dlatego przed dokonaniem jakichkolwiek działań na kodzie źródłowym dokładnie zapoznaj się z ograniczeniami nałożonymi na ciebie przez licencję projektu.

Mamy nadzieję, że nieco rozjaśniliśmy temat licencji i, mimo złożoności kwestii, nie powinien on stać się przeszkodą na twojej drodze do Open Source. Rozwijaj swój projekt i pamiętaj o prawach, swoich i cudzych.

Przydatne linki

Na koniec kilka przydatnych zasobów, które pomogły nam w poszukiwaniu informacji o istniejących licencjach i znalezieniu najbardziej odpowiedniej do naszych celów:

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster