AGPL
AGPL® (gnu. Affero GPL, рус. Аферистская GPL, греч. ΤΓΔA 'Τρωϊκός' Γενική Δημόσιο Άδεια) — усиленная версия универсальной общественной генеральной лицензии GPL, которая призвана погубить ваш бизнес на корню за счет требования передать общественности код, который вы рассчитывали спрятать, завернув его в веб-сервис или просто сайт и брать плату за процент или электронные товары.
Суть лицензии достаточно коварна для неподготовленного читателя. Она использует древнюю технологию троянского коня, когда один из программистов вашей компании, не умея читать, скоммунил часть кода под этой лицензией, надеясь на быстрое решение, которое требовало от него начальство.
Суть кратко[править]
Продается сыр, на вид бесплатно.
LGPL 2.1 < GPL 2.0 < AGPL 3.0 < Столлман
- AGPL := обязан выложить копию ключа от квартиры + GPL, или покупай подписку у авторов за вертолет
- GPL := обязан выложить код и использовать только из-под AGPL или GPL, Affero рекомендует обновить до AGPL
- LGPL := имеешь право только линковать, часть кода под LGPL обязан выложить, Столлман рекомендует обновить до GPL
- Linux := ядро в заложниках GPL 2.0, разрешены переговоры через свободные API и ABI с любыми программами[1]
Вводное слово о LGPL[править]
В стародавние времена (1991) были созданы лицензия GPL v2 и LGPL v2. Первая позиционировалась, как «свободная лицензия» для программ, а вторая — для библиотек. Но люди просто не поняли Ричарда Мэттью Столлмана, который имел в виду, что LGPL не для всех библиотек, а просто меньшая, то есть менее жесткая. Пришлось переименовать LGPL из «библиотечной» (library) в «меньшую» (lesser), чтобы свободолюбивые программисты перестали дарить бизнесу кучу кода даром, а вместо этого использовали жестко освобождающую копилефт лицензию GPL v2. Жесткость состоит в том, что если в ваш код попал хотя бы кусочек по лицензии GPL v2, то вы обязаны выложить весь свой код на обозрение общественности. Столлман таким образом выступает в роли своеобразного Робина Гуда, отнимая свободу копирайта прибыль у богатых интеграторов и отдавая ее бедным стартаперам (в современном мире это действие называется «копилефт заражение»).
LGPL изначально отличалась от GPL лишь тем, что LGPL-код можно использовать из кода под закрытой коммерческой лицензией, как динамическую библиотеку, а а GPL код — нельзя. При этом LGPL код можно проапгрейдить до GPL, то есть «принять жесткие меры» против копипастеров, лишив их преимущества в конкурентной борьбе. Стабильной версией для второй ветки языка gnu являются парнокопытноидущие GPL 2.0 и LGPL 2.1.
Столлман до сих пор грустит, что его поняли неправильно: он хотел дать народу свободу на чтение кода программ, а вовсе не бесплатное использование кода чужих программ, как его подразумевают пираты и стартаперы. Компьютерные философы находят причину недопонимания в трудности однозначного восприятия разницы между корнями слов freedom и liberty между народами, но мы не об этом. Особую боль ему доставило, что куча людей, не читая его лицензию, публиковали все подряд библиотеки под LGPL, предоставив компаниям возможность невозбранно использовать результаты своего труда в коммерческих целях за счет динамической линковки. А он-то хотел, чтобы люди осознанно выбирали между GPL, LGPL и другими лицензиями. Видимо беда в том, что Столлман до восхождения на трон gnu сам был грамотным технарем и программистом и не ожидал, что многим людям читать лень.
Обнаружение лазейки[править]
Столлман конечно молодец, постарался со своей GNU Ω GPL ®, как и Линус © Linux™, но не тут-то было. Смышленые комбинаторы стартаперы нашли лазейку в мир GPL через software-as-a-service (SaaS) и web service. На языке простых смертных это можно объяснить так: вы берете код под лицезнией GPL и LGPL свободолюбивых программистов, заворачиваете его в виде лендинга GUI или ajax API и поставляете лидам клиентам по протоколу HTTP с доступом по JavaScript. Этот метод неожиданно удовлетворяет оговорке в условиях GPL о праве использования кода для своих нужд в продукте без публикации самого продукта. То есть если вы не продаете сам интернет-магазин, а лишь продаете через него другие элитарные, электронные или бытовые продукты, то прокатит.
К недостатком такого подхода имеет смысл отнести то, о чем яростно кричали в свое было время молодости и Столлман, и Линус: долго, старательно и жадно пряча правки в коде на своем закрытом сервисе, вы однажды приходите к тому, что ваши штатные программисты не справляются с числом дыр (уязвимостей) и багов (ошибок), накопившихся в системе[2]. Таким образом число багов умножается на число программистов и делится на коэффициент погрешности, вычисляемый из величины среднего опыта и здоровья участвующих программистов.
AGPL — суровая заплатка к GPL[править]
Как говорится: нет худа без добра[3]. С 2000 по 2001 годы Столлман беседовал с Генри Пулом о разрешении этого вопроса с дырой в GPL, при участии Affero, Inc.[4]. Результатом этих бесед стала публикация AGPL v1 в 2002 и AGPL v3 в 2007, призванные разрешить неоднозначность толкования GPL в пользу комбинаторов, использующих софт под GPL для продажи своих электронных продуктов (см. выше). А для любителей халявы, которые читать любят меньше была преподнесена AGPL, которую могут грамотно использовать богатые компании для уничтожения более мелких (либо захвата в свои клиенты или штат). Делать это очень просто: нужно всего-лишь покрыть свой код двойной лицензией AGPL + коммерческая[5], выложить на просторы github интернета и разрекламировать. Когда новоиспеченный комбинатор, заметив халяву, использует его в своем интернет-магазине, то компания, владеющая копирайтом на код, предъявит ему через своих адвокатов требование тройной вилки из русских сказок: публикуй общественности код своего интернет-магазина (AGPL), проплачивай ежемесячно наш коммерческий вариант лицензии на этот код (ежемесячная многодолларовая такса) или доделай качество своего интерент-магазина и переходи в подчинение в наш штат (M$, IBM и друзья).
Метод этот подобен методу отлова шаловливых рученок на honeypot (горшочек с медом) и методу Троянского Коня (шутл. Τρωϊκός). Первый более известен среди технарей, второй — среди любителей эллинской истории и/или древних языков. Деревенский люд также любит в таком случае вспоминать про сыр в мышеловке.
К слову сказать, Столлман не против, если ты, анонимус, будешь закрыто использовать код под GPL 2+ в своем интернет-магазине, но никогда не используй AGPL, если только не хочешь вспомнить шахматы, русские народные сказки (вилка) и обанкротиться. Есть предположение, что Столлман не против, так как сам так делает, но не будем о грустном. Есть альтернативное мнение, что Столлман просто делает вирусную рекламу крупным компаниям, которую ему хорошо проплатили, но мы же не Зог, чтобы в такое верить. В общем для «интенет-магазина» с закрытым кодом выбирай из: GPL 2+, LGPL 2.1+, но не забудь, что Линус дал добро на GPL 2 only[1] для кода своего ядра, а не GPL 2+, как хотел Столлман (так что код ядра не правь, зря силы потратишь).
BSD наносит ответный удар[править]
. . . . . . . +. _____ . . + . . . . ,-~" "~-. + ,^ ___ ^. + . . . / .^ ^. \ . _ . Y l o ! Y . __CL\H--. . l_ `.___.' _,[ L__/_\H' \\--_- + |^~"-----------""~ ^| + __L_(=): ]-_ _-- - + . ! ! . T__\ /H. //---- - . . \ / ~^-H--' ^. .^ . " +. "-.._____.,-" . . + . . + . + . + . . . . -Row Death Star (1)
Анонимус, ты ведь в курсе, что Linux — открытое ядро многих платных систем и решений? Например, Ubuntu и Android приносят немалую моржу своим владельцам. Фишка в том, что любителям халявы, коих в развивающихся и развитых странах миллионы, говорят, что «вы получите это совершенно бесплатно в отличие от Win и Mac, хватайте, пока не разобрали», а потом берут деньги за сопутствующие расширения, облачные интернет сервисы и поддержку.
Еще на заре становления Windows и Linux (до нулевых) некоторые пираты и комбинаторы осознали, что GPL им почти никакой свободы в их понимании не дает. И тогда были рождены три новых *BSD магната: FreeBSD, NetBSD и OpenBSD. Каждая из этих ОС преследует свои личные цели, но суть сводится к тому, что их ядра находятся не под лицензией GPL, как у Linux, а под вариацией некопилефт лицензии BSD. То есть их код ты, анонимус, можешь модифицировать и использовать в своем закрытом продукте невозбранно и без ограничений: без завертывания GPL 2 в веб-сервис и LGPL в библиотеку. И тебе даже не придется публиковать свой код, халява, ловись! Естественно есть свои подводные камни: это подходит только для серверов, так как прикладные программы под FreeBSD программисты редко пишут, нерентабельно. И всего множества драйверов оборудования ты с BSD не получишь. Но тем не менее, бывалые мужики халяву оценили[6].
MIT — альтернативная BSD некопилефт лицензия, и ее уважают больше, так как BSD опозорилась на заре своего становления четвертым рекламным условием, идущим пунктом 3, который позже был вырезан. Но злопамятные ничего не забывают. Linux с нуля не перепишешь, поэтому великие комбинаторы предпочитают использовать для своих быстрых доходных решений чаще gnu Linux, чем bsd FreeBSD, да и поклонников среди программистов у последнего меньше.
Эпилог про мечту Робина Гуда[править]
Каждый Робин Гуд, в своих заоблачных мечтах, хочет урвать права, ресурсы или деньги у богатых и отдать бедным. Вот только на чьей стороне он играет на практике? Допустим вы — Столлман или Линус и решили сделать код общедоступным для стабилизации против багов или just for fun. Но что вы получаете на практике? Вот сисдит в офисе компании программист и выбирает, какой кусок свободного кода можно использовать для казино с блекджеком интернет-магазина. Видит, что вместо свободного кода (BSD, MIT) все пестрит освобождающим кодом (копилефт, GPL), защищенным копирайтом GNU. А компания требует создавать код без стронних лицензионных ограничений. В итоге многим офисным программистам приходится многократно писать велосипеды, обзывая это ноу-хао кодом, соответсвующим OOP и MVC. Получает ли в такой ситуации наш Столлман Робин Гуд свой профит от уменьшения количества багов в системах? Нет, не получает, так как типичные ошибки повторяются многократно, безгрешные программисты слишком дорого стоят, существуют только в вакууме своих фантазий и то недолго. Получают ли системные архитекторы свой профит от того, что люди, изучив историю и теорию, не пишут вновь и вновь велосипедов? Может и получают но только в том виде, что тогда никто не может составить конкуренцию компаниям, изначально предоставившим подобные решения, со скрытыми внутри костылями и нагромождениями, без капли рефакторинга. Но больший профит получают те, кто продвигают свои программы, операционные системы, фреймворки и интернет-сервисы. Так на чьей стороне сыграл Робин Гуд? Видимо на стороне монополии крупных компаний и конечных пользователей-потребителей.
Есть один не очень удачно поставленный фильм Обитаемый остров 2009 года, по фантастической повести из Трилогии Каммерера братьев А. и Б. Стругацких. Так вот там есть такие люди, которых называют подпольщиками, или простите выродками (в авторской лексике), которые тоже играют роль Робинов Гудов, сражаясь с Неизвестными Отцами, стоящими у власти. Вот только, когда любого подпольщика спрашиваешь, что он сделает, когда победит, тот оказывается просто мечтает занять место Неизвестных Отцов, а вовсе не подарить народу свободу. При этом наличие подпольщиков косвенно поднимает авторитет и усиливает власть Неизвестных Отцов. Но это уже философия и оффтоп. Анонимус, лучше читай книги.
Наглядное дерево удовольствия[править]
Примечания[править]
- ↑ 1,0 1,1 The Linux Kernel is provided under the terms of the GNU General Public License version 2 only (GPL-2.0), as provided in LICENSES/preferred/GPL-2.0, with an explicit syscall exception described in LICENSES/exceptions/Linux-syscall-note, as described in the COPYING file.
- ↑ Каждому из программистов постоянно хочется добавить в код свою уникальную неповторимую великолепную фичу (возможность) вместо того, чтобы упрощать и стабилизировать код, написанный их предшественниками.
- ↑ на зверя страшного найдется свой однажды волкодав
- ↑ неофициально известная среди славянских народов как Аферистская Корпорация (прим. ред.)
- ↑ Пример AGPL-яда
- ↑ ArcaOS Noae … includes device drivers for a number of network adapters, either using Arca Noae’s MultiMac technology, which employs FreeBSD driver code, older IBM and third-party-supplied drivers, or a selection of GenMAC drivers.