Про OpenSource и GPL

Походу дела народ то ли не понимает, о чем идет речь, то ли дурачками прикидывается, но вот уже не первый раз встречаю полное непонимание народом смысла GPL. У вот на днях вылез очередной «рыбак».

Основные перлы опущу, перейду к сути.

Во-первых автор рассматривает какое-то абстрактное философское определение «Что такое свободное программное обеспечение?» и на этом строит совершенно бредовые выводу. Ну причем здесь философия? Любого рода софт распространяется под лицензией (юридическую ценность, которой, надо еще доказать, особенно у нас). Для подобных программ, как правило, это GPL, вот и нужно её рассматривать. А то распинаются тут на тему сферического коня в вакуме…

Начнем с основного — с «защиты свобод». Если автор (разработчик, коллектив разработчиков) некой программы не желает, чтобы ее функциональность могла быть расширена сторонними лицами — это, как ни печально, его святое право…

Интересно, а как себе автор представляет насильное расширение программы третьими лицами? Врываются, значит, «сторонние лица» к Васе Пупкину (бедный Вася Пупкин), приставляют нож к горлу и говорят: «А ну быстро расширяй функциональность своей программы как нам надо!». Бред, правда? Если автор не хочет такой функциональности, считает её лишней, то никто не заставляет его эту функциональность внедрять. Да, сторонние разработчики могут выпустить патч или даже саму программу с новым функционалом, но это будет уже другая программа. Есстественно они обязаны опубликовать исходники, которые им автор предоставил под соответствующей лицензией. Пойдем дальше:

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

Ещё один бред. Для начала отметим, что надежность (а следовательно безопасность и уязвимость) программы не определяется открытостью или закрытостью кода. Это очередная байка от мелкомягких. :-) Как говаривал Жеглов: «порядок в стране определяется не количеством воров, а способностью властей их обезвреживать». Т.е. дырки есть и там и там, но в свободном софте они ловятся быстрее и качественее. Одна голова хорошо, а две лучше однако. А уж о глюкавости закрытого коммерческого мелкомягкого кода вообще уже давно слагают легенды.

Теперь по поводу «примочек» или плагинов. Во первых «плагин» — это интерфейс и ничто иное. Если автору удобно такой интерфейс делать, то он его делает. Он, этот интерфейс, не безгрешен есстественно, и в нем тоже могут быть дырки, которые, сюрприз, тоже надо править. Причем здесь OpenSource и FreeWare не совсем понятно. Интересно, а где гарантия, что в коде плагина нет трояна? А такой гарантии нет. Вывод: помимо чисто технического удобства, плагин, это способ сказать «это сторонний код, используйте его на свой страх и риск» или «мне лень ковырятся со всем требуемым функционалом, я налеплю интерфейс, а вы потом сами плагинов понапишите, ладно…»

Ну а теперь вернемся к GPL, ведь именно её мы и используем, когда используем ту или иную программу. Для начала не надо себе льстить (а нужно подойти поближе), никаких особых know-how и мега открытий в 99,9% программ нет. Так что с точки зрения алгоритмов никакую сверхценность они не представляют. Тем не менее, если уж такой алгоритм был изобретен Васей Пупкиным, то никто не заставляет Васю раскрывать свой бесценный алгоритм:

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.

Т.е. не хочешь, не надо, только к проге не примазывайся. Если есть интерфейс к плагинам, используй этот интерфейс, ну а нет, допиши :-) И твой мега-алгоритм останется закрытым.

Кстати GPL не распространяется на результаты работы программы, так что например на конфиги Quake GPL не действует :-)

Ну а теперь о вкусном. Что мы получаем взамен при использовании GPL:

  1. Можно начать разработку программы не с нуля
  2. Можно доработать программу «напильником» под свои нужды
  3. Можно быть независимым от автора программы

Но и автор получет несомненное преимущество:

  1. Любой может помочь автору улучшить программу (или иначе — никто не может улучшить программу не поделившись с автором изменениями)

Это и есть самое главное достоинство GPL: Одна голова хорошо, а две лучше. Т.е. это не просто исходники, которые любой может тайно запихнуть в свою прогу. Это возможность получать улучшения кода, алгоритмов, и как следствие улучшение самой программы. И это — работает!