По сравнению с GPL2 третья версия заметно потолстела. Вместо 16 Кбайт черновик занимает почти 30. Большая часть текста, впрочем, выглядит знакомо. Похоже, мы его уже читали, причем не один раз. Действительно, заметная часть нового текста повторяет «GPL FAQ», полуофициальный документ, содержащий толкование и разъяснение GPL ее авторами.
Текст, как и обещалось, стал гораздо понятнее. Изменены многие фразы, ранее дававшие повод для двусмысленных толкований. Длинные абзацы из больших сложносочиненных фраз, характерные для GPL2, разделены на короткие тезисы, каждый — со своим подзаголовком. Полтора десятилетия ответов на глупые вопросы пользователей не прошли для FSF даром.
Этого, однако, нельзя сказать о частях GPL3, устанавливающих новые нормы и принципы. Тут хватает и многословия, и косноязычия, а кое-где и вовсе трудно понять, что имеется в виду. Таких мест, впрочем, немного. Большая часть изменений посвящена кодификации того, что и прежде считалось общепринятым, а теперь вот еще и официально закреплено.
GPL3 делает различие между «распространением», при котором пользователь копирует или передает готовые копии программы кому-нибудь другому, и личным использованием, при котором все создаваемые копии остаются в частном хозяйстве одного и того же лица. Последнее — разрешается безо всяких дополнительных условий. Учитывая, что этим лицом может быть не только программист-одиночка, но и огромная корпорация, послабление значительное. Хотя, конечно, более формальное, чем фактическое — на практике и сейчас никто не задумывается о необходимости, скажем, копировать исходные тексты программ на каждую рабочую станцию.
Раздел 7, «Совместимость лицензий» вводит целую систему дополнительных условий — разрешений и ограничений, которые можно добавлять к GPL3 без потери совместимости с другим кодом под GPL3 же. Разрешения (дополнительные права, передаваемые пользователю) могут быть какие угодно (что и раньше практиковалось, в том числе и самим FSF), ограничения же должны быть одного из пяти типов:
a) Требование делать некоторые предупреждения юридического и информационного характера. Например, об авторстве программы.
b) Заявления об отказе от гарантий может быть сформулировано иными словами, чем в самой GPL.
c) Запрет на упоминание определенных имен (торговых марок) в рекламе.
d) Требование, чтобы программа имела функцию, позволяющую пользователю получить ее исходный код.
e) Допустимы также некоторые ограничения, касающиеся патентных войн. Подробности — ниже.
Практически это означает, что GPL3 становится совместим с лицензиями таких важных свободных программ, как XFree86, OpenSSL, Eclipse, Apache.
Специальные усилия были приложены, чтобы добиться совместимости с вызвавшей немало споров лицензией Affero GPL (пункт d), хотя, на мой взгляд, оно того не стоило.
Большое внимание GPL3 уделяет борьбе с софтверными патентами. Во времена написания GPL2 софтверные патенты выглядели как временное и случайное извращение. Сейчас это опасность, заботящая большинство программистов во многих странах мира.
По сравнению с детально проработанными патентными нормами таких новейших лицензий, как IBM Public License или Apache Software License, патентная часть GPL3 выглядит набором общих фраз. Но софтверные патенты — сущность противоречивая. И слишком сильно полагаться на ту или иную их рационализацию неразумно.
Во-первых, GPL3 подчеркивает, что в число передаваемых прав входят и любые патенты, связанные с программой, и что, следовательно, всякий, кто распространяет программу, опираясь на GPL, отказывается от всяких патентных претензий по поводу всех прошлых и будущих ее версий.
Во-вторых, GPL3 разрешает делать исключения из этого правила для защиты в патентных войнах. Патентные войны ведутся по принципу «сам такой!». Как только крупной фирме другая крупная фирма предъявляет обвинение в нарушении патента, первая фирма смотрит в своем патентном портфеле и тоже обвиняет вторую фирму в нарушении какого-нибудь патента. Той приходится сбавлять обороты и идти на мировую.
Теоретики свободного софта спорят о допустимой форме «патентной контратаки» (patent retaliation): допустима ли защита от всех патентов, всех софтверных патентов или только от патентов, затрагивающих данную программу; должна ли контратака выражаться в отмене всей лицензии или только патентной ее части. GPL придерживается консервативного подхода — сама не устанавливает никаких санкций, а только позволяет вводить их в качестве дополнительных условий, чтобы обеспечить совместимость с наиболее важными свободными лицензиями, такие санкции практикующими.