Построчный разбор лицензии MIT. Сравнительный анализ основных лицензий Open Source: GPL, LGPL, BSD, MIT, Mozilla public license, Apache software license

04.06.2019

Тезисы доклада на семинаре "Открытые системы: философия, технология, бизнес" (проведенного 30 января 2002 г. Институтом Логики и ALT Linux): Все шесть лицензий, которые будут рассматриваться в настоящем докладе, являются лицензиями, одобренными Open Source Initiative для распространения ПО с открытым исходным текстом. Эти же лицензии называются "лицензиями на свободное ПО" (free software licenses) на сайте проекта GNU Free software foundation (FSF)...

Комментарии (3)

    К сожалению, не могу с этим не согласится. Но существует и другая проблема. Большинство copyleft лицензий основано на идеологии AS IS, т.е. отсутствие каких-либо гарантий, что существенно затрудняет профессиональное использование продуктов на них основанных. Очень часто при выборе между продуктом под copyleft лицензией и коммерческим продуктом делается выбор в пользу последнего только на основании гарантий функциональности и поддержки, которые берёт на себя производитель.

    > Большинство copyleft лицензий основано на идеологии AS IS, т.е. отсутствие каких-либо гарантий, что существенно затрудняет профессиональное использование продуктов на них основанных. Очень часто при выборе между продуктом под copyleft лицензией и коммерческим продуктом делается выбор в пользу последнего только на основании гарантий функциональности и поддержки, которые берёт на себя производитель.

    Это чистая пропаганда. Во-первых, противопоставлять "copyleft" и "коммерческое" бессмысленно. Copyleft противостоит не "коммерческому", а незащищенному свободному или (вместе с незащищенным свободным) несвободному. "Коммерческое" - это режим поставки. Copylefted software может поставляться как коммерчески (за деньги), так и некоммерчески.

    Во-вторых, AS IS - это отсутствие ответственности автора/поставщика по умолчанию. Ответственность и обязательства могут описываться другим документом; copyleft-лицензии, собственно, для этого не предназначены, в них четко говорится, что они регулируют распространение и использование.

Заблуждения, относительно того, что с программными продуктами open source можно делать все что угодно в личных и коммерческих целях, сильно распространено. У большинства людей такое ПО ассоциируется со словом «бесплатно», но на самом деле в разработанных open source-лицензиях ничего не говорится о цене программ, распространяемых таким образом.

Открытый код означает именно то, что написано, – исходный код таких программ доступен для ознакомления и модификации, а лицензии описывают, что можно делать с этим кодом, а чего делать нельзя. Данные ограничения затрагивают в основном коммерческих разработчиков программных продуктов и электронного оборудования.

GPL

GNU GPL (GNU General Public License) - одна из наиболее распространенных open source-лицензий. Под этой лицензией распространяются ядро Linux, MySQL, Asterisk и многие другие. Большинство CMS систем, таких как MovableType, MODx, WordPress, Joomla, Drupal, osCommerce и множество других выпускаются под GPL. По разным данным, в мире до 70% open source-ПО выпускается под GPL.

Основная цель GPL - защитить открытость свободного ПО. Он призван защитить разработчиков от того, что их наработки будут использованы создателями закрытого ПО в своих продуктах. Основное условие GPL: продукт, использующий код, защищенный этой лицензией, должен распространяться также под GPL и его исходный код должен быть доступен получателю такого продукта, который может делать с этим кодом все что угодно в рамках GPL.

Таким образом, если вы создаете проект на основе кода, защищенного GPL, вы обязаны распространять свой продукт под GPL. Распространение в данном случае не означает только лишь дистрибуцию конечного продукта. Под этот термин подпадает также и передача продукта заказчику исходных кодов ПО. Единственная ситуация, в которой требования GPL не являются обязательными, - отсутствие факта распространения как такового. То есть вы используете модифицированный код исключительно в личных целях или в целях компании, в которой работаете.


LGPL


GNU LGPL (GNU Lesser General Public License) отличается от GPL тем, что позволяет использовать продукты LGPL в проектах, распространяемых под другими лицензиями. То есть условия, сходные с GPL, распространяются только на ту часть производного продукта, которая заимствована из продукта, защищенного LGPL.

Изначально создатели GPL и LGPL – Free Software Foundation – предполагали использование GPL в готовых продуктах, а LGPL - в библиотеках для разработчиков, но на данный момент такое разделение не соответствует действительности. Наиболее известный продукт, выпускаемый под LGPL, – OpenOffice.org.

С 1 октября 2014 года в России легализованы свободные лицензии (open source). Соответствующие изменения были внесены законодателями в 4 часть Гражданского кодекса.

Теория

Свобода программы означает свободу пользователей выполнять, копировать, изучать, править и улучшать программу. Точнее, она заключается в четырех видах свободы пользователей программы:

  • Свобода выполнять программу, как вам угодно и в любых целях (свобода 0).
  • Свобода изучать, как работает программа, и адаптировать ее под свои нужды (свобода 1). Для этого необходим доступ к исходному тексту.
  • Свобода распространять копии, чтобы помочь своему ближнему (свобода 2).
  • Свобода улучшать программу и делать ваши улучшения общедоступными к выгоде всего сообщества (свобода 3). Для этого необходим доступ к исходному тексту.

В правовом ракурсе принцип указанных четырех свобод пользователя можно резюмировать через предоставление пользователю следующих прав:

  1. неограниченного использования программного обеспечения на любом количестве компьютеров;
  2. модификации исходного кода (т.е. внесения в компьютерную программу любых изменений);
  3. неограниченного последующего распространения программы на тех же условиях.

Данные права корреспондируют со следующими обязанностями автора:

  1. раскрывать исходный код программы;
  2. не ограничивать использование и распространение программы, что фактически нейтрализует монополию автора.

Практическое значение в правовом механизме имеют две обязанности: обязанность автора раскрыть исходный код и обязанность пользователя при распространении программы устанавливать те же условия.

История

Движение за свободное программное обеспечение боролось за свободу пользователей с 1983 года. В 1984 году был дан старт разработке свободной операционной системы GNU, чтобы пользователи могли обходиться без операционных систем, которые отказывают своим пользователям в свободе. За восьмидесятые годы XX века были разработаны большинство основных компонентов такой системы и программисты составили Стандартную общественную лицензию GNU (GNU GPL), чтобы выпускать их под этой лицензией, созданную специально для того, чтобы защитить свободу всех пользователей программы.

Внутренние противоречия не прошли мимо и этого движения, и в итоге произошло разделение - одни ратовали за открытый исходный текст ПО, другие борются за свободные программы в целом.

Существует множество вариантов свободных лицензий. Разработчик сам выбирает, какую лицензию он распространяет на свое ПО.

В некоторых странах программные продукты могут быть зарегистрированы как объекты патентного права и на них получены патенты (например, США, Южная Корея, Япония и др). Возникает некое противоречие между открытой лицензией и охраной патентным правом объекта патентования. Возможно, поэтому последние версии открытых лицензий включают в себя условия, ограничивающие автора в использовании своих прав, вытекающих из полученных патентов.

Все эти препятствия приводят к тому, что в большинстве стран правовое положение «свободных лицензий» является неопределенным и часто не соответствует закону страны. Интересно просмотреть судебную практику последних десятилетий:

В 90-е годы прошлого века принуждение к исполнению свободных лицензий осуществлялось на неформальной основе. Если говорить о GPL, наиболее распространенной лицензии, то защищал нарушенные права сам Столлмен, основатель движения. Первые положительные судебные решения были получены в Европе, начиная с 2004 года. Интересы сообщества разработчиков свободного программного обеспечения защищал Г. Велте (Harald Welte).

Перечислим ряд выигранных судебных споров. В США первое дело, связанное с нарушением условий свободной лицензии, было рассмотрено в 2007 году. Ответчик, компания Monsoon Multimedia, использовал свободную программу BusyBox в своем устройстве для дистанционного просмотра телепрограмм. Правовой центр защиты свободы программного обеспечения (Software Freedom Law Center), который выступал в качестве представителя разработчиков свободной программы, и компания Monsoon Multimedia пришли к мировому соглашению, в соответствии с которым компания взяла на себя обязательство по исполнению всех условий GPL.

Мировым соглашением завершился также процесс по иску Фонда свободного программного обеспечения (Free Software Foundation), предъявленному компании Cisco Systems по факту многочисленных нарушений <1>. В соответствии с мировым соглашением, которое удалось достичь только спустя полгода после начала судебного разбирательства, компания Cisco согласилась не только разместить на своих сайтах исходный код используемых ею свободных программ, но и выплатить Фонду свободного программного обеспечения денежную компенсацию.

В России

В целом можно сказать о легализации свободных (открытых) лицензий в мире, что подтверждается и изменениями в ГК РФ. Если раньше свободные лицензии в РФ не имели правовых основ, то сейчас ситуация меняется.

Но не путем признания существующих свободных лицензий.

Статьей 1286.1 ГК РФ вводится понятие «открытой лицензии». Договор открытой лицензии является разновидностью упрощенного порядка заключения лицензионного договора и может быть заключен в отношении произведений науки, литературы или искусства, а также программ ЭВМ.

Открытая лицензия является безвозмездной, если ею не предусмотрено иное.

В случае, если срок действия открытой лицензии не определен, в отношении программ для ЭВМ и баз данных договор считается заключенным на весь срок действия исключительного права, а в отношении других видов произведений договор считается заключенным на пять лет.

В случае если в открытой лицензии не указана территория, на которой допускается использование соответствующего произведения, такое использование допускается на территории всего мира.

Еще раз повторюсь, что, по сути, «открытая лицензия» — это легализация «open source», можно делать ссылки на любой вариант General Public License, или написать свой.

В том числе, возможно и предусмотреть обязанность всех, кто использует ПО на основе открытой лицензии, публиковать модификации ПО, доработки и т.д., делая все это доступным за плату или безвозмездно.

Единственное ограничение: правообладатель может отозвать свою лицензию (расторгнуть договор), если пользователи будут предоставлять больше прав, чем получили сами.

Практика

Что следует учесть при выборе лицензии:

  • Большинство лицензий являются взаимно обязывающими, например, - предоставлять права на модифицированные версии на тех же условиях, что и исходный вариант.
  • Не все открытые лицензии обязывают раскрывать исходный код. Открытый исходный код отличает свободное программное обеспечение от бесплатно распространяемых компьютерных программ, которые не подразумевают открытия исходного кода.
  • Отсутствие прямой зависимости между свободой использовать программу и правом автора получить справедливое вознаграждение. Автор может предусмотреть плату за свой труд, а может распространять его бесплатно, пользователь же получает свои свободы в любом случае.
  1. разрешение на любые виды использования программы без ограничения сферы использования и субъектного состава/или с ограничениями;
  2. разрешение на свободное дальнейшее распространение программы на любых носителях, в том числе за плату и в том числе в составе сложных программ, или без взимания платы за такое распространение и без предъявления к пользователю каких-либо дополнительных требований;
  3. разрешение создавать производные программы и условие об их распространении на тех же условиях, на которых программа была получена;
  4. условие о распространении одной и той же лицензии по всей цепочке пользователей без необходимости получения ими дополнительных лицензий или иных разрешений;
  5. решение вопроса об открытости кода.

Помимо «открытой лицензии» с 1 января 2015 года в России появляется еще один новый способ распоряжения исключительными правами - публичное сообщение о возможности использования произведения.

Заявление делается путем размещения на официальном сайте федерального органа исполнительной власти в сети Интернет. Федеральный орган исполнительной власти, ответственный за размещение соответствующих заявлений, а также порядок и условия их размещения определяются Правительством Российской Федерации.

Несмотря на то, что GitHub - крупнейший в мире сервис для совместной работы над открытым кодом, значительная часть размещённых там проектов формально не имеют никакого отношения к Open Source. Причём вовсе не потому, что их авторы предпочитают проприетарные решения. На сервере опубликована масса ПО, не имеющего никакой лицензии.

По всей видимости, существует достаточно много разработчиков, считающих вопрос лицензирования если не совсем несущественным, то наверняка второстепенным. Например, в опубликованной на сайте 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

Этот тип лицензий позволяет копировать исходный код без каких-либо ограничений. Копии можно размещать на рабочих станциях и серверах, причём делать это неограниченное число раз.

Также GNU GPL не накладывает никаких ограничений на распространение программ ни по количеству, но по форме. Код можно переносить на специальных накопителях, можно дать ссылку для загрузки, можно даже распечатать его на бумаге и раздавать всем желающим.

Этот тип лицензий позволяет любому физическому или юридическому лицу брать деньги за услугу по распространению ПО. Правда, потенциальный покупатель должен быть предупреждён, что продавец не имеет каких-либо эксклюзивных прав, поэтому то же самое решение можно получить совершенно бесплатно. Это качество также даёт возможность объяснить, за что именно берётся плата.

Наконец, GNU GPL позволяет вносить в код любые изменения, удалять или добавлять любые функции. Правда только при условии, что полученный таким образом продукт также должен распространятся на условиях той же лицензии.

Разработчикам следует знать, что использование GNU GPL предполагает соответствие неким стандартам оформления кода. Внутри него в комментариях должны быть изложены лицензионные требования.

GNU Lesser General Public License

Ранее название этого типа лицензий - GNU Library General Public License. LGPL чаще всего применяется для библиотек ПО, поскольку позволяет использовать их не только в свободных, но и проприетарных приложениях.

В проприетарном ПО распространяемый на условиях LGPL код применяется в форме разделяемой библиотеки. Эта мера обеспечивает разграничение между закрытыми и открытыми компонентами в программе, сама же лицензия не требует открытия кода всего решения.

LGPL, в отличие от GPL, носит компромиссный характер. Она не гарантирует пользователю полную свободу всех производных продуктов, но позволяет использовать открытый код в проприетарных решениях, причём открытые модули должны оставаться открытыми.

BSD License

Некоторые программисты считают BSD истинно свободной лицензией, и в некотором смысле они правы. Действительно, BSD накладывает очень мало ограничений на использование кода по сравнению с другими лицензиями.

Выбирающий BSD разработчик по сути разрешает использование своего кода как в открытых, так и в проприетарных приложениях. Это свойство широко применяется на практике, в том числе в больших проектах. В частности, некоторые компоненты FreeBSD вошли в состав операционной системы Mac OS X.

Основная особенность BSD 3, которая часто называется BSD New, в том, что она ограничивает использование имён разработчиков в производных продуктах. На практике означает, что она по умолчанию запрещает применять имя автора для продвижения других программ - для этого требуется его специальное разрешение.

MIT License

Это самая короткая лицензия. Возможно, именно по этой причине она становится всё более популярной. По сути она разрешает всё.

В соответствии с лицензией MIT копию ПО и всю сопутствующую документацию можно изменять, улучшать, дополнять, применять в других проектах, продавать и распространять бесплатно при соблюдении всего одного условия - текст лицензии должен быть включён во все копии. Требование, очевидно, совершенно необременительное и выполнить его не составляет никакого труда.

Creative Commons

Эта группа лицензий предназначена не для ПО, а для «сопутствующих продуктов»: фотографий, рисунков, текстов, дизайнерских проектов и т. д. Прежде всего потому, что Creative Commons не требует включения в произведение текста лицензии, достаточно только указать соответствующее буквенное обозначение.

Для лицензий группы Creative Commons нет каких-то строгих обязательных для всех правил. Некоторые из них вообще могут взаимно исключать друг друга, и в этом нет ничего страшного, если принять во внимание область их применения.

В частности, Creative Commons может разрешать неограниченное копирование и распространение, но запрещать при этом любые изменения. Программистам это может показаться странным, а вот художник вероятнее всего сочтёт такое условие вполне разумным.

Apache License

У Apache License есть одна интересная для многих разработчиков особенность - она не ставит обязательным условием неизменность лицензии. Таким образом, правила распространения модифицированной версии какой-либо программы могут отличаться от исходных.

Разумеется, право на изменение лицензии не означает возможности её отзыва. Никто не имеет права менять условия, которые уже были однажды определены.

В наши дни свободное программное обеспечение уже стало распространенным явлением в сфере высоких технологий. Этому есть огромное количество доказательств. Все больше и больше компаний открывают исходные коды своих проектов, что еще более ускоряет темпы роста этой культуры.

Мы склонны называть все продукты с открытым исходным кодом одним термином, считать их одной категорией. Так удобнее, но это всего лишь упрощение. Фундаментальная концепция открытого кода понятна всем, но права, обязанности и привилегии сторон интерпретируются по-разному. Это отражается на лицензиях свободного ПО. В этой статье мы рассмотрим основные виды свободных лицензий, а также насколько они популярны.

Одна из самых распространенных лицензий программного обеспечения - лицензия GNU GPL. Ее суть во взаимности. Лицензия требует, чтобы если код был изменен, то все изменения были обязательно опубликованы и доступны всем. Это называется копилефт. Но есть другие типы лицензии, которые строятся вокруг свободы для разработчика. Такие лицензии накладывают минимальные ограничения на пользователей и не требуют взаимности от разработчиков. Оба типа лицензий свободны, разница только в том, что именно остается свободным.

За последние десятилетие более чем две трети проектов с открытым исходным кодом распространяются под лицензией GPL. Можно предположить, что это лицензия по умолчанию, но все же на протяжении последних лет эта лицензия теряет популярность, а вместо нее начинают использоваться разрешающие лицензии.

Если сравнить долю каждой из лицензий по рейтингу Black Duck в этом месяце, по сравнению с январем 2010, то различие вполне очевидно:

В этом рейтинге самой популярной остается GPLv2, но она потеряла больше половины своей популярности, от 46% до 19%. За этот же период разрешительная лицензия MIT выросла от доли 8% до 29%. Apache License 2.0 выросла с 5% до 15%.

Можно предположить, что если в 2007 мы говорили о свободном по, то имели в виду копилефт лицензию GPL, тогда как сейчас фоукс сместился в сторону разрешающих MIT и Apache. Это не означает, что копилефт лицензии становятся менее важными, просто в наше время разработчикам больше нравятся разрешающие лицензии. Вот какие выводы мы можем сделать из этого графика:

Консолидация. Это топ 10 лицензий по популярности за 2010 и 2016 год, все, кроме трех из них, снизились в популярности. Больше всего снизилась лицензия GPL, а выросли Apache и MIT, это уже обсуждалось. Но примечательно, что достаточно популярная лицензия BSD, наоборот, снизилась. Та же тенденция у лицензии ISC. Сейчас только несколько лицензий являются самыми популярными и, возможно, скоро мы будем видеть консолидацию между несколькими лицензиями.

Бинарный выбор . Исторически так сложилось, что у вас есть три основных варианта выбора лицензии: копилефт, разрешающая и среднее положение. К средним лицензиям можно отнести LGPLv2.1 (4), LGPLv3 (2), EPL (1), MPLv1.1 (<1), CDDL (<1) и CDDLv1.1 (<1) они имеют общую долю порядка 7-8%. Теперь все больше и больше выбор сводится к копилефт или разрешающим лицензиям.

Без лицензии. Сколько бы ни говорилось об открытых лицензиях, но до сих пор остаются репозитории открытых проектов с кодом, не использующим ни одну из лицензий. Со временем процент лицензированных репозиториев сокращается:

Есть много объяснений этому явлению, например,безразличие разработчиков. Но все открытые программы без лицензии - это не открытое программное обеспечение и это плохо.

Основные лицензии свободного ПО

А теперь давайте сделаем краткое описание для каждой лицензии из рейтинга чтобы вы могли ориентироваться что они из себя представляют:

GNU General Public License. Расшифровывается как универсальная общественная лицензия. Была разработана в 1988 году в рамках проекта GNU. Принцип действия лицензии, как уже говорилось, все изменения кода должны быть опубликованы. Программа не может быть включена в проприетарное ПО, но зато может свободно распространяться между пользователей, изучаться и улучшаться при условии публикации улучшений. За время развития было выпущено три версии - GPLv1, GPLv2 и GPLv3, в которых были немного ослаблены ограничения лицензии gpl к проприетарному ПО.

MIT License. Это лицензия, разработанная Массачусетским технологическим институтом (МТИ). Это разрешительная лицензия, а это значит, что несмотря на свободность распространения, ПО может использоваться в качестве части проприетарных программ.

Apache License 2.0. Это еще одна разрешительная лицензия. Кроме того, что разрешается полностью свободно распространять продукт, программы можно встраивать в проприетарное ПО. Но нельзя изменять название, а в файлах нужно прикладывать всю информацию об изменениях и лицензии.

Artistic License - свободная лицензия, разработанная The Perl Foundation. Это копилефт лицензия, она требует чтобы все изменения были опубликованы, а в файлах были описаны вносимые правки.

BSD Licese 2.0. Лицензия на программное обеспечение университета Беркли. Лицензия очень похожа на MIT, и программное обеспечение тоже можно встраивать в проприетарные проекты. Но здесь нельзя использовать оригинальное название свободного проекта.

Code Project Open 1.0.2 License. Это лицензия, опубликованная сообществом разработчиков The Code Project. Она разрешает использовать исходный код и сами программы в коммерческих целях, код можно изменять и включать в другие проекты.

Mozilla Public License (MPL) 1.1. Эта лицензия была разработана в компании Netscape и улучшена в Mozilla Foundation. Разрешается использование кода в закрытых проектах, но измененный код должен быть лицензирован в соответствии с MPL.

Microsoft Public Licese (MS-PL) - это свободная лицензия, которая предоставляет право на использование, распространение и изменение кода. Но при распространении нужно сохранить информацию об авторских правах.

Понятие об отличиях основных лицензий свободного ПО на одной схеме:

Выводы

В этой статье мы рассмотрели основные типы свободных лицензий, а также некоторые самые популярные лицензии и их процент использования. Надеюсь эта информация была полезна для вас.

Небольшое видео по теме свободных лицензий и лицензии GPL: