Прощение несчастных случаев распространяется на GPLv2

Прощение несчастных случаев распространяется на GPLv2
Прощение несчастных случаев распространяется на GPLv2

Несколько лет назад, когда проект GPLv3 все еще находился в стадии разработки, я получил возможность посетить презентацию Ричарда Столлмана. Он исполнил все свои обязанности святого ИГНУция, а в конце сказал, что будет отвечать на вопросы в отдельной комнате сбоку. В то время как наиболее сознательные задроты вышли из комнаты для презентаций, я пошел вместе с небольшой группой поклонников свободного программного обеспечения, которые последовали за нашим святым покровителем в святая святых.

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

Да, он действительно так одевается.

Интересно, что через несколько лет после этого моя программа GPLv2 была подхвачена производителем и включена в один из их продуктов (никогда не недооценивайте себя, ребята). Так что пункт о тивоизации в конце концов действительно применим ко мне, но суть этой истории не в этом.

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

Поэтому, когда я прочитал недавнее объявление Red Hat, в котором говорилось, что они будут соблюдать льготный период для проектов GPLv2, я сразу же заинтересовался. Последует ли остальная часть сообщества примеру Red Hat? Изменит ли это чье-то мнение при выборе между GPL v2 и v3? Это вообще хорошая идея? Присоединяйтесь ко мне ниже, когда я отвечаю на эти вопросы.

Определение прощения

Заголовок объявления Red Hat - «Предоставление справедливого шанса исправить ошибки», что, по сути, является идеальным способом суммировать льготный период, добавленный к GPLv3. Но для наших целей давайте взглянем на полный текст, взятый из пункта «Прекращение действия» GPLv3:

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

Однако, если вы прекратите все нарушения настоящей Лицензии, ваша лицензия от конкретного правообладателя будет восстановлена (а) временно, если и до тех пор, пока правообладатель явно и окончательно не прекратит действие вашей лицензии, и (б) навсегда, если правообладатель не уведомит вас о нарушении каким-либо разумным способом до истечения 60 дней после прекращения.

Более того, ваша лицензия от конкретного правообладателя восстанавливается на постоянной основе, если правообладатель уведомляет вас о нарушении каким-либо разумным способом, вы впервые получили уведомление о нарушении этой Лицензии (для любой работы) от этого правообладателя, и вы устраняете нарушение в течение 30 дней после получения уведомления.

Хорошо, что это значит?

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

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

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

GPL: TL;DR

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

Включали ли вы полную копию лицензии в программу? Содержит ли каждый файл исходного кода в программе заголовок, в котором говорится, что он находится под лицензией GPL? Убедились ли вы, что все файлы, измененные из исходной версии, содержат датированные комментарии, подчеркивающие сделанные вами изменения? Если вы распространяете только бинарный файл, убедитесь, что исходный код размещен где-то, где пользователь может его найти?

Это всего лишь несколько требований, содержащихся в GPLv2, состоящей примерно из 2 500 слов. Легко понять, как кто-то, кто плохо разбирается в лицензии, может легко пропустить некоторые из более эзотерических требований, особенно в эпоху кликов и форков GitHub. Любое из этих нарушений может (по крайней мере теоретически) привести к лишению вас прав, предоставленных лицензией.

Но с положениями, добавленными в GPLv3, эти проблемы можно решить с помощью простого электронного письма или твита. Сообщите разработчику, допустившему ошибку, дайте ему 30 дней на ее исправление, и проблема исчезнет. Это гораздо более удобный способ устранения ошибок при лицензировании, что отчасти стало возможным благодаря простоте общения, которой мы теперь наслаждаемся; ситуацию, которую трудно было представить 30 лет назад, когда писалась GPLv2.

Все ли попадут на борт?

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

Google, IBM и Facebook объявили, что присоединятся к Red Hat, чтобы соблюдать льготный период для работ, подпадающих под действие GPLv2, и даже разработчики ядра Linux применяют аналогичный подход, но остается множество компаний и разработчиков. которые не обязаны делать что-либо помимо того, что написано в лицензии. Если повезет, все больше и больше компаний примут такое отношение к поддержке GPLv2, а со временем, возможно, даже отдельные разработчики; но наверняка не все.

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

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