Вільний софт можна безкоштовно використовувати та розповсюджувати з будь-якою метою, адаптувати під себе, покращувати та публікувати свої версії – ці права закріплюються за допомогою вільних ліцензій. У цій статті розглянемо основні види таких ліцензій, їх особливості та сумісність. Матеріал підготував Гаврило Максютенко, активний учасник спільноти GNOME. Любить вивчати непопулярні мови програмування - Nim, Vala, Clojure, F#, Pharo (Smalltalk), Gleam, почав писати свою мову, схожу на Smalltalk. Досвід роботи з АСУТП, веб- та десктоп-додатками, ERP. Також дякуємо за участь у перевірці статті Андрія Ситника, провідного фронтенд-розробника в Evil Martians
. Проведемо уявний експеримент: уявімо світ без вільного ПЗ. Весь код зберігається в закритих репозиторіях, а отже, програмісти не можуть просто та безкоштовно використовувати накопичений досвід IT-індустрії. Компанії, що займаються розробкою, змушені купувати платний софт: це вимагає додаткових витрат і зрештою позначається на якості та ціні продуктів. Щоб заощадити, вони починають писати свої бібліотеки: на ІТ-сленгу це називається «велосипедити».Замість того, щоб об'єднати зусилля та розробляти одну якісну бібліотеку, компанії створюють мільйони однакових бібліотек різного ступеня опрацьованості. Стати програмістом у таких умовах значно складніше, адже справжній продакшн-код вперше можна побачити лише влаштовуючись на роботу. Загалом світ без вільного ПЗ сильно відрізнявся б від нашого: якість продуктів, підготовка фахівців і темпи розвитку індустрії були б набагато гіршими. У цій статті ми поговоримо про феномен вільного ПЗ та типи вільних ліцензій, а також дізнаємося, яку ліцензію вибрати, щоб зробити свій продукт відкритим. Коли персональні комп'ютери тільки почали поширюватися, багато користувачів не замислювалися, що у програм може бути власник, а в нього ліцензія на цю програму. Усі просто передавали програми один одному, копіюючи дискети. Сьогодні це називається піратством. Корпорації, зрозуміло, були проти. Один із найвідоміших випадків — відкритий лист Білла Гейтса, в якому він звинувачує користувачів BASIC у крадіжці, стверджуючи, що більшість із них не купували BASIC, а просто копіювали його один в одного. Однак багато програмістів вважали, що користувачі ПЗ повинні мати всі права на його вивчення та зміну. За аналогією з покупкою автомобіля: купивши машину, ви можете подивитися як влаштований двигун, полагодити або змінити його, дати покататися друзям. Одним із лідерів руху за вільне програмне забезпечення був Річард Столлман: він вирішив створити власну ліцензію, яка матиме повну юридичну силу, але водночас гарантуватиме можливість залишати софт відкритим. Так, Столлман створив першу вільну ліцензію GNU GPL — General Public Licence.У 1989 році він випускає першу програму під цією ліцензією - редактор коду GNU Emacs, популярний досі. Про неабияку особистість Річарда Столлмана в блозі Хекслета є окрема стаття. Так зародився рух за вільне ПЗ та вільні ліцензії. По суті, воно стало боротьбою проти авторського права, яке не дає права володіння продуктом, незважаючи на те, що користувач за нього заплатив. Сьогодні і корпорації оцінили користь вільного програмного забезпечення: майже кожна велика компанія має свій відкритий репозиторій. Саме завдяки цьому ми маємо такі бібліотеки, як React (Facebook/Meta) або Protobuf (Google). Список репозиторіїв з відкритим ПЗ «великої п'ятірки»: Вільне ПЗ - це софт з відкритою ліцензією. Є різні види ліцензій, але вони гарантують такі свободи: Усі вільні ліцензії поєднують ці чотири пункти.Деякі свободи маються на увазі неявно, наприклад, щоб мати можливість змінити код, у вас має бути доступ до вихідного коду. Вільні ліцензії поділяються на звичайні (дозвільні) і вірусні - обох типів застосовні всі чотири свободи. Дозвільні ліцензії дозволяють використовувати вихідний код у пропрієтарному ПЗ, вносити до нього зміни та зробити виправлену версію закритою. Вірусну ліцензію обирають, якщо автор хоче, щоб усі похідні продукти за участю його коду поширювалися під тією самою вільною ліцензією. Тобто, додавши до свого проекту код під вірусною ліцензією, він ніби заражає цією ліцензією весь проект. Слово «вірусне» тут не має негативного забарвлення, навпаки — вірусні ліцензії вільніші, оскільки вони гарантують, що код із ними не буде закритий. Нижче розберемо приклади вірусних та невірусних ліцензій. Перша ліцензія GNU General Public License досі залишається однією з найпопулярніших. Допустимо, перед нами стоїть завдання: зробити нашу програму вільною. Для цього потрібно заявити, що вона є суспільним надбанням, та відмовитись від авторських прав.Але тоді будь-хто може взяти нашу програму, найняти штат розробників, додати до неї новий функціонал і продавати, закривши вихідні коди. Отже, нам потрібно зробити ліцензію, яка дає гарантію, що код під нею завжди залишатиметься відкритим. Саме це робить GNU GPL. Ліцензія є вірусною, тобто при додаванні коду під GNU GPL до проекту, ваш код «заражається» і повинен бути випущений під GNU GPL або іншою сумісною ліцензією (так, деякі ліцензії сумісні між собою, тобто код з різними ліцензіями може бути об'єднаний у одному проекті, але про це поговоримо трохи згодом). У ліцензії GNU GPL є два основні пункти: Існують друга та третя версії GNU GPL, про них ми теж поговоримо. Основним нововведенням другої версії став принцип «свобода чи смерть». Якщо внаслідок будь-яких обставин, наприклад, за рішенням суду, на автора ПЗ накладається обмеження на поширення вихідних текстів програми, йому також забороняється поширювати і бінарні версії. Якщо будь-яка держава внаслідок патентів чи авторського права накладе обмеження на поширення програми, випущеної під GNU GPL v2, автор має право повністю заборонити її розповсюдження на території цієї держави. Простими словами: або код поширюється з вихідними кодами, або ніяк. Також v2 уточнює: якщо ви вирішили поширювати програму з інструкцією про запит вихідників, всі, хто отримав програму від вас і поширюють її далі, зобов'язані також прикладати цю інструкцію. У такій інструкції буде вказана ваша email-адреса, на яку можна надіслати запит, а ви у відповідь надішлете вихідні коди. Ця ліцензія є менш «вільною» і в основному використовується для програмних бібліотек. LGPL не гарантує кінцевому користувачеві повну свободу використання програмного забезпечення. Тільки свободу модифікації для компонентів, ліцензованих LGPL, але не для будь-яких пропрієтарних компонентів. Комерційне програмне забезпечення може лінкуватися з бібліотекою, випущеною під LGPL, і при цьому воно не буде «заражене» GPL і може залишатися закритим. Це дозволяє використовувати вільні бібліотеки в закритому програмному забезпеченні, всі переваги вільної бібліотеки зберігаються. Наприклад, якщо компанія зробить свою зміну у цій бібліотеці, вона буде зобов'язана її опублікувати. Таким чином, бібліотека продовжує розвиватися великими комерційними компаніями, які в той же час можуть використовувати її в закритих продуктах. Цю ліцензію розробили в Массачусетському технологічному інституті спеціально для системи X11 Windows System, яка використовується в Linux-десктопах вже 37 років. Тому її також називають X11 License. Щоб продукт поширювався під ліцензією MIT, достатньо додати текст цієї ліцензії та поширювати продукт разом із ним. Повний текст MIT. Для порівняння: текст третьої версії GNU GPL складається з 2567 слів. Тут видно найважливішу відмінність від GPL – можливість використовувати ПЗ під ліцензією MIT у закритому коді.MIT дозволяє внести зміни до проекту та зробити виправлену версію закритою. Такі ліцензії ще називають дозвільними. За підсумком ця ліцензія дозволяє все, якщо її текст доданий до продукту і в ньому згадується оригінальний автор. Під ліцензією MIT випущено безліч відомих продуктів: PuTTY, Mono, Ruby on Rails, JQuery, Wayland і, звичайно, X Window System. В університеті Берклі теж є своя ліцензія — Berkeley Software Distribution License. Текст ліцензії є суспільним надбанням, це дозволяє будь-якому модифікувати його, створюючи свою ліцензію на основі BSD. Такі ліцензії називають ліцензією типу BSD. Наприклад, загальна ліцензія Microsoft додає заборону на зміну ліцензії у випадку, якщо код поширюється як вихідні коди. Є також NetBSD, FreeBSD, OpenBSD, DragonFly BSD, але найбільш використовуваною вважається модифікована версія BSD, також відома як BSD з трьома пунктами. Справа в тому, що початкова версія з чотирьох пунктів (англ. "four-clause BSD") містила невдалий пункт про необхідність підстановки копірайту університету Берклі. Кожен, хто користувався BSD, замінював Берклі свій варіант організації чи власне ім'я. Відомий випадок, коли через цей пункт доводилося згадувати 75 інших організацій. Також цей пункт робив BSD несумісною з GPL, оскільки GPL забороняє додавати нові обмеження, крім перерахованих у ній самій. Після дворічної дискусії було ухвалено рішення про видалення пункту про рекламу. Тепер у ліцензії лише три пункти: Трипунктова BSD досить схожа на MIT, але в MIT явно вказані дозволи на субліцензування, злиття, публікацію та продаж.Тим не менш, ці свободи маються на увазі і в BSD, їх можна віднести до «використання» або «поширення». Можна сказати, що вибір між MIT і BSD – виключно справа смаку. GPL третьої версії створювалася довше за попередні версії, а під час її затвердження точилися бурхливі суперечки. Детально про зміни GPL v3 можна дізнатися з офіційної статті GNU. Ось три головні нововведення: Боротьба з тивоізацією Часто виробники навмисно обмежують функціональність пристроїв або випускають дорогу і дешеву версії продукту, які відрізняються лише програмно. Прикладом тивоізованих пристроїв з обмеженим функціоналом є смартфони iPhone, на яких заборонено копіювання програм та обмежений доступ до файлової системи. Android має схожі проблеми. Одна з цілей GPLv3 — закрити подібну лазівку, тобто припинити тивоізацію. Якщо компанія використовувала вільне програмне забезпечення під GNU GPL v3 у своєму пристрої, ліцензія дозволяє власнику пристрою запросити вихідні коди. «Тівоїзація – небезпечна спроба урізати свободу користувачів: право змінювати свої програми стане безглуздим, якщо жоден з ваших комп'ютерів не дасть вам це робити. GPL v3 зупиняє тивоізацію, вимагаючи, щоб розповсюджувач надавав вам будь-які відомості та дані, необхідні для встановлення змінених програм на пристрій» Заборона на дискримінаційні патентні угоди Згодом Microsoft та інші корпорації знайшли спосіб обмежувати свободу користувачів: вони відкривають вихідний код, але для роботи з ним потрібно придбати патент. GNU GPL v3 забороняє таку практику. Обхід цифрового захисту Закон про авторське право цифрового тисячоліття та Директива про авторське право Європейського Союзу роблять злочином написання ПЗ, метою якого є обхід цифрових захистів. Цей пункт скасовує дію цих законів, зрозуміло, якщо сам цифровий захист ліцензовано на GPL v3. По суті, цей пункт гарантує, що ваше ПЗ під GPL v3 не зможуть використовувати у створенні цифрових захистів. Ця ліцензія була розроблена Фондом вільного програмного забезпечення на основі GNU General Public License та Affero GPL для вирішення проблеми хмарних сервісів. Вона зобов'язує сервер, на якому виконується модифікована програма, надавати доступ до вихідного коду. Щоб використовувати частини програмного забезпечення, випущені під різними вільними ліцензіями, ці ліцензії мають бути сумісні між собою. GNU-спільнота ділить ліцензії на 3 загальні класи — необмежувальні, проміжні та ліцензії з авторським лівом. До необмежувальних належать MIT та BSD — цей клас ліцензій дає можливість вносити зміни, закривати код і загалом майже не накладає обмежень. Цим користуються, наприклад, Apple та Sony, їх продукти працюють на модифікованих версіях системи BSD. До проміжних відноситься LGPL. Такі ліцензії дозволяють використання в закритому коді, але зобов'язують публікувати будь-які зміни, що вносяться. Програми, випущені під ліцензіями з авторським лівом, назавжди залишаться вільними, незалежно від того, хто і як їх розповсюджує. Якщо метою авторського права є накладення обмежень на користувача, авторське ліво навпаки гарантує виконання всіх чотирьох свобод. Правила сумісності цих ліцензій: Комбінування в одному проекті коду пропрієтарної ліцензії з користувальницьким лівом все ж таки можливе, але необхідна потужна ізоляція як мінімум на рівні процесів, дозвіл на обмін даними тільки через бінарний протокол. Приклади: Android, де використовується ядро Linux (GPL v2) або драйвера Nvidia на Linux, які можуть поставлятися бінарним блобом (англ. Binary Large Object — двійковий великий об'єкт). Це можливо завдяки кільцям ядра Linux, що відокремлює простір користувача від простору, в якому виконується код ядра. Останнім варіантом дотримання сумісності є переліцензування. Це складний процес, який потребує згоди 95% учасників. У цьому випадку програмне забезпечення перевипускається під новою, більш відповідною ліцензією, а старі версії залишаються при цьому незмінні. Цей огляд повинен допомогти вибрати відповідну ліцензію. Головне – це вирішити, який ступінь свободи ви хочете надати вашим користувачам. Якщо ви розглядаєте "можливість забороняти" як одну з свобод і хочете дати користувачам можливість застосовувати ваш продукт у комерційних цілях, вам підійде одна з дозвільних ліцензій (MIT, BSD). Якщо ви хочете, щоб на свободу вашого продукту ніщо не могло вплинути, то GPL або інша ліцензія з сильним авторським лівом — ваш вибір. Інформацію цієї статті також варто враховувати при використанні чужого вільного ПЗ: пам'ятайте про «заразність» ліцензій з авторським лівом, перевіряйте, що взятий вами код знаходиться під сумісною ліцензією. Ми рекомендуємо повністю прочитати текст вибраної ліцензії, перш ніж використовувати її. Ніколи не зупиняйтесь: У програмуванні кажуть, що потрібно постійно вчитися навіть для того, щоби просто перебувати на місці. Розвивайтеся з нами — на Хекслеті є сотні курсів з розробки різними мовами та технологіями В університеті ми мали чудовий курс про ліцензії на програмне забезпечення. Вів його колишній програміст, який перекваліфікувався на юриста. Одним із домашніх завдань було спарсити з гітхабу ліцензії на певний софт та перевірити їхню сумісність. Спарсить ці ліцензії вдалося не тільки всім, ми ж все-таки юристи, а не програмісти. Тим не менш, предмет відклався в пам'яті і став у нагоді в роботі. Сьогодні я хочу розповісти про вільні ліцензії, копілефт (copyleft) і як все це використовується у програмному забезпеченні. Вищезгадані права зазвичай надаються будь-якій людині. Такі ліцензії зазвичай безстрокові, всесвітні, невиключні та безвідкличні. При цьому більшість вільних ліцензій та законодавств країн вимагає у тому чи іншому вигляді вказувати авторство творців софту. Серед вільних ліцензій виділяють: Ці ліцензії є ліцензійними угодами, які накладають на користувачів мінімум обмежень при використанні, модифікації та розповсюдженні коду. Вони дозволяють вільно інтегрувати код навіть у пропрієтарні проекти. При цьому похідні роботи за дотримання певних формальних умов можуть поширюватися під будь-якою ліцензією. У цьому є головна відмінність пермісивних ліцензій від копілефтних. Серед пермісивних ліцензій можна виділити три найбільш відомі: BSD, MIT та Apache. BSD (Berkeley Software Distribution) License є однією з найстаріших та найпопулярніших пермісивних ліцензій. Вона надає розробникам право вільно використовувати, модифікувати та розповсюджувати код. Основна вимога BSD-ліцензії - збереження повідомлення про авторські права у всіх копіях коду. MIT License є дуже простою вільною ліцензією. Вона дозволяє використовувати, модифікувати та розповсюджувати код у будь-яких умовах, включаючи комерційне використання. Як і у випадку BSD, основною умовою є збереження повідомлення про авторські права. Apache License дає право використовувати програмне забезпечення для будь-яких цілей, вільно змінювати та розповсюджувати змінені копії.Вона також зобов'язує зберігати повідомлення про авторські права. Але на відміну від попередніх ліцензій, потрібно позначати зміни, зроблені у вихідному коді, та розміщувати посилання на оригінальну ліцензію (або її текст). Ще однією особливістю Apache License є те, що вона включає положення про патентні права, що робить її більш придатною для проектів із великою кількістю учасників. Загалом, пермісивні ліцензії сприяють широкому поширенню та використанню програмного забезпечення, оскільки вони не накладають жорстких обмежень на розробників. Це робить їх привабливими для відкритих та комерційних проектів, які цінують свободу та гнучкість у використанні стороннього коду. Копілефт-ліцензії базуються на таких принципах: Якщо коротко, то основна ідея копілефту полягає в тому, щоб гарантувати вільне використання не тільки оригінального ПЗ, але і будь-якого ПЗ, похідного від нього, а також похідного від похідного і так далі до нескінченності. Тобто автор похідного твору зобов'язаний поширювати його із збереженням тих самих прав, які були передбачені ліцензією на оригінальний твір. Таким чином, похідні роботи не можна присвоювати лише собі або якось обмежувати їхнє поширення. Тому власне і copyleftяк протилежність copyright. У цьому також головна небезпека використання робіт під копілефт-ліцензією в комерційних проектах. Вони як би "заражають" цією ліцензією весь проект і по-факту обмежують бізнес можливості, пов'язані з його продажем або іншими варіантами отримання прибутку. Найвідоміший приклад копілефт-ліцензії - GNU General Public License (GPL). Вона надає такі права: право запуску програми з будь-якою метою, право вивчення того, як програма працює (з обов'язковим забезпеченням доступу до вихідного коду), право розповсюдження копій, право модифікації програми та випуску модифікацій на публічний доступ. При цьому ліцензія GPL вимагає, щоб будь-які похідні роботи, що базуються на ПЗ з цією ліцензією, також були поширені під ліцензією GPL. Ліцензія GPL це приклад так званого "сильного" або "суворого" копілефту. На відміну від нього "слабкий" копілефт надає деякі винятки та послаблення під час поширення похідного ПЗ. Основна ідея копілефту полягає в тому, що будь-яке похідне програмне забезпечення поширюється тільки під тією самою копілефт-ліцензією, що й оригінальне.Слабкий копілефт надає деякі послаблення і винятки з цього правила. Такі ліцензії дозволяють зберегти баланс між захистом від приватизації коду та наданням більшої гнучкості для комбінування коду з іншими проектами, у тому числі з пропрієтарними. Перший приклад слабкого копілефту - GNU Lesser General Public License (LGPL). Вона дозволяє використовувати та впроваджувати код, ліцензований на умовах LGPL, у власне (навіть пропрієтарне) програмне забезпечення. При цьому відсутня обов'язкова умова надання вихідного коду власних компонентів під цією ліцензією. Код під ліцензією LGPL зазвичай використовується у формі бібліотеки, що розділяється, так що існує чіткий поділ між пропрієтарними компонентами і LGPL-компонентами. Другий приклад слабкого копілефту - Mozilla Public License (MPL). Вона дозволяє комбінувати код, що розповсюджується під MPL, з кодом, що поширюється під іншими ліцензіями, включаючи пропрієтарні. При цьому умови MPL застосовуються лише до змін у вихідному коді, а не до всього проекту. Таким чином, якщо проект використовує або пов'язаний з кодом, що розповсюджується під MPL, це не обов'язково означає, що весь проект повинен також поширюватись на умовах цієї ліцензії. Таким чином, слабкий копілефт, на відміну від сильного, робить код менш "заразним" для похідного ПЗ і дозволяє ширше використовувати такий код у комерційних проектах В усіх країнах-учасницях Бернської конвенції передбачається принцип автоматичної охорони авторського права. Це означає, що вона здійснюється з моменту створення твору незалежно від будь-якої реєстрації.І якщо автор хоче дозволити користуватися своєю інтелектуальною власністю без будь-яких обмежень з боку авторського права, то він повинен дотриматись однієї формальності. А саме – зробити заяву про те, що він здійснює передачу інтелектуальної власності у громадське надбання шляхом відмови від своїх прав. Щодо програмного забезпечення існують спеціальні тексти таких заяв. Не можна назвати їх ліцензіями, оскільки другої сторони по суті немає, як і немає будь-яких умов. Але я використовуватиму цей термін просто для зручності позначення. Однією з найвідоміших ліцензій на передачу ПЗ у суспільні надбання є Unlicense (Дослівно "не-ліцензія"). Вона надає розробникам можливість відмовитися від усіх прав, передбачених законодавством про авторське право, дозволяючи будь-кому використовувати, модифікувати, копіювати, публікувати, продавати та розповсюджувати код без будь-яких обмежень. Перші два абзаци Unlicense звучать так: "Це є безкоштовним і необробленим software виконано в громадський домашній.Якщо є безкоштовно для копіювання, modify, publish, use, compile, sell, or distribute this software, either in source code for or as compiled binary, for any purpose, commercial or non-commercial, and by any means." Також існують альтернативні варіанти, такі як ліцензія CC0 (Creative Commons Zero). Вона надає аналогічні права. Її перші два абзаци виглядають так: "Ні Copyright. Людина, яка поєднана з роботою з ним є dedicated the work to the public domain waiving all of his or here rights to work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law .Ви можете завантажити, змінити, розмістити і виконувати роботу, even for commercial purposes, all without asking permission." Крім того, варто згадати BSD Zero Clause License. За фактом ця ліцензія еквівалентна заяві про передачу ПЗ у суспільне надбання, але формально вона такою не є. Ось перший абзац: Використання для використання, копіювання, модифікації, і/або розповсюдження цього програмного забезпечення для будь-якого purpose з або без шкоди є його забороненим. Таким чином, дані ліцензії (або заяви про відмову від прав), розміщені разом із кодом у репозиторіях, дозволяють авторам явно вказати, що їхній код не має ліцензії, і що будь-який може його використовувати абсолютно вільно. (c) Телеграм канал IT-юрист на еміграції https://t.me/ImlawITЛіцензії вільного ПЗ: які вони бувають і як вибрати відповідну для вашого продукту
Яким був би світ без вільного ПЗ
Як зародилося вільне ПЗ
Що таке вільне ПЗ
GNU General Public License
GNU General Public License v2
GNU Lesser General Public License (LGPL)
MIT (X11 License)
BSD
GNU General Public License v3
GNU Affero General Public License
Сумісність ліцензій
Висновок
Додаткові матеріали
Вільні ліцензії на програмне забезпечення
Код та авторське право
Пермісивні ліцензії
Копілефт-ліцензії та сильний копілефт
Слабкий копілефт
Відмова від прав та передача ПЗ у суспільні надбання