Что такое GNU и GPL? Разница между различными типами открытых лицензий

Рано или поздно каждый разработчик сталкивается с вопросом лицензирования своих разработок. Более или менее понятно, когда разрабатывается коммерческий продукт с закрытым кодом. Но когда разработчик желает распространять программу, плагин или библиотеку классов бесплатно и с открытыми кодами, то могут возникнуть трудности, потому что в природе существует масса лицензий подобного рода. Эта статья призвана собрать, упорядочить данные по лицензиям и вычленить самое главное.

UPD : опубликован перевод небольшого куска официального GPL FAQ habrahabr.ru/blogs/Dura_Lex/45878
UPD2 : скорректирован и переформулирован список совместимых лицензий


Если касаться мира «свободных» лицензий, то основным столпом и стержнем можно посчитать 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 года (википедия сообщает о 1988 г, но я считаю дату которая стоит на оригинале). На сегодняшний день существует четыре варианта лицензии, которые нумеруются в порядке появления.

GNU GPL v1.0

Основными позициями GNU GPL v1.0 стали следующие требования:
  • предоставление исходных кодов, доступных для изучения, к бинарным кодам публикуемым с данной лицензией;
  • наследование лицензии в случае модификации исходного кода, то есть модифицированный или объединенный с другим код в результате так же должен быть выпущен под лицензией GNU GPL, следовательно, быть доступным для модификации любым желающим.
Данные требования служат по сути одной цели, предотвратить действие закона об авторском праве на распространяемое открытое программное обеспечение, который запрещает модифицировать и использовать чужой код.

GNU GPL v2.0

Вторая версия лицензии датируется 1991 годом и основным мотивом провозглашает (согласно wiki) принцип «Liberty or Death» (Свобода или Смерть). Этот принцип заключен в седьмом и восьмом пункте соглашения:

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

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

Целью данного пункта не является принуждение Лицензиата к нарушению патента или заявления на иные права собственности или к оспариванию действительности такого заявления. Единственной целью данного пункта является защита неприкосновенности системы распространения свободного программного обеспечения, которая обеспечивается за счет общественного лицензирования. Многие люди внесли свой щедрый вклад в создание большого количества программного обеспечения, которое распространяется через данную систему в надежде на ее длительное и последовательное применение. Лицензиат не вправе вынуждать автора распространять программное обеспечение через данную систему. Право выбора системы распространения программного обеспечения принадлежит исключительно его автору.

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

8. В том случае если распространение и/или использование Программы в отдельных государствах ограничено соглашениями в области патентных или авторских прав, первоначальный правообладатель, распространяющий Программу на условиях настоящей Лицензии, вправе ограничить территорию распространения Программы, указав только те государства, на территории которых допускается распространение Программы без ограничений, обусловленных такими соглашениями. В этом случае такое указание в отношении территорий определенных государств признается одним из условий настоящей Лицензии.

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

GNU Lesser GPL v2.1

Данная версия лицензии датируется 1999 годом и содержит одно огромное отличие от обычной лицензии GNU GPL: предназначенная для библиотек, лицензия позволяет использовать их в проприетарном программном обеспечении. Например, библиотеки GNU C распространяются под лицензией GNU Lesser GPL v2.1, для того, чтобы сторонние разработчики могли использовать их в своем ПО, свободном или коммерческом.

GNU GPL v3.0

Последняя на сегодняшний день версия GPL, которая вышла в 2007 году. Изменения, внесенные в лицензию, были призваны оградить пользователей лицензии от судебных исков связанных с патентами, теперь создатели программы не могу подать в суд на пользователя. GPL 3.0 запрещает применять лицензию к программному обеспечению, которое запрещено «обходить» некоторыми законами и директивами (Digital Millennium Copyright Act и the European Union Copyright Directive). То есть, нельзя выпустить под лицензией любое ПО, попадающее под действие этих директив. Таким образом, GPL 3.0 заботится о том, чтобы любое ПО, выпущенное под ее лицензией, можно было свободно модифицировать, обходить или изменять.

Кроме того, GPL 3.0 борется с таким явлением как «тивоизация», когда устройство, на котором установлено программное обеспечение под лицензией GPL, не позволяет вам в силу различных причин модифицировать его. GPL v3.0 запрещает тивоизацию для товаров народного потребления (оставляя возможность тивоизации для медицинских и других важных устройств).

Вместе с GPL 3.0 вышла так же обновленная версия GNU Lesser GPL 3.0, которая продолжает отличаться тем, что позволяет использовать свободные библиотеки в закрытом ПО.

Совместимость

Многие лицензии практически повторяют принципы, заложенные в GPL и отличаются, в принципе, только тем, что приняты коммерческими или другими организациями. Ниже я постараюсь свести такие лицензии под определенные версии GPL. Совместимость означает то, что отдельные части ПО с лицензией совместимого типа можно выпускать в комплексе с GPL-частями и под одной 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.

Словарь

GNU - рекурсивный акроним GNU"s Not Unix;
GNU GPL - открытое лицензионное соглашение GNU;
Проприетарное ПО - программное обеспечение, которое имеет ограничения в использовании и закрыто для модификации, другими словами «несвободное ПО»;

) was finally published on June 29, 2007. While there"s been a lot of discussion about the license since the first draft appeared, not many people have talked about the benefits that it provides developers. We"ve published this guide to fill that gap. We"ll start with a brief refresher on free software, copyleft, and the goals of the GPL. We"ll then review the major changes in the license to see how they advance those goals and benefit developers.

The Foundations of the GPL

Nobody should be restricted by the software they use. There are four freedoms that every user should have:

  • the freedom to use the software for any purpose,
  • the freedom to change the software to suit your needs,
  • the freedom to share the software with your friends and neighbors, and
  • the freedom to share the changes you make.

When a program offers users all of these freedoms, we call it free software .

Developers who write software can release it under the terms of the GNU GPL. When they do, it will be free software and stay free software, no matter who changes or distributes the program. We call this copyleft: the software is copyrighted, but instead of using those rights to restrict users like proprietary software does, we use them to ensure that every user has freedom.

We update the GPL to protect its copyleft from being undermined by legal or technological developments. The most recent version protects users from three recent threats:

Version 3 also has a number of improvements to make the license easier for everyone to use and understand. But even with all these changes, GPLv3 isn"t a radical new license; instead it"s an evolution of the previous version. Though a lot of text has changed, much of it simply clarifies what GPLv2 said. With that in mind, let"s review the major changes in GPLv3, and talk about how they improve the license for users and developers.

Neutralizing Laws That Prohibit Free Software — But Not Forbidding DRM

You"re probably familiar with the Digital Restrictions Management (DRM) on DVDs and other media. You"re probably also familiar with the laws that make it illegal to write your own tools to bypass those restrictions, like the Digital Millennium Copyright Act and the European Union Copyright Directive. Nobody should be able to stop you from writing any code that you want, and GPLv3 protects this right for you.

It"s always possible to use GPLed code to write software that implements DRM. However, if someone does that with code protected by GPLv3, section 3 says that the system will not count as an effective technological "protection" measure. This means that if you break the DRM, you"ll be free to distribute your own software that does that, and you won"t be threatened by the DMCA or similar laws.

As usual, the GNU GPL does not restrict what people do in software; it just stops them from restricting others.

Protecting Your Right to Tinker

Tivoization is a dangerous attempt to curtail users" freedom: the right to modify your software will become meaningless if none of your computers let you do it. GPLv3 stops tivoization by requiring the distributor to provide you with whatever information or data is necessary to install modified software on the device. This may be as simple as a set of instructions, or it may include special data such as cryptographic keys or information about how to bypass an integrity check in the hardware. It will depend on how the hardware was designed—but no matter what information you need, you must be able to get it.

This requirement is limited in scope. Distributors are still allowed to use cryptographic keys for any purpose, and they"ll only be required to disclose a key if you need it to modify GPLed software on the device they gave you. The GNU Project itself uses GnuPG to prove the integrity of all the software on its FTP site, and measures like that are beneficial to users. GPLv3 does not stop people from using cryptography; we wouldn"t want it to. It only stops people from taking away the rights that the license provides you—whether through patent law, technology, or any other means.

Stronger Protection Against Patent Threats

In the 17 years since GPLv2 was published, the software patent landscape has changed considerably, and free software licenses have developed new strategies to address them. GPLv3 reflects these changes too. Whenever someone conveys software covered by GPLv3 that they"ve written or modified, they must provide every recipient with any patent licenses necessary to exercise the rights that the GPL gives them. In addition to that, if any licensee tries to use a patent suit to stop another user from exercising those rights, their license will be terminated.

What this means for users and developers is that they"ll be able to work with GPLv3-covered software without worrying that a desperate contributor will try to sue them for patent infringement later. With these changes, GPLv3 affords its users more defenses against patent aggression than any other free software license.

Clarifying License Compatibility

If you found some code and wanted to incorporate it into a GPLed project, GPLv2 said that the license on the other code was not allowed to have any restrictions that were not already in GPLv2. As long as that was the case, we said the license was GPL-compatible.

However, some licenses had requirements that weren"t really restrictive, because they were so easy to comply with. For example, some licenses say that they don"t give you permission to use certain trademarks. That"s not really an additional restriction: if that clause wasn"t there, you still wouldn"t have permission to use the trademark. We always said those licenses were compatible with GPLv2, too.

Now, GPLv3 explicitly gives everyone permission to use code that has requirements like this. These new terms should help clear up misunderstandings about which licenses are GPL-compatible, why that is, and what you can do with GPL-compatible code.

New Compatible Licenses

In addition to clarifying the rules about licenses that are already GPL-compatible, GPLv3 is also newly compatible with a few other licenses. The Apache License 2.0 is a prime example. Lots of great free software is available under this license, with strong communities surrounding it. We hope that this change in GPLv3 will foster more cooperation and sharing within the free software community. The chart below helps illustrate some common compatibility relationships between different free software licenses:

Arrows pointing from one license to another indicate that the first license is compatible with the second. This is true even if you follow multiple arrows to get from one license to the other; so, for example, the ISC license is compatible with GPLv3. GPLv2 is compatible with GPLv3 if the program allows you to choose "any later version" of the GPL, which is the case for most software released under this license. This diagram is not comprehensive (see our licenses page for a more complete list of licenses compatible with GPLv2 and GPLv3), but plainly illustrates that GPLv3 is compatible with just about everything GPLv2 is, and then some.

The GNU Affero GPL version 3 has also been brought into the fold. The original Affero GPL was designed to ensure that all users of a web application would be able to receive its source. The GNU Affero GPL version 3 broadens this goal: it is applicable to all network-interactive software, so it will also work well for programs like game servers. The additional provision is also more flexible, so that if someone uses AGPLed source in an application without a network interface, they"ll only have to provide source in the same sort of way the GPL has always required. By making these two licenses compatible, developers of network-interactive software will be able to strengthen their copyleft while still building on top of the mature body of GPLed code available to them.

More Ways for Developers to Provide Source

One of the fundamental requirements of the GPL is that when you distribute object code to users, you must also provide them with a way to get the source. GPLv2 gave you a few ways to do this, and GPLv3 keeps those intact with some clarification. It also offers you new ways to provide source when you convey object code over a network. For instance, when you host object code on a web or FTP server, you can simply provide instructions that tell visitors how to get the source from a third-party server. Thanks to this new option, fulfilling this requirement should be easier for many small distributors who only make a few changes to large bodies of source.

The new license also makes it much easier to convey object code via BitTorrent. First, people who are merely downloading or seeding the torrent are exempt from the license"s requirements for conveying the software. Then, whoever starts the torrent can provide source by simply telling other torrent users where it is available on a public network server.

These new options help keep the GPL in line with community standards for offering source, without making it harder for users to get.

Less Source to Distribute: New System Libraries Exception

Both versions of the GPL require you to provide all the source necessary to build the software, including supporting libraries, compilation scripts, and so on. They also draw the line at System Libraries: you"re not required to provide the source for certain core components of the operating system, such as the C library.

GPLv3 has adjusted the definition of System Library to include software that may not come directly with the operating system, but that all users of the software can reasonably be expected to have. For example, it now also includes the standard libraries of common programming languages such as Python and Ruby.

The new definition also makes it clear that you can combine GPLed software with GPL-incompatible System Libraries, such as OpenSolaris" C library, and distribute them both together. These changes will make life easier for free software distributors who want to provide these combinations to their users.

A Global License

GPLv2 talks about "distribution" a lot—when you share the program with someone else, you"re distributing it. The license never says what distribution is, because the term was borrowed from United States copyright law. We expected that judges would look there for the definition. However, we later found out that copyright laws in other countries use the same word, but give it different meanings. Because of this, a judge in such a country might analyze GPLv2 differently than a judge in the United States.

GPLv3 uses a new term, "convey," and provides a definition for that term. "Convey" has the same meaning we intended for "distribute," but now that this is explained directly in the license, it should be easy for people everywhere to understand what we meant. There are other minor changes throughout the license that will also help ensure it is applied consistently worldwide.

When the Rules Are Broken: A Smooth Path to Compliance

Under GPLv2, if you violated the license in any way, your rights were automatically and permanently lost. The only way to get them back was to petition the copyright holder. While a strong defense against violations is valuable, this policy could cause a lot of headache when someone accidentally ran afoul of the rules. Asking all the copyright holders for a formal restoration of the license could be burdensome and costly: a typical GNU/Linux distribution draws upon the work of thousands.

GPLv3 offers a reprieve for good behavior: if you violate the license, you"ll get your rights back once you stop the violation, unless a copyright holder contacts you within 60 days. After you receive such a notice, you can have your rights fully restored if you"re a first-time violator and correct the violation within 30 days. Otherwise, you can work out the issue on a case-by-case basis with the copyright holders who contacted you, and your rights will be restored afterward.

Compliance with the GPL has always been the top priority of the FSF Compliance Lab and other groups enforcing the license worldwide. These changes ensure that compliance remains the top priority for enforcers, and gives violators incentive to comply.

The Latest and Greatest

Some of these changes probably seem less important to you than others. That"s okay. Every project is different, and needs different things from its license. But odds are that a number of these improvements will help you and your work.

And taken as a whole, all these upgrades represent something more: we made a better copyleft. It does more to protect users" freedom, but it also enables more cooperation in the free software community. But updating the license is only part of the job: in order for people to get the benefits it offers, developers need to use GPLv3 for their projects, too. By releasing your own software under the new license, everyone who deals with it—users, other developers, distributors, even lawyers—will benefit. We hope you"ll use GPLv3 for your next release.

If you"d like to learn more about upgrading your project to GPLv3, the FSF Compliance Lab would be happy to assist you. On our web site , you can find basic instructions for using the license , and an FAQ addressing common concerns that people have about it. If your situation is more complicated than that, please contact us and we"ll do what we can to help you with your transition. Together, we can help protect freedom for all users.

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

GNU расшифровывается как "GNU is not UNIX" и обозначает масштабный проект, в рамках которого разрабатываются различные системные библиотеки и приложения. Всё, что создано в рамках этого проекта, имеет открытый исходный код (open source). Это значит, что любой человек, обладающими должными знаниями в программировании, может взять этот код за основу собственных разработок, обладая полным правом изменять и распространять его.

Разработанные в рамках проекта программные продукты, дополненные системным ядром GNU Hard, легли в основу полноценной операционной системы, которая также обозначалась термином GNU. Но её создание, которое берет начало в 1990-м году, не закончено до настоящего времени. Зато в 1991 году появилось детище Линуса Торвальдса – ядро Linux. И вот тут-то проект GNU сыграл огромную роль в развитии Linux в качестве операционной системы. Ведь система – это не только ядро, а цельная совокупность системного программного обеспечения, включающего в себя библиотеки, утилиты, драйвера и многое другое. И именно наработки участников GNU, которые были использованы совместно с ядром Linux, явили миру тот самый продукт, который сейчас успешно конкурирует с Windows и MacOS. И называется он «GNU/Linux», причем первая часть чаще всего отбрасывается, что, в общем случае, неправильно.

Помимо программного обеспечения в рамках проекта GNU была создана лицензия General Public License (GNU GPL), которая стала основной в мире open source и получила широкое применение. Она регламентирует распространение свободного программного обеспечения и является крайне демократичной. Она гласит, что любой пользователь имеет право изменять, распространять и использовать в своих проектах исходный код приложений, отмеченных этой лицензией. При этом на все дочерние программы также будет распространяться действие GPL. То есть разработчик, использующий открытый код, также производит открытый код, а сама лицензия таким образом наследуется. Это является обязательным правилом, но существуют способы, позволяющие обойти GPL и закрыть собственные коды на базе использованных открытых.

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

Несмотря на то, что 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 3 человеческим языком

Интеллектуальная собственность - не хрен собачий, помните об этом. © Артемий Лебедев

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

GNU General Public License - это свободная лицензия для программного обеспечения, разработанная Фондом Свободного Программного Обеспечения (Free Software Foundation). Если коммерческие лицензии запрещают распространять и изменять программное обеспечение, то GNU GPL, наоборот, разрешает и даже гарантирует право пользователя на свободное использование, распространение и модификацию программ. Большая часть программного обеспечения Free Software Foundation распространяется под лицензией GNU GPL. Любой автор может использовать эту лицензию для своего ПО.

GPL дает вам множество прав:

  • запускать и использовать свободные программы в любых целях
  • распространять копии свободного ПО
  • получить вместе с программой ее исходный код
  • модифицировать программу или использовать ее часть при разработке нового свободного ПО

… и накладывает всего одну обязанность:

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

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

Однако и здесь есть свои послабления. Если вы модифицируете программу исключительно для собственных нужд и не собираетесь распространять ее - вам не обязательно делиться со всей Сетью своим кодом. Передача «свободного» ПО через peer-to-peer сети фактически приравнивается к простой передаче ПО от пользователя к пользователю. Соответственно, распространять GPL-софт через торрент теперь можно без предоставления исходного кода, достаточно просто оставить ссылку на общедоступный сервер, где этот код выложен. Это нововведение, которого не было в GPL2.

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

Авторские права на свободное ПО принадлежат его разработчикам. При этом авторы не дают никаких гарантий на свои программы и не несут ответственности за проблемы, возникшие в результате их использования. Модифицированные версии программ должны помечаться как «измененные», также должна проставляться дата внесения изменений. Это делается с целью защиты авторов, чтобы им не приписывали чужие ошибки. Программа, созданная на основе «свободного» кода, должна распространяться также на условиях GPL, она не может быть переведена на коммерческую лицензию модификаторами и прочими «третьими лицами». Что понятно, иначе многие «свободные» разработки давно уже были бы растащены и закрыты, а всякие жадные до денег компании зарабатывали бы на них и даже не думали делиться кодом со «свободной» общественностью. Правообладатели имеют право перелицензировать свою программу (т. е. выпустить ее под другой лицензией, в том числе и коммерческой), но при этом они не могут отозвать лицензии у тех, кто уже успел получить программу под GPL.

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

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

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

Удалять вышеперечисленную информацию из оригинальной версии программы, равно как и изменять ее, запрещается. А вот в модифицированной версии кроме всего вышеперечисленного и отметки о внесенных изменениях могут быть прописаны дополнительные условия, установленные «переразработчиками» . Эти дополнения должны помочь в вопросах совместимости GPL с другими свободными лицензиями, подробная информация о них содержится в 7-ом пункте GPL3 .

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

Софтверный патент - это патент на какое-либо программное решение. Запатентована может быть любая мелочь, например, компания Amazon запатентовала «покупку одним кликом», теперь они могут подать в суд на любую компанию, которая случайно повторит эту элементарную технологию. В США таким образом запатентован практически каждый шаг в создании программы, написать программу и не нарушить при этом чьи-нибудь патенты практически невозможно. Microsoft активно пользуется таким положением вещей, заявляя, что использование свободного ПО незаконно. Недавно «мелкомягкие» сменили позицию и заявили, что не будут преследовать пользователей свободного ПО за нарушение авторских прав - при условии что те получают софт от поставщиков, работающих с Microsoft. Эта открытая попытка нажиться на пользователях свободного ПО противоречит принципам свободы, прописанным в GPL .

GPL3 гарантирует, что патенты не могут быть использованы с целью «закабалить» свободную программу. Исходный код программы должен быть доступен для копирования, бесплатно и с соблюдением всех условий GPL, в любом случае - даже если распространитель передает ПО, сознательно полагаясь на патентную лицензию. Несогласным с таким положением вещей предлагается просто перестать распространять программу. Это правило работает во всех подобных ситуациях. Если какие-либо посторонние обязательства не позволяют вам распространять программу в соответствии с требованиями GPL - вы должны вовсе отказаться от ее распространения.

За нарушение условий «свободной» лицензии тоже можно поплатиться, правда, не так жестоко как в случае с коммерческими лицензиями - вы просто теряете все права, которые дает GPL , начиная с права пользования программой. Чтобы оказаться «вне закона» достаточно начать распространять или модифицировать «свободное» ПО непрописанным или запрещенным в лицензии образом (например, скрывать код модифицированной вами программы, запрещать дальнейшим пользователям его изучение и т. д.). Предъявить вам претензии по поводу нарушения лицензии может конкретный обладатель авторских прав на программу, с которой вы «нехорошо» обошлись. Впрочем, GPL достаточно лояльна по отношению к нарушителям и действует по принципу «исправленному - верить».

Если в течение 30 дней после получения уведомления от обладателя авторских прав вы исправите положение и перестанете нарушать лицензию - ваши права будут полностью восстановлены. Если вы проявите сознательность и ликвидируете нарушение, не дожидаясь письма от авторов программы, а они так и не соизволят уведомить вас об уже исправленном нарушении в течение 60 дней - ваши права также считаются полностью восстановленными. Если ни вы, ни правообладатели не проявляете никакого беспокойства по поводу нарушения лицензии… что ж, на нет и суда нет. Но помните, что формально вы - злостный нарушитель, лишенный прав, и вас могут припереть к стенке в любую минуту.

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

Как распространитель программы, вы не вправе требовать от пользователей выплачивать вам лицензионные платежи или как-то иначе заставлять их расплачиваться за возможность пользоваться правами, предоставляемыми GPL . Эти права передаются «бэзвозмездно», то есть даром (при этом сама программа, как уже говорилось выше, не обязана быть бесплатной). В общем, вы не имеете права ограничивать право других пользоваться их правами.

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

Сравнивая две последние версии GPL сложно сказать, что такого есть во второй, чего нет в третьей. Проще, наоборот, перечислить чего нет в GPL2 . Вторая версия GPL вышла в 1991 году и просуществовала практически без изменений почти 15 лет. За это время появилось множество новых технологий и типов ПО, которые она не охватывает. Здесь нет ни слова о DRM и «тивоизации», peer-to-peer сетях и многом другом.

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

«Обладатель исключительных прав обязан предоставить любому лицу права на использование программного обеспечения либо не приобретать исключительных прав вообще». «В том случае если распространение и/или использование Программы в отдельных государствах ограничено соглашениями в области патентных или авторских прав, первоначальный правообладатель, распространяющий Программу на условиях настоящей Лицензии, вправе ограничить территорию распространения Программы, указав только те государства, на территории которых допускается распространение Программы без ограничений…«

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

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

Автор не претендует на кристально ясное понимание всех условий GPL3 =) Если вы обнаружили в тексте неточность или какой-то важный момент упущен - пишите, тыкайте автора носом в ошибки и они будут исправлены =)