- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF136:GPL
Материал из Linuxformat.
- GPL: Вопросы применения
Содержание |
Новый копирайт
- Как и всякое явление в истории человечества, лицензия GPL постепенно обросла мифами. Павел Протасов намерен развенчать некоторые из них.
В конце июля сообщество разработчиков свободного ПО стало свидетелем конфликта, связанного с применением лицензии GNU GPL. Спор разгорелся между разработчиками популярной CMS Wordpress и автором одной из тем для нее. Тема называется Thesis, она распространялась по обычной проприетарной лицензии, запрещающей изменение и дальнейшее распространение.
Создатель Wordpress Мэтт Мулленвег [Matt Mullenweg] посчитал, что она представляет собой производное произведение и является продуктом переработки кода его CMS, и поэтому должна быть выпущена по лицензии GNU GPL второй версии, как и сам Wordpress.
Как это часто бывает в Интернете, спор проходил в форме «дележа мнениями»: высказаться по этой проблеме посчитало необходимым большое количество средств массовой информации и просто блоггеров. Как бывает не менее часто, обсуждение быстро перешло от частных вещей к общим: вспомнили, что такого же мнения придерживаются разработчики других популярных CMS – Drupal и Joomla. Да и авторы FAQ о GPL на сайте http://gnu.org тоже считают, что модули, добавляемые к GPL-программам, также должны распространяться под этой лицензией.
В обоснование своего мнения Мулленвег привел письмо юриста Джеймса Вэсила [James Vasile] из Software Freedom Law Center (организация, созданная для поддержки и консультирования разработчиков свободных программ). После анализа кода Wordpress и способа взаимодействия темы с самим «движком», Вэсил пришел к выводу о том, что любая тема содержит элементы, «производные» от самой CMS. Код темы состоит преимущественно из вызовов функций «движка»; то, как и в каком порядке эти функции вызываются, определяется особенностями работы самого Wordpress (см. врезку). По мнению Вэсила, написать тему, в которой не будет таких «производных» элементов, в принципе можно, но она утратит всю функциональность, содержащуюся в Wordpress, и фактически станет бесполезной. Поскольку тема создана исключительно для работы совместно с «движком», то ее создание можно уподобить соавторству, а тему вместе с Wordpress считать единой программой.
Тем временем за анализ Thesis взялись еще и программисты. Блоггер Дрю Блас [Drew Blas] обнаружил в ней большие участки кода, взятого из самого Wordpress, а также множество отдельных совпадающих строк. Это моментально перевело случай с Thesis из спорных в бесспорные: прямое заимствование кода стопроцентно делает ее «производным произведением».
А вот то, достаточно ли для этого вызовов файлами темы отдельных функций «движка», остается спорным вопросом. И сейчас нам придется оставить в покое конфликт из-за Thesis: с точки зрения соблюдения лицензии GPL он кристально ясен. Кстати, понял это и сам автор Thesis, который в конце концов изменил условия распространения своей темы, выпустив ее под GPL, как просили.
Производные и составные
В сборнике наиболее часто возникающих вопросов о GPL относительно модулей к свободным программам говорится, что «вся составная программа» («whole combined program») должна распространяться под GPL. Однако из этого почему-то делается вывод о том, что и сам модуль отдельно должен быть лицензирован по GPL. Чем этот вывод вызван – непонятно.
Нечто похожее говорится и в разделе про плагины (динамически подключаемые модули расширения): по мнению авторов FAQ, в том случае, если такой плагин «просто вызывается», то он представляет собой «отдельную программу», и распространять его можно как угодно. В случае же «динамического связывания» на него распространяется лицензия GPL. Так же обстоят дела в случае, если «свободный» плагин пишется для проприетарной программы: соединение их в «единую программу» с помощью линковки также будет нарушать GPL.
Есть в этом FAQ и вопрос про шаблоны для CMS; правда, в ответе на него разбирается только вопрос о вызове такими шаблонами кода на JavaScript. Чем считать тему для Wordpress – «модулем», «плагином» или все-таки «шаблоном» – сторонники «копилефта» тем определяли на глаз.
Основным аргументом за повальное применение GPL к темам для Wordpress является то, что ее файлы включаются в файлы самого «движка» при помощи функции include() и выполняются вместе с ними как единый процесс в памяти. Противники применения GPL утверждают, что темы можно уподобить скорее программам для конкретной ОС, которые написаны независимо и являются самостоятельными произведениями.
Однако нам это будет абсолютно неинтересно: вопросы о том, как вызывается и исполняется программа, не имеют никакого отношения к авторскому праву. К тому же большинство спорщиков забыло сослаться на сам текст GPL – а ведь в нем данный вопрос решен достаточно ясно...
В ее нулевом пункте прямо говорится о том, что является «производным продуктом»: «...“work based on the Program” means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language» – «…под “произведением, основанным на Программе”, понимается либо сама Программа, либо любое произведение, в соответствии с авторским правом считающееся производным: это означает произведение, содержащее в себе Программу или ее часть, либо в неизменном виде, либо модифицированную, В принципе, американское авторское право рассматривает производные произведения так же, как и российское. Наш Гражданский кодекс в статье 1260 говорит о том, что «автору ... производного произведения (обработки, экранизации, аранжировки, инсценировки или другого подобного произведения) принадлежат авторские права соответственно на осуществленные перевод и иную переработку другого (оригинального) произведения».
Немного более конкретен Свод законов США (часть 17, параграф 101): «“Производное произведение” – произведение, основанное на одном или более уже существующих произведений, такое как перевод, музыкальная аранжировка, постановка, беллетризация, экранизация, звукозапись, репродукция, сокращение, краткий пересказ или любой другой перевод в форму, в которую произведение может быть переделано, преобразовано или адаптировано. Произведение, состоящее из редакционных правок, аннотаций, уточнений или других изменений, которые в целом представляют исходное произведение или его авторство, признается “производным произведением”.»
(«A “derivative work” is a work based upon one or more pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which a work may be recast, transformed, or adapted. A work consisting of editorial revisions, annotations, elaborations, or other modifications which, as a whole, represent an original work of authorship, is a “derivative work”.»)
Как мы видим, для того, чтобы быть «производным», произведению необходимо содержать в себе другое произведение, полностью или частично, в измененном или неизменном виде. Автором производного произведения считается тот, кто его создал. Это, казалось бы, очевидно, однако, многие почему-то считают, будто автор первоначального произведения сохраняет за собой какую-то часть прав и на его переработку. Это не так, хотя, разумеется, автору исходного произведения принадлежит исключительное право на его переработку, и именно он решает, может или нет «появиться на свет» производное произведение.
При этом авторское право, как отечественное, так и американское, проводит границу между тем, что охраняется копирайтом, а что нет. По общему правилу, оно защищает форму произведения: для того, чтобы попасть под его защиту, работа должна существовать в какой-либо «объективной форме». То, что вы придумали, но не успели записать, копирайтом не охраняется. Кроме того, не охраняется им и содержание произведений, а также общие принципы, положенные в их основу. В американском праве для этого есть специальный критерий «выражения идеи» («idea–expression divide»): считается, что копирайт не охраняет идею, а распространяется только на ее выражение (то есть «форму произведения»).
Еще один важный критерий для предоставления произведению охраны – то, является ли оно результатом творческой деятельности. Если при творческой переработке создается новое произведение, то ему предоставляется самостоятельная охрана. Если же изменения не имеют творческого характера, то они не порождают самостоятельного произведения, и авторских прав у того, кто их внес, не возникает. Охраняются также части произведения, которые являются самостоятельным результатом творчества. Для программ этому критерию будет удовлетворять большая часть модулей и отдельных функций, которые могут быть использованы в другой программе.
Тема Thesis, как уже было сказано, вполне может считаться «производной» от кода Wordpress, и то, что она должна распространяться на условиях GPL, сомнений не вызывает. Но вот «общий случай» – вызывает, и еще какие. Действительно, какие элементы движка содержат большинство тем? Вызовы функций? Но они в отдельности не могут охраняться, поскольку не являются самостоятельным результатом творчества (хотя сам текст вызываемой функции, вполне возможно, является).
Последовательность вызовов файлов темы и их имена – это просто «общий принцип», который также не охраняется. Такое поведение целиком и полностью определяется самим Wordpress и представляет собой типичный «нетворческий» элемент в теме. Но из этого не следует, что все остальные ее части также жестко заданы и не могут быть результатом творчества.
В данном случае сторонники применения GPL ко всем темам для Wordpress считали «производным» любое произведение, в котором есть хоть какой-то элемент первоначального. Но переработкой, по закону, считается заимствование не любого элемента, а только того, который охраняется авторским правом. Отсылка к «авторскому праву» в явном виде содержится и в самой GPL, но все о ней почему-то забыли.
Кроме того, в тексте лицензии (пункт 2) говорится еще и о том, как следует распространять несколько разных программ, ес одна из них выпущена под GPL: «These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.»
(«Эти требования [по модификации программы и дальнейшему ее распространению под свободной лицензией, – прим.авт.] и/или переведенную на другой язык». [Под «Программой»с заглавной буквы понимается исходная программа, распространяемая на условиях GPL; перевод здесь и далее мой, – прим. авт.] применяются к измененному произведению в целом. Если отдельные идентифицируемые части такого произведения не являются производными от Программы и могут быть обоснованно признаны независимыми и самостоятельными произведениями сами по себе, то Лицензия и ее условия не применяются к этим частям, когда вы распространяете их как самостоятельные произведения. Но когда вы распространяете те же части в составе произведения, основанного на Программе, распространение составного произведения должно осуществляться на условиях Лицензии, при этом права, приобретенные на ее основании другими лицензиатами, распространяются на все произведение, включая каждую из его частей, независимо от того, кто является их автором».)
Это – еще один важный момент: лицензия требует применения ее условий к программе, которая является частью другой, составной программы, только в том случае, если они распространяются вместе. Как мы видим, текст FAQ про GPL содержит расширительное ее толкование: если самостоятельно написанная программа представляет собой плагин или модуль, рассчитанный на работу под управлением другого ПО, этого недостаточно для «наследования» условий GPL. То, как исполняются модули или плагины – в отдельном процессе или в разных – не имеет никакого отношения к вопросам авторского права. Одна про-грамма является частью другой только в том случае, если она фактически включена в ее состав, а не просто предназначена для включения или совместной работы.
Не выдерживает критики и аналогия с «соавторством», содержащаяся в письме юристов SFLC. Произведения, написанные в соавторстве, бывают разными. Можно написать единый и неделимый текст, а можно – текст, состоящий из частей, каждая из которых написана одним из соавторов. Во втором случае части можно будет использовать отдельно.
К слову: если в разделе «тем» на сайте http://drupal.org поискать по слову «wordpress», то в результатах поиска будет множество тем, либо основанных на «вордпрессовских», либо просто портированных из одной CMS в другую. Так что утверждение о том, что тему нельзя использовать в отрыве от «движка», для которого она была написана – это преувеличение. Эксперимент может быть повторен читателем самостоятельно для любой пары CMS.
Lewis Galoob Toys против Nintendo
Вдобавок, в США вопрос о том, что считать «производным произведением», уже разбирался в суде, в деле «Lewis Galoob Toys, Inc. v. Nintendo of America, Inc.». Иск был подан из-за того, что компания-ответчик, «Льюис Гэлуб Тойз», производила «читерские» картриджи для игровых приставок «Нинтендо». Такой картридж, называвшийся «Game Genie», позволял игроку манипулировать игровыми данными – например, давать персонажу бесконечное количество «жизней», делая его бессмертным. «Нинтендо» вполне закономерно подала в суд, утверждая, что такой картридж является «производным» от ее игр и нарушает авторское право.
Суд вполне закономерно отказал в иске, не признав «читерство» переработкой игры: по мнению суда, производное произведение должно включать в себя произведение исходное в какой-либо «форме». Все примеры таких произведений, приведенные в Своде законов, удовлетворяют этому требованию. А вот картридж «Game Genie» просто изменяет порождаемые игрой изображения, но сам их не содержит, поэтому его нельзя признать переработкой какой-либо игры. Простое взаимодействие картриджа с игрой такой переработкой не является.
Кстати, в своем решении суд ссылался еще и на знаменитое дело «Sony Corp. of America v. Universal Studios, Inc.», оно же «дело Бетамакс», которое очень известно даже в России. В нем решалась судьба домашних видеомагнитофонов: Верховный суд США тогда постановил, что ни пользователи, копирующие телепрограммы для личных целей, ни производители видеомагнитофонов не могут нести ответственность за нарушения копирайта, поскольку их действия подпадают под определение «добросовестного использования» или «fair use». Кроме того, в обоснование такого решения суд отметил, что закон должен не только охранять интересы правообладателей, но и способствовать «свободному распространению идей и информации, а также предпринимательской деятельности».
Такого же мнения придерживался суд и в случае с «Game Genie», отказавшись применять закон по аналогии и приравнивать использование этого картриджа к «переработке игры». Вдобавок, суд посчитал изменение данных игры «добросовестным использованием», а игроков, которые эти данные изменяют – не нарушающими авторское право «Нинтендо».
В общем, если сторонники применения GPL направо и налево вздумают пойти с подобным вопросом в суд, их там может ждать большое разочарование...
Что дальше?
«Лицензионный конфликт» вокруг Wordpress – это всего лишь «первый звонок». Он наглядно показал, что сторонники и GPL, и «традиционного» копирайта вполне могут применять одни и те же приемы, но в противоположных целях. Текст GPL составлен так, чтобы быть максимально понятным, но его все равно никто не читает: всем достаточно неизвестно кем написанного FAQ, полного утверждений, слабо связанных с текстом самой лицензии.
В последнее время популярно принудительное распространение охраны авторским правом на то, что не охраняется им и охраняться не может. Как мы видим, в мире «копилефта» идет примерно такой же процесс, причем идет давно и успешно. Правда, в обратную сторону...
Ссылки
- Сайт темы Thesis: http://diythemes.com/
- Мэтт Мулленвег объясняет, почему все темы для Wordpress должны распространяться под GNU GPL: http://wordpress.org/news/2009/07/themes-are-gpl-too/
- Анализ исходного кода темы Thesis: http://drewblas.com/2010/07/15/an-analysis-of-gpled-code-in-thesis/
- Страница дела «Lewis Galoob Toys, Inc. v. Nintendo of America, Inc.» в «Википедии»: http://en.wikipedia.org/wiki/Lewis_Galoob_Toys,_Inc._v._Nintendo_of_America,_Inc.
- Страница в «Википедии», посвященная «производному произведению»: http://en.wikipedia.org/wiki/Derivative_work
- Вопрос о модулях в GPL FAQ: http://www.gnu.org/licenses/gpl-faq.html#GPLModuleLicense
Технические детали
Тема для Wordpress представляет собой набор PHP- файлов и стилей CSS. Задача кода на PHP – компоновать страницу и определять ее основные составные части. При работе файлы темы вызываются в определенном порядке и формируют HTML-страницу. Стили же, накладываясь на эту страницу, определяют ее внешний вид.
Тема также может содержать файлы на JavaScript. То, из каких файлов состоит тема и в каком порядке эти файлы вызываются, жестко определено «движком» Wordpress. В файле с именем style.css содержится также служебная информация о теме, которую Wordpress показывает в административном интерфейсе. Дополнительные функции темы содержатся в файле, у которого имя также жестко определено: это functions.php, и данный файл исполняется при инициализации движка. Он содержит функции, которые вызываются остальными файлами темы, а также различные настройки.
И, наконец, третий файл с заданным заранее именем – это index.php. Это – основной файл темы, он вызывает другие файлы, имена которых могут быть произвольными. Но сам Wordpress рассчитан на вызов файлов темы, названных определенным образом, поэтому «стандартные» названия повторяются в большинстве тем: header.php – для заголовка страницы, footer.php – для «подвала», content.php – для основного текста, и так далее. Если для какой-то части страницы в теме нет файла, используется стандартный файл движка, выполняющий соответствующую функцию. Для определения того, какой файл вызвать, служит так называемая «иерархия шаблонов»: Wordpress поэтапно ищет наиболее подходящий шаблон темы. Например, для вывода записей определенной категории сначала происходит поиск шаблона category.php, затем – archive.php (шаблон для показа архива записей), и наконец, если они не найдены, используется index.php.
В наиболее типичном случае страница блога на Wordpress состоит из четырех частей: «заголовка», «боковой панели», «подвала» и «содержания». Для показа первых трех частей используются вызовы стандартных функций get_header(), get_sidebar() и get_footer(), подгружающих соответствующие шаблоны со стандартными именами. Для показа четвертой части страницы используются шаблоны, зависящие от контекста: они могут выводить отдельную запись блога, список последних записей, страницу, и так далее.