Лицензът MIT позволява почти всичко: да използвате библиотеката, да я променяте и да продавате софтуер с нея. Единственото условие е да запазите бележката за авторското право и текста на лиценза.
GPL е друг тип. Ако разпространявате програма, в която има код под GPL, цялата програма трябва да е под GPL и с отворен изходен код.
За агенция, която иска да лицензира или продаде свой код, разликата е съществена. Библиотека под MIT не пречи на сделката. Библиотека под GPL или AGPL може да я спре.
Какви видове open source лицензи има?
Лицензите се делят на разрешителни и копилефт. Копилефтът има три степени.
| Група | Примери | Какво изискват | Пречи ли на затворен лиценз |
|---|---|---|---|
| Разрешителни | MIT, BSD, Apache 2.0 | Запазване на бележките, при Apache и описание на промените | Не |
| Слаб копилефт | LGPL, MPL 2.0 | Промените в самата библиотека остават отворени | Обикновено не, ако библиотеката е отделена |
| Силен копилефт | GPL v2, GPL v3 | Цялата разпространявана програма под GPL | Да, при разпространение |
| Мрежов копилефт | AGPL v3 | Като GPL плюс изходен код за потребители през мрежата | Да, и при SaaS |
ЗАПСП няма отделни правила за свободните лицензи. Лицензът е разрешение от притежателя на правата и важат неговите условия.
Който наруши условията, използва чужд код извън разрешението. GPL v3 го казва изрично: при нарушение лицензът се прекратява (раздел 8).
Какво позволява лицензът MIT?
Лицензът MIT разрешава безплатно на всеки, който получи копие, да използва, копира, променя, обединява, публикува, разпространява, сублицензира и продава софтуера. Условието е едно: бележката за авторското право и текстът на разрешението да са във всички копия или съществени части.
За агенцията това значи:
- можете да вградите MIT библиотека в продукт и да го лицензирате при свои условия;
- вашият код остава ваш и затворен;
- в продукта трябва да има файл с лицензите на трети страни.
BSD лицензите работят подобно. Някои версии забраняват да използвате името на автора за реклама без разрешение.
С какво Apache 2.0 се различава от MIT?
Apache 2.0 също е разрешителен, но има повече изисквания:
- Копие на лиценза към всяко разпространение.
- Отбелязване на файловете, които сте променили.
- Запазване на файла NOTICE, ако библиотеката има такъв.
Освен това авторите изрично отстъпват патентните си права върху своя принос. Патентната клауза има и обратна страна. Ако заведете дело, в което твърдите, че библиотеката нарушава ваш патент, губите патентния лиценз по нея.
Какво изисква GPL?
GPL е копилефт лиценз. По раздел 5 от GPL v3, ако разпространявате променена версия или програма, която включва GPL код, трябва да лицензирате цялото произведение под GPL. По раздел 6 трябва да дадете и изходния код.
Ключовата дума е „разпространявате“. Изискването се задейства, когато давате копие на друг.
| Ситуация | GPL изисква ли отваряне на кода |
|---|---|
| Вътрешен инструмент на агенцията, ползван само от екипа | Не |
| Инсталатор или бинарен файл, предаден на клиента | Да |
| Код, лицензиран на трета компания | Да |
| SaaS, до който клиентите имат достъп само през браузър | Не при GPL, да при AGPL |
Какво добавя AGPL?
AGPL v3 е GPL с допълнително правило в раздел 13. Ако сте променили програмата и потребители работят с нея през мрежа, трябва да им предложите изходния код на вашата версия.
За агенциите, които правят SaaS или хостват системи за клиенти, това е най-рисковият лиценз.
- AGPL библиотека в SaaS продукт задължава да предложите изходния код на потребителите.
- Много компании не допускат AGPL код в продуктите си.
- Купувач на код често поставя същото условие.
LGPL и MPL: къде е границата?
Слабият копилефт засяга само самата библиотека.
- LGPL. Можете да свържете затворена програма с LGPL библиотека. Промените в библиотеката трябва да останат под LGPL. Потребителят трябва да може да подмени библиотеката с друга версия.
- MPL 2.0. Копилефтът е на ниво файл. Файловете на MPL библиотеката, които сте променили, остават отворени. Вашите файлове могат да са затворени.
Как да проверите репото преди лиценз или продажба?
- Изкарайте списък на всички зависимости с лицензите им.
- Маркирайте всичко под GPL, AGPL и лицензи без ясно име.
- Потърсете копиран код без зависимост: файлове, взети от GitHub или Stack Overflow.
- За всяка проблемна библиотека решете: замяна, пренаписване или изключване от сделката.
- Приложете финалния списък към лицензионния договор.
Купувачът ще направи същата проверка. По-добре е вие да я направите първи.
Как се пише самият договор: лиценз за софтуер. Кой притежава вашата част от кода: авторско право върху софтуер.
Какво означава това за кода на агенцията?
Свободните лицензи определят какво можете да продадете.
| Част от репото | При какви условия я получава купувачът |
|---|---|
| Вашият собствен код | При условията, които вие определите |
| Библиотеки под разрешителни лицензи | При техните лицензи, с бележките |
| Код под GPL или AGPL | При GPL или AGPL, което обикновено спира затворена сделка |
Репо с разрешителни зависимости и подреден списък на лицензите се продава по-лесно и по-скъпо. Ориентировъчни диапазони: колко струва кодът.