Въпреки че GitHub е най-голямото в света хранилище за съвместна работа върху отворен код, значителна част от качените там проекти формално нямат никакво отношение към Open Source. Причината съвсем не е, че неговите автори предпочитат да работят по този начин. Просто в сървърите на GitHub е публикувана огромна маса софтуер, който няма никакъв лиценз.
Явно е, че има разработчици, програмисти или просто кодери, които считат лицензирането ако не за нещо съвсем несъществено, то във всеки случай второстепенно. Преди време в популярния уеб сайт Fossbytes.com бе публикувана статия от автор с псевдоним gdad-s-river, който се похвали, че избира лицензите по случаен начин – каквото се падне. Причината не е в неговия правен нихилизъм – той просто счита, че неговият софтуерен проект не е особено интересен за другите и едва ли неговият код ще бъде използван в други програми.
Но този пример не е показателен. Ако един разработчик възнамерява да създаде продукт, който може да се използва от други хора, които ще създадат собствени актуални версии, то в този случай изборът на най-подходящия лиценз е изключително важен. Вариантите са много:
- Apache License 2.0
- BSD 3 (New BSD)
- BSD 2 (FreeBSD)
- GNU General Public License (GPL) v3.0
- GNU Lesser General Public License (LGPL)
- MIT License
- Mozilla Public License 2.0
- Common Development and Distribution License
- Eclipse Public License
- Creative Commons License
Редица разработчици не разбират за какво е необходимо лицензирането и искрено вярват, че при свободния софтуер няма никакви ограничения.
Всъщност, всички свободни лицензи имат една съвсем прагматична цел – формулиране на ясни правила, които разработчиците трябва да спазват при използването на чуждия код. Тези правила трябва да се спазват както при създаването на производен продукт, така и при развитието на оригиналния код.
Основен стълб с света на свободните лицензи е GNU General Public License (GPL). Важно е да се направи разделяне между лицензите, които попадат под GNU GPL и другите, за които не попадат под условията на GNU GPL.
GNU General Public License
Нека в началото да кажем няколко думи за това, какво е GNU. GNU означава GNU’s not UNIX – рекурсивен акроним, измислен от Ричард Столман, един от водещите идеолози на отворения и свободен софтуер. Това име е измислено за операционната система, която Столман е разработвал през 80-те години. Историята на GNU заслужава повече внимание и ще бъде разгледана друг път.
GNU General Public License или свободното лицензионно споразумение GNU е първоначалният вариант на свободния лиценз, представен на 1 февруари 1989 година. Към днешен ден има четири варианта на този лиценз, които са номерирани според датата на тяхната поява.
GNU GPL v1.0
Основни позиции на GNU GPL v1.0 са следните две изисквания:
- Към изпълнимия код на програмата задължително да бъдат представени нейните сорс кодове, във вид удобен за изучаване и проверка
- При модификация на сорс кода лицензът се наследява – тоест, модифицираният или обединеният с предишния код нов код трябва също да излезе под GNU GPL и следователно, трябва да бъде достъпен за модификации от всеки желаещ. Това е така нареченото copyleft правило на Ричард Столман.
Тези изисквания на практика служат за една цел: да се предотврати действието на закона за авторското право при разпространяването на чуждия свободен софтуер. По принцип законът за авторското право забранява промените в и използването на чужд код.
GNU GPL v2.0
Втората версия на този лиценз излезе през 1991 година и нейният основен девиз е Liberty or Death (Свобода или смърт). Тази идея е заложена в седмия и осмия параграф на лицензното споразумение.
Тук няма да цитираме тези точки, но ще отбележим основния принцип, залегнал в този лиценз: Програмата не може да се разпространява, ако крайният потребител не може пълноценно да използва своето право за модификация и разпространение на кода под същия този лиценз.
GNU GPL v2.0 допуска важно изключение – ако разпространението на Програмата е ограничено от патентните и авторските права в рамките на една конкретна държава, разработчикът има право да добави списъка на държавите, в които този лиценз е валиден.
GNU Lesser GPL v2.1
Тази версия на GNU лиценза е от 1999 година и включва една голяма разлика от обикновения GNU GPL лиценз. Този лиценз е предназначен предимно за програмните библиотеки и позволява тяхното използване във фирмения софтуер. Така например, GNU C библиотеките се разпространяват под GNU Lesser GPL v2.1 лиценз, за да могат външните разработчици да ги използват в своя софтуер, независимо дали е свободен или комерсиален.
GNU GPL v3.0
Това е последният към днешен ден GNU лиценз, който излезе през 2007 година. Промените, въведени в този лиценз, имат за цел да предпазят потребителите на лиценза от съдебните искове относно различните патенти – въведено е изрично ограничение за завеждане на съдебно дело от страна на разработчика срещу потребителя. GPL 3.0 забранява използването на свободен лиценз към софтуер, за който без съмнение са валидни някои нови директиви и закони – Digital Millennium Copyright Act и the European Union Copyright Directive. Тоест, софтуер, който попада в въздействието на тези директиви, не може да има свободен лиценз. По този начин GPL 3.0 гарантира, че всеки софтуер, излязъл под този лиценз, може да бъде свободно модифициран и променян.
Друг важен момент в GNU GPL v3.0 е, че се бори с явлението тивоизация (Tivoization). Терминът не може да се преведе, понеже идва от плеъра TiVo, който работи под управлението на операционна система с Linux ядро. Под тивоизация се подразбира практиката на различните производители да произвеждат евтини и скъпи версии на абсолютно едно и също устройство, което се различава само по софтуера и по техническите средства за защита на авторските права. GPL v3.0 забранява тивоизацията за масовата компютърна електроника, но я разрешава за медицинските и някои други устройства.
Тази тема е огромна. Microsoft отказва да прилага този лиценз, защото това затруднява ъпдейтите и вреди на бизнеса на корпорацията. Същото важи за на практика всички големи компании. GPL v3.0 предпазва свободния софтуер от стари бизнес модели от типа – „аз ти продавам софтуер с компютъра и ако не го купиш от мен, по начина, по който аз ти казвам и не го ъпдейтваш през определен период с новата версия, то ти си нарушител на авторското правното законодателство„.
Заедно с GPL v3.0 излезе и обновената версия GNU Lesser GPL 3.0, която позволява използването на свободни библиотеки в комерсиален и затворен софтуер.
BSD License
Някои програмисти считат, че BSD е именно свободният лиценз и донякъде са прави. Наистина, BSD почти няма ограничения в използването на кода в сравнение с другите лицензи.
Избралият BSD лиценз разработчик има правото да реши дали неговият код може да се използва в отворените и/или фирмените приложения. Това масово се използва в практиката, включително и в много големите проекти. Така например, някои модули от FreeBSD са включени с състава на операционната система Mac OS X.
Разновидността BSD 3, която често наричат и BSD New, е в това, че ограничава използването на имената на разработчиците в производните продукти. Това на практика означава, че тя по подразбиране забранява използването името на автора за разпространяването на кода в други програми. За да стане това е необходимо специално разрешение.
MIT License
Това е най-късият лиценз. Може би това е причината той да става все по-популярен. На практика този лиценз разрешава всичко.
В съответствие с MIT лиценза, копията на кода плюс цялата съответстваща документация могат да бъдат променяни, подобрявани, допълвани, използвани в други проекти, продавани и безплатно разпространявани само при едно условие – текстът на този лиценз трябва да бъде включен във всички копия. Условието изобщо не е обременително и неговото изпълнение е съвсем лесно.
Creative Commons
Тази група лицензи не е за софтуера, а за съпътстващите програмното осигуряване продукти – снимки, дизайнерски изображения, допълнителни текстове и т.н. Масово се използва, понеже не изисква включването на текста на лиценза – достатъчно е само съответното буквено обозначение.
При Creative Commons няма задължителни правила и авторите на тези материали самостоятелно описват кое е защитено.
Така например, Creative Commons може да разреши неограниченото копиране и разпространение, но да забранява промените. На програмистите това може да се стори странно, но художниците считат подобно правило за съвсем разумно.
Apache License
Този лиценз е характерен с една особеност – не е задължително лицензът да е неизменен. По този начин правилата за разпространение на модифицираната версия на дадена програма могат да се различават от първоначалните.
Този лиценз защитава предимно авторите. Така например, във всеки един разпространяван пакет трябва да е включен текстов файл, в който са изброени всички библиотеки, лицензирани според условията на Apache плюс имената на техните разработчици.
Разбира се, правото за промяна на правилата не отменя лиценза. Никой няма право да променя веднъж определените условия.
Съвместимост
Много лицензи на практика повтарят принципите, заложени в GPL и се различават само по това, че са приети в едни или други корпорации, комерсиални или други организации. Тоест, има много лицензи, които са съвместими.
Съвместимите само с GPL 3.0 лицензи
- GNU Affero General Public License (AGPL) v3
- Apache License, Version 2.0
- Educational Community License 2.0
- Freetype Project License
- Microsoft Public License (Ms-PL)
- XFree86 1.1 License
Съвместимите с GNU GPL лицензи (както с v2, така и с версия v3
- Artistic License 2.0
- Berkeley Database License (aka the Sleepycat Software Product License)
- Boost Software License
- Modified BSD license
- CeCILL version 2
- Cryptix General License
- Eiffel Forum License, version 2 — предишните версии не бяха съвместими
- Expat License;
- FreeBSD license
- Лицензът the iMatix Standard Function Library
- Independent JPEG Group License
- Лицензът imlib2
- Intel Open Source License
- ISC License
- NCSA/University of Illinois Open Source License
- Лицензът Netscape Javascript
- OpenLDAP License, Version 2.7
- Лицензът Perl 5 и надолу
- Public Domain
- Лицензите Python 2.0.1, 2.1.1, и по-новите
- Лицензът Ruby
- Standard ML of New Jersey Copyright License
- Unicode, Inc. License Agreement for Data Files and Software
- W3C Software Notice and License
- X11 License — понякога грешно наричан MIT license
Съвместимите с Lesser GPL лицензи
- eCos license version 2.0
Разбира се, авторът може да представи оригиналния код под няколко лиценза.
Свободните лицензи дават по-голям избор – програмистът може от нулата да реализира някаква функция, а може да я купи или пък да използва обществения стек от технологии под GPL лицензите. Никой не забранява първите два случая.
Ако използвате третия вариант, също няма проблеми. По-бързо ще си свършите работата, но ще допринесете с нещо за развитието на съшия този обществен стек. Ако го нямаше GPL, нямаше да съществува този огромен блок от свободни технологии и във всяка програма би се налагало да се използва комерсиален код, който почти винаги е платен.