Как да изберем Open Source лиценз за RAD фреймворк на GitHub

В тази статия ще говорим малко за авторското право, но основно за избора на свободна лицензия за RAD фреймворка и за отворените източници, базирани на него. Ще обсъдим разрешителната лицензия IONDV. Framework и за продукти с отворен код, основани на него. Ще разкажем за разрешителната лицензия Apache 2.0, какво ни е довело до нея и с какви решения сме се сблъскали в процеса.

Процесът на избор на лицензия е доста трудоемък и изисква предварителна подготовка. Ако не сте щастлив притежател на юридическо образование, пред вас се открива безкрайно поле с информация за различни свободни лицензи. Най-важното, което трябва да направите, е да съставите набор от ограничения. В процеса на обсъждане и осмисляне, вие и вашият екип ще можете да разберете какво искате да разрешите на потребителите на вашия продукт и какво да забраните. Когато вече имате описание, е необходимо да го наложите на съществуващите лицензи и да откриете тази, при която най-много от точките съвпадат. Звучи просто, но в действителност, обикновено дори след обсъждане, остават въпроси.

Как да изберем Open Source лиценз за RAD фреймворк на GitHub

Първо — линк към choosealicense.com, полезен сайт, който активно ползвахме. Особено обърнете внимание на сравнителната таблица на лицензи по 13 основни критерия. Нека английският и търпението да бъдат с вас.

Мъки на избора

Да започнем с общите признаци на лицензиите за свободен софтуер. Свободният софтуер предполага само свободна лицензия, която не ограничава търговското и нетърговското разпространение по модела Open Core. Съответно, когато разпространявате софтуер под свободна лицензия, не можете напълно да ограничите предаването, разпространението и продажбата му от трети лица и трябва просто да се подготвите морално за това.

Свободната лицензия предоставя на потребителя правото да участва в обратната разработка на софтуера или да го променя по други достъпни начини. Повечето лицензи не позволяват преименуване на продукта или извършване на каквито и да е манипулации, променящи правата на автора или/и притежателя на системата.

Основните въпроси, които ни интересуваха за свободните лицензи, бяха:

  1. Промените в софтуера трябва да бъдат документирани и нямат никакво отношение към правопритежателя на системата?
  2. Името на производния софтуер не трябва да съвпада с името на софтуера на правопритежателя?
  3. Може ли да се промени лицензът за всяка нова версия на друг, включително и на проприетарен?

Внимателно разгледахме списъка с най-разпространените лицензи и избрахме няколко, които разгледахме по-подробно. Потенциалните лицензи за IONDV. Framwork бяха: GNU GPLv3, Apache 2.0, MIT и MPL. MIT Практически веднага отхвърлихме MIT, тъй като това е разрешителна некопилефтна лицензия, която позволява използване, модификация и разпространение на кода почти по всякакъв начин, а ние искахме лиценз, който регулира отношенията между притежателя на правата и потребителя. Повечето от по-малките проекти в GitHub са публикувани именно под MIT лиценз или негови различни вариации. Сама лицензия е много кратка и единственото забраняващо правило е указание за авторството на създателя на софтуера.

Следващата лицензия беше MPL 2.0. Признавам, че не веднага стигнахме до нея, но след като я изучихме по-подробно, бързо я изключихме, тъй като основният недостатък е, че лицензът се прилага не за целия проект, а за отделни файлове. Освен това, ако потребителят модифицира файл, не може да промени лиценза. Фактически, както и да се опитвате да променяте Open source проекта, няма да можете да го монетизирате поради подобен лиценз. Това, между другото, не се отнася за притежателя на правата.

Подобен проблем съществува и при лиценза GNU GPLv3. Той изисква всеки файл да остане под него. GNU GPL е копилефтна лицензия, която изисква изходните кодове на производните работи да останат открити и също под този лиценз. Тоест: след като пренапишете две реда код, ще бъдете принудени да запазите своите изменения и при по-нататъшно използване или разпространение да поддържате кода под GNU GPL. В този случай, това е ограничителен фактор за потребителя на нашия проект, а не за нас. Но смяната на GPL на друг лиценз е забранена, дори вътре в версиите на GPL. Например, ако замените LGPL (надстройка над GPL) с GPL, обратният път към LGPL вече няма да бъде достъпен. И този пункт беше решаващ в гласуването против.

В общи линии, нашият избор първоначално беше насочен към GPL3 точно поради разпространението на модифициран код под същата лицензия. Смятахме, че така ще можем да защитим продукта си, но видяхме по-малко рискове в Apache 2.0. Според Free Software Foundation, GPLv3 е съвместима с Apache License v2.0, тоест винаги има възможност да смените лиценза от Apache License v2.0 на GPL v3.0.

Apache 2.0

Apache 2.0 — балансирана разрешителна лицензия с акцент върху авторските права. Ето какви отговори даде на въпросите, които ни интересуваха. Промените в софтуера трябва да бъдат документирани и нямат нищо общо с правопритежателя на системата? Да, всички промени трябва да бъдат документирани и ние не носим отговорност нито за изходния код, нито за модифицирания. Файлът с промените трябва да бъде приложен към кода, в който сте направили тези промени. Името на производния софтуер не трябва да съвпада с името на софтуера на правопритежателя? Да, производният софтуер трябва да излиза под различно име и под различна търговска марка, но с указание за авторството на правопритежателя. Може ли да се промени лицензията за всяка нова версия на друга, включително и на притежателна? Да, може да се издава под различни лицензии, Apache 2.0 не ограничава употребата на каквито и да било немаркетингови и търговски лицензии.

Също така, издавайки нови продукти на база открит код под Apache 2.0 или продукти с допълнителна функционалност, не е задължително да се използва същата лицензия. По-долу можете да видите изображение с условията и ограниченията на лиценза Apache 2.0.

Как да изберем Open Source лиценз за RAD фреймворк на GitHub

Лицензията налага изискване за запазване и упоменава авторските права и лицензията, под която се издава софтуерът. Задължителното наличие copyright notice с имената на правопритежателя и лиценза защитава правата на първоначалния автор на софтуера, тъй като дори и да бъде преименуван, поверен или продаден под друга лицензия, знакът на автора все още ще остане. За това може да се използва и файл NOTICE и да се приложи или в изходния код, или в документацията на проекта.

Ние издаваме на открит достъп в GitHub всичките си продукти под лиценза Apache 2.0, с изключение на IONDV. War archive, чийто изходен код през април тази година беше публикуван под лиценза GPLv3 на GitHub от Далекоизточния център за социални технологии. Към момента, освен самото фреймворк и неговите модули бяха публикувани приложение построено на фреймворка. На Хабре вече разказахме за Системата за управление на проекти и за Регистър на връзките.

Технически детайли за фреймворка

IONDV. Framework – опенсорс фреймворк на node.js за създаване на високо ниво уеб приложения на база метадани, без да изисква сериозни програмистки умения.

Основата на функционалността на приложението е регистърът на данни – модул Регистр. Това е ключов модул, предназначен изключително за работа с данни на база структури от метадани – включително за управление на проекти, програми, събития и др. Също така в проекта се използва модул на портала за показване на произволни шаблони на данни – в него е реализиран фронтът на регистъра на архивни дела.

За СУБД се използва MongoDb – в нея се съхраняват както настройки на приложението, така и метаданни и самите данни.

Как да приложите лицензия към своя проект?

Добавете файл LICENSE с текста на лицензията в репозитория на проектa си и voilà, проектът е защитен от Apache 2.0. Трябва да посочите правоносителя, което е уведомление за авторски права. Можете да направите това в изходния код или в файла NOTICE (текстов файл, който изброява всички библиотеки, лицензирани под лицензията Apache заедно с имената на техните създатели). Самият файл трябва да бъде поставен или в изходния код, или в документацията, разпространявана заедно с работата. При нас изглежда така:

Авторски права © 2018 LLC «ION DV».
Лицензирано под лицензията Apache, версия 2.0

Текст на лицензията Apache 2.0

Лицензия Apache
Версия 2.0, Януари 2004
http://www.apache.org/licenses/

УСЛОВИЯ И ПРАВИЛА ЗА УПОТРЕБА, ВЪПРОСИ И РАЗПРЕДЕЛЕНИЕ

  1. Определения.

    «Лиценз» означава условията и правилата за употреба, възпроизвеждане,
    и разпространение, както е определено в Раздели 1 до 9 на този документ.

    «Лицензодател» означава собственика на авторските права или субект, упълномощен от
    собственика на авторските права, който предоставя Лицензията.

    «Юридическо лице» означава обединението на действащия субект и всички
    други субекти, които контролират, са контролирани от или са под общ
    контрол с този субект. За целите на това определение,
    «контрол» означава (i) правото, пряко или косвено, да причинява
    управление или ръководство на такъв субект, независимо дали по договор или
    по друг начин, или (ii) притежание на петдесет процента (50%) или повече от
    акциите, или (iii) фактическо притежание на такъв субект.

    «Вие» (или «Ваш») означава физическо лице или Юридическо лице
    възползващо се от правата, предоставени от тази Лицензия.

    «Източникова» форма означава предпочитаната форма за извършване на промени,
    включително, но не ограничено до софтуерен изходен код, документация
    изходен код и конфигурационни файлове.

    «Обектова» форма означава всякаква форма, произтичаща от механичната
    трансформация или превод на Източникова форма, включително, но
    не ограничено до компилиран обектен код, генерирана документация,
    и преобразувания в други медийни формати.

    «Проект» означава произведение на авторство, независимо дали в Източникова или
    Обектова форма, направено достъпно под Лицензията, както е посочено чрез
    уведомление за авторски права, което е включено или прикрепено към произведението
    (пример е предоставен в приложение по-долу).

    «Производни произведения» означават всяко произведение, независимо дали в Източникова или Обектова
    форма, основано на (или произтичащо от) Проекта и за което
    редакционни изменения, анотации, разширения или други модификации
    представляват, като цяло, оригинално произведение на авторство. За целите
    на настоящата Лицензия, Производни произведения не включват произведения, които остават
    разделими от, или просто свързани (или обвързани по име) с интерфейсите на,
    Произведението и Производните произведения от него.

    «Внос» означава всяко произведение на авторство, включително
    оригиналната версия на Произведението и всички модификации или добавки
    към това Произведение или Производните произведения от него, които са умишлено
    представени на Лицензодателя за включване в Произведението от притежателя на авторското право
    или от лице или Юридическо лице, упълномощено да подава от името на
    притежателя на авторското право. За целите на това определение, «представено»
    означава всяка форма на електронна, устна или писмена комуникация, изпратена
    до Лицензодателя или неговите представители, включително, но не само,
    комуникация по електронни пощенски списъци, системи за контрол на изходния код,
    и системи за проследяване на проблеми, които се управляват от, или от името на,
    Лицензодателя с цел обсъждане и подобряване на Произведението, но
    изключва комуникация, която е явно маркирана или по друг начин
    определена в писмен вид от притежателя на авторското право като «Не е Внос».

    «Вносител» означава Лицензодателя и всяко лице или Юридическо лице
    от името на когото Внос е бил получен от Лицензодателя и
    впоследствие включен в Произведението.

  2. Предоставяне на лиценз за авторско право. При спазване на условията и клаузите на
    тази Лицензия, всеки Вносител с настоящото предоставя на Вас вечен,
    световен, неексклузивен, безплатен, без роялти, неприкосновен
    лиценз за авторско право да репродуцира, подготвя Производни произведения от,
    публично показва, публично изпълнява, предоставя подлицензия и разпространява
    Произведението и такива Производни произведения в Изходна или Обектна форма.

  3. Предоставяне на лиценз за патент. При спазване на условията и клаузите на
    тази Лицензия, всеки Вносител с настоящото предоставя на Вас вечен,
    световен, неексклузивен, безплатен, без роялти, неприкосновен
    (освен както е посочено в този раздел) лиценза за патент да правите, да имате направено,
    да използвате, да предлагате за продажба, да продавате, да внасяте и по друг начин да прехвърляте Произведението,
    където такъв лиценз се прилага само за тези патентни претенции, лицензиуеми
    от такъв Вносител, които са задължително нарушени само от техните
    Вноси или в комбинация с техните Вноси
    с Произведението, към което тези Вноси са били представени. Ако Вие
    предявите патентен иск срещу всяка организация (включително
    противопоставящ иск или контраиск в съдебно дело), твърдейки, че Произведението
    или Внос, включен в Произведението, представлява пряко
    или съпомагащо нарушение на патент, тогава всички патентни лицензии
    предоставени на Вас съгласно тази Лицензия за това Произведение ще прекратят
    от датата на подаване на такова съдебно дело.

  4. Преразпределение. Вие можете да репродуцирате и разпространявате копия на
    Произведението или Производните произведения от него в любая среда, с или без
    модификации и в Изходна или Обектна форма, при условие че Вие
    спазвате следните условия:

    (а) Трябва да предоставите на всеки друг получател на Произведението или
    Производните произведения копие на тази Лицензия; и

    (б) Трябва да накарате всички модифицирани файлове да носят видими известия
    съобщаващи, че Вие променили файловете; и

    (©) Трябва да запазите в Изходната форма на всички Производни произведения
    които разпространявате, всички известия за авторски права, патенти, търговски марки и
    атрибуции от Изходната форма на Произведението,
    с изключение на тези известия, които не се отнасят до никаква част от
    Производните произведения; и

    (д) Ако Произведението включва файл с текст «ИЗВЕЩЕНИЕ» като част от неговото
    разпространение, тогава всички Производни произведения, които разпространявате, трябва
    да включват четимо копие на известията за атрибуция, съдържащи се
    в такъв файл ИЗВЕЩЕНИЕ, с изключение на тези известия, които не се
    отнасят до никаква част от Производните произведения, на поне едно
    от следните места: в текстов файл ИЗВЕЩЕНИЕ, разпространяван
    като част от Производните произведения; в Изходната форма или
    документация, ако бъде предоставена заедно с Производните произведения; или,
    в рамка, генерирана от Производните произведения, ако и
    където такива известия от трети страни обикновено се появяват. Съдържанието
    на файла ИЗВЕЩЕНИЕ е само за информационни цели и
    не модифицирайте Лиценза. Можете да добавите Вашето собствено признание
    в известията в Производни Работи, които разпространявате, наред с
    или като приложение към текста на ИЗВЕЩЕНИЕТО от Работата, при условие
    че такива допълнителни признания не могат да се тълкуват
    като изменение на Лиценза.

    Можете да добавите Вашето собствено изявление за авторски права към Вашите модификации и
    можете да предоставите допълнителни или различни лицензионни условия и правила
    за използване, възпроизводство или разпространение на Вашите модификации, или
    за всякакви Производни Работи като цяло, при условие, че Вашето използване,
    възпроизводство и разпространение на Работата в противен случай отговаря на
    условията, посочени в този Лиценз.

  5. Предоставяне на Вноски. Освен ако не заявите изрично друго,
    всяка Вноска, предоставена съзнателно за включване в Работата
    от Вас на Лицензианта ще бъде под условията на
    този Лиценз, без никакви допълнителни условия.
    Независимо от горното, нищо в настоящото не отменя или изменя
    условията на всяко отделно лицензионно споразумение, което може да сте подписали
    с Лицензианта относно такива Вноски.

  6. Търговски марки. Този Лиценз не предоставя разрешение за използване на търговските
    имеета, търговски марки, сервизни марки или имена на продукти на Лицензианта,
    освен ако не е необходимо за разумно и обичайно използване при описване на
    произхода на Работата и възпроизвеждане на съдържанието на файла ИЗВЕЩЕНИЕ.

  7. Отказ от гаранция. Освен ако не се изисква от приложимото законодателство или
    не е уговорено в писмен вид, Лицензиантът предоставя Работата (и всяка
    Вноска предоставена от него) на основа „КАКТО Е“
    БЕЗ ГАРАНЦИИ ИЛИ УСЛОВИЯ от всякакъв вид, било то изрична или
    имплицитна, включително, без ограничения, всякакви гаранции или условия
    за НАЛИЧНОСТ, НЕНАРУШЕНИЕ, ТЪРГОВСКА ПРИДОБИВАЕМОСТ или ПОДХОДЯЩОСТ ЗА
    ОПРЕДЕЛЕНА ЦЕЛ. Вие сте единствено отговорни за определяне на
    приемливостта на използването или преразпределението на Работата и поемате всякакви
    рискове, свързани с упражняването на разрешителните по този Лиценз.

  8. Ограничение на отговорността. При никакви обстоятелства и при никаква правна теория,
    независимо дали в деликт (включително небрежност), договор или по друг начин,
    освен ако не се изисква от приложимото законодателство (като преднамерен и грубо
    небрежен акт) или не е уговорено в писмен вид, нито един Вносител не трябва да
    бъде отговорен пред Вас за щети, включително всякакви преки, непреки, специални,
    случайни или последващи щети от всякакъв характер, произтичащи от
    този Лиценз или от използването или невъзможността да се използва Работата
    (включително, но не само, щети за загуба на добра воля,
    спиране на работа, провал на компютър или неизправност или всякакви и всички
    други търговски щети или загуби), дори ако такъв Вносител
    е бил уведомен за възможността за такива щети.

  9. Приемане на Гаранция или Допълнителна Отговорност. Докато разпространявате
    Работата или Производни Работи от нея, можете да изберете да предложите,
    и да начислите такса за, приемане на подкрепа, гаранция, обезщетение,
    или други задължения и/или права, съвместими с този
    Лиценз. Въпреки това, при приемането на такива задължения, можете да действате само
    от свое име и на своя собствена отговорност, а не от името
    на който и да е друг Вносител и само ако се съгласите да обезщетите,
    защитите и задържите всеки Вносител безвреден за всяка отговорност
    понесена от, или искове, предявени срещу, такъв Вносител поради
    вашето приемане на такава гаранция или допълнителна отговорност.

    КРАЙ НА УСЛОВИЯТА И УСЛОВИЯТА

    ДОПЪЛНЕНИЕ: Как да приложите Apache Лиценза към вашата работа.

    За да приложите Apache Лиценза към вашата работа, прикрепете следното
    стандартно известие, с полетата, затворени в квадратни скоби «[]»
    заменени с вашата собствена идентифицираща информация. (Не включвайте
    квадратните скоби!) Текстът трябва да бъде затворен в подходящата
    синтаксис на коментарите за формата на файла. Също така препоръчваме файл
    или името на клас и описание на целта да бъдат включени на
    същата «печатна страница», на която се намира известието за авторски права за по-лесна
    идентификация в архивите на трети лица.

    Авторски права [yyyy] [име на притежателя на авторските права]

    Лицензирано под Apache Лиценза, Версия 2.0 (този «Лиценз»);
    не можете да използвате този файл, освен в съответствие с Лицензията.
    Можете да получите копие на Лицензията на

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

    Освен ако не се изисква от приложимото законодателство или не е уговорено писмено, софтуерът
    разпространяван под Лицензията, се разпространява на принципа «AS IS»,
    БЕЗ ГАРАНЦИИ ИЛИ УСЛОВИЯ ОТ НИКАКЪВ ВИД, нито изрични, нито подразбиращи се.
    Вижте Лицензията за конкретния език, регулиращ разрешенията и
    ограниченията според Лицензията.

Лицензия = договор

Свободната лицензия, макар и да е свободна, не допуска вседозволеност и ние вече дадохме примери за ограничения. Изберете лицензия, имайки предвид както своите интереси, така и потребителя, тъй като откритото ПСо е предназначено именно за него. Потребителят на проекта трябва да възприема лицензията като своеобразен договор между него и правопритежателя, така че преди да предприемете каквито и да е действия спрямо изходния код, внимателно проучете ограниченията, наложени от лицензията на проекта.

Надяваме се, че сме хвърлили малко светлина върху темата за лицензии и, въпреки сложността на въпроса, той не бива да бъде пречка по пътя ви в Open Source. Развивайте проекта си и не забравяйте за правата - своите и чуждите.

Полезни линкове

Накрая, малко полезни ресурси, които ни помогнаха при търсенето на информация за съществуващите лицензи и избора на най-подходящата за нашите цели:

Източник: habr.com

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster