2015-07-11

О несвободном свободном

Я всегда верил в GPL. Ну не совсем всегда. Был темный момент моего программистского прошлого, когда я просто не знал про существование свободных лицензий. И придумывал свою белиберду, в духе WTFPL.

I support free software

Осознание того, что выбросы моего программисткого творчества я ни в коем разе сопровождать пожизненно не смогу, пришло довольно рано. Ну и захотелось сделать так, чтобы кто-нибудь с Альфы Центавра, если заинтересуется моим кодом, мог бы им без проблем воспользоваться.
Сначала хотелось простоты. И всякие MIT и BSD казались хорошим выбором. Но хотелось сделать мир лучше не только своим кодом, но и участием в заговоре.
Ведь батька Столлман организовал именно заговор. Чтобы сделать любое программное обеспечение свободно доступным для всех. Если бы накопилась достаточная масса качественного софта под GPL, безо всяких поблажек вроде LGPL, то гнусные проприетарщики и софт под другими лицензиями вынуждены были бы перейти на GPL. Все.
Это хорошо. Наступило бы светлое коммунистическое будущее, где любая идея, алгоритм и т.п., воплощенные в программном продукте, становились бы достоянием всего Человечества. И свободные и счастливые энтузиасты доводили бы, на добровольных началах, софт до совершенства. Или наступило бы светлое капиталистическое будущее, где любая идея, алгоритм и т.п., воплощенные в программном продукте, становились бы одинаково доступны всем конкурентам. И, в борьбе за бабло, конкуренты бы совершенствовали софт и предлагаемые услуги.
Ради более полного воплощения этого заговора были даже исправлены баги в самой популярной и почти совершенной GPLv2. Сначала оказалось, что GPLv2 никак не защищает пользователей от патентов, DRM и тивоизации. Хитрые производители, чаще железа, умудрились обхитрить GPL, лишив пользователей и покупателей своих продуктов некоторых прав. Права использовать заложенные в коде патенты, права ломать то, что ломается, и права перепрошивать то, что перепрошивается. Залатали эти баги в GPLv3.
Потом оказалось, что интернеты. И хитрые поставщики веб сервисов не дают пользователям этих сервисов, которые пользуют эти сервисы через Сеть, тех же прав, что админам, которые пользуют этот софт непосредственно. Эти веб сервисы, получается, могут брать GPL софт, модифицировать его и никому не давать изменения. Кроме админов. Чтобы исправить эту несправедливось выпустили AGPL, ныне тоже v3.
Получается, что лицензия на ПО уже заползла на территорию патентов, способов распространения железа и особенностей использования ПО конечными пользователями. (Впрочем, GPL как раз не разделяет пользоваетей на конечных и бесконечных.) Но остаются еще авторские права. Их GPL пока не трогает. Кто код написал, тот и автор. Но не всегда. И в этом — еще один баг.

Gnu Linux

Я, начитавшись восторженных комсомольских книжек, вроде «Just for fun» или главу про сообщество ZeroMQ в их официальном руководстве, считал, что, если софт под GPL, то любой желающий, буде он способен оформить грамотный пулреквест на Гихтабе, сможет стать соавтором крутого свободного продукта. Оказалось, не так.
Ковырял и пилил я как-то внутренности OTRS. Нормальная такая бородатая система для организации работы техподдержки. На Perl написана. Нужно было сделать так, чтобы тикеты можно было создавать из внешней программы. В OTRS было для этого некоторое API, которое работало по протоколу, гордо именуемому SOAP. На деле же это был какой-то XML, очень похожий на конверты SOAP, пересылаемый по HTTP.
Я добавил пару-тройку новых вызовов, для своих нужд. И не собирался эти изменения куда-то распространять. Но парочка исправлений: приведение SOAP чуть более к стандарту и небольшое улучшение в создании тикетов, оказались довольно общими, и я решил их запулреквестить. Красивенько форкнулся, смержился, оформил изменения и заслал пулреквест.
И получил в ответ ответ. Мол так и так, хочешь быть контрибутором, будь им. Но сначала подпиши эту бумажку, отсканируй и пришли нам. Суть бумажки заключалась в том, что все права на те десять строк, что я поменял в коде OTRS, я передаю компании, которая стоит за разработкой OTRS. Впрочем, один пулреквест, где очевиднейшим образом изменялась ровно одна строчка, приняли.
Я так расстроился тем, что мое видение идеального свободного мира внезапно рухнуло, что даже не нашел сканера, чтобы бумажку за моей подписью отсканировать и отослать. Так и валяется где-то. И второй пулреквест не принят.
Многие, слишком многие компании, гордо прикрывающиеся словами «оперсорц», «FOSS» и т.п. стараются оставить (авторские) права за собой. (Не очень понятно, работает ли это в РФ.) И их понять можно. Полное владение правами на каждую строчку кода одним (юридическим) лицом дает возможность осуществлять двойное лицензирование. Для красоты, пиара, привлечения халявных разработчиков и потенциальных будущих клиентов — пожалуйста, GPL. Для денег, настоящих серьезных клиентов, платных хитрых фич — проприетарная лицензия.
Конечно, можно взять GPL версию и форкнуть. Но форк — это форк. Тут начинается маркетинговая война. Чем, ничем не отличающийся от оригинального, продукт лучше? Впрочем, есть в истории и случаи форков, которые выжили. Продукты, которые купил Oracle, были форкнуты и живут своей счастливой жизнью. Например, Jenkins — форк Hudson, LibreOffice — форк OpenOffice, MariaDB — форк MySQL. Интересно, стоящие за форками организации тоже блюдут свои права?
Linux (и ZeroMQ?) — не такой. Хоть все и начиналось с одного человека, но все росло сообществом. Нет такого физического или юридического лица, которому принадлежал бы весь код. И двойное лицензирование или перелицензирование теперь невозможно. Ибо невозможно так просто добиться согласия всех авторов. И форки не нужны :) По мне, так это как-то ближе к свободе.