Зачем базовая система FreeBSD чистится от GPL-кода
Автор: Евгений Голышев
Я недавно изучал отчет о развитии операционной системы FreeBSD за четвертый квартал 2020-го, который мне напомнил о том, что во FreeBSD продолжается чистка базовой системы от компонентов, распространяющихся под лицензией GPL. За отчетный период из базовой системы был удален отладчик GDB, а немного раньше – набор компиляторов GCC. Это пара наиболее ярких примеров из целой кучи. В рамках данной статьи я бы хотел рассказать, почему происходит эта чистка. И здесь не нужно быть пользователем FreeBSD, чтобы не пройти мимо. Я верю в то, что хорошее понимание тех задач, которые решают разработчики одного из крупнейших проектов по разработке программного обеспечения, очень важно, особенно если вы тоже являетесь разработчиком. В конце концов это просто интересно. Итак, чтобы ответить на вопрос, зачем разработчики FreeBSD чистят базовую системы от компонентов, распространяющихся под лицензией GPL, необходимо понимать:
- что такое свободное программное обеспечение и лицензия GPL;
- что такое копилефт-лицензии и чем они отличаются от пермиссивных лицензий;
- что такое тивоизация.
Предлагаю разобраться со всем по порядку.
Свободное программное обеспечение
Программное обеспечение считается свободным, если оно дает вам четыре базовые свободы:
- запускать программу в любых целях как вам захочется;
- изучать исходный код программы и менять его для своих целей;
- раздавать копии программы, чтобы помочь ближнему;
- раздавать измененные вами версии программы ради блага общества.
Эти четыре базовые свободы были сформулированы хакером Ричардом Столлманом теперь уже в таком далеком 1986-м. Столлман начинал свою карьеру как программист Лаборатории искусственного интеллекта Массачусетского технологического института (МИТ), и по роду своей деятельности он не раз сталкивался с тем, что отсутствие возможности исправлять ошибки в чужом софте, которым ты вынужден по тем или иным причинам пользоваться, сильно тормозит тебя в решении твоих же задач. Один из таких эпизодов был хорошо описан в книге «Free as in Freedom: Richard Stallman's Crusade for Free Software» (она также доступна на русском языке под названием «Освобождение вашего компьютера (2.0): Ричард Столлман и революция свободного программного обеспечения»). Книги распространяются абсолютно свободно. В самой первой главе этой книги рассказывается о принтере Xerox – неземном куске техники, который был подарен лаборатории. Этот принтер превосходил своего предшественника и скоростью, и качеством печати, но через какое-то время стало известно, что он жует бумагу. Столлман хотел исправить недостаток принтера на уровне прошивки, которая управляла устройством, но не нашел ее исходных текстов. Когда он попросил исходники, ему просто отказали. Сейчас это может показаться нормальным, но в то время программное обеспечение только начинало возводиться корпорациями в статус интеллектуальной собственности, которую не раздавали налево и направо.
Позднее Столлман вспоминал разговор с человеком, который отказал ему в исходниках: «Если бы он отказал мне по личным мотивам, это трудно было бы назвать проблемой. Я бы мог в ответ посчитать его придурком, и на этом все. Но его отказ был безличным, он дал мне понять, что не будет сотрудничать не только со мной, но и вообще с кем бы то ни было. И это не только создавало проблему, но и делало ее по-настоящему огромной». Так, в один прекрасный момент Столлман стал одержим свободой программного обеспечения, бросил все и даже начал работу над созданием целой свободной операционной системы. Проект получил название GNU. Свою операционную систему он начал с технологической базы – инструментов разработки, таких как редактор кода, компилятор и отладчик – без которых создание свободной операционной системы было бы немыслимым. Но когда Столлман познакомился с Эбеном Могленом, профессором права Колумбийского университета, ему удалось создать и правовую основу для своего детища. Моглен помог Столлману отразить его идеалы в области программного обеспечения в юридическом договоре, который и по сей день заключается между разработчиками ПО и его пользователями. Этот договор получил название GNU General Public License или сокращенно GPL.
Копилефт-лицензии
Для Столлмана было важно не только отразить в тексте лицензии четыре базовые свободы, о которых я упомянул в начале, но еще и гарантировать, что однажды переданный обществу код невозможно будет отобрать и присвоить. Таким образом, если кто-то берет за основу программное обеспечение, которое распространяется на условиях GPL, и создает на его основе что-то новое или просто исправляет ошибки, производная работа также должна распространяться на условиях GPL. Так, однажды выпущенный под GPL кусок кода уже невозможно закрыть. Столлман назвал этот юридический механизм авторским левом (или копилефтом), т.е. вывернутым наизнанку авторским правом. Первые версии GPL вышли в конце 80-х и начале 90-х и стали очень популярными.
Пермиссивные лицензии
Несмотря на то, что индустрия приняла юридическое новшество, среди сторонников свободного программного обеспечения начали появляться разногласия – не все разделяли со Столлманом идею общественной формы собственности, которую помогает создавать GPL. Обязательство возвращать код сообществу на тех же условиях казалось им обременительным. Одним из ярких примеров такого разногласия произошел как не сложно догадаться с операционной системой BSD. (Напомню, что она представляла собой ответвление от оригинальной UNIX и развивалась в Калифорнийском университете в Беркли. Тогда еще у BSD не было приставки «Free», «Open» или «Net».) Столлман очень хотел, чтобы код этой операционной системы распространялся на условиях GPL, но один из ключевых разработчиков BSD по имени Кит Бостик не разделял тех самых идей общественной формы собственности. В итоге, когда Бостик в 1989-м сделал код сетевой подсистемы BSD свободным, он выбрал для нее лицензию, которая фактически никого ни в чем не ограничивала и даже позволяла любому желающему закрывать исходники. Ее единственным условием на тот момент являлось указание имени университета в описании производных работ. Таким образом, то, в чем один человек видел зло, другой человек видел интересную возможность. Кстати, в Беркли свою лицензию тоже назвали BSD. (Сегодня она крайне популярна в сообществе разработчиков свободного программного обеспечения.)
GPL и BSD стали источниками вдохновения для целой кучи лицензий на свободное ПО, которые решают самые разные задачи бизнеса и не только. Лицензии из лагеря GPL стали называться копилефт-лицензиями. К примеру, на странице Википедии, посвященной той или иной лицензии, вы даже сможете увидеть, является ли она копилефт или нет. Если является, то она, как и GPL, препятствует закрытию исходного кода производных работ. Лицензии из лагеря BSD, в свою очередь, стали называться пермиссивными (или, если на чистом русском, разрешительными) и в отличии от лицензий из лагеря GPL были не против закрытия кода производных работ.
***
С начала 90-х и до середины 2000-х внимание всей индустрии было приковано к свободному ПО. В 1991-м вышла 2-я версия GPL (известная также как GPLv2), которая стала символом этого движения. Шли жаркие споры. Одни корпорации видели в GPL угрозу, а другие начали принимать правила игры. Очевидно, что корпорации принимали (и продолжают принимать) эти правила потому, что это выгодно, но мне кажется не все до конца понимают насколько. Свободное ПО – это основа для многих программных продуктов, но оно не появляется из ниоткуда, – за ним стоит основанное на меритократии сообщество разработчиков, которое генерирует идеи, производит программное обеспечение, пишет документацию к нему и готовит кадры. Про последнее чаще всего забывают. Корпорации получили возможность не только свободно брать воплощенную в куске кода прочную основу для своих продуктов, но и приглашать на работу инженеров, которые не нуждались в погружении в этот код, что, в свою очередь, давало возможность получать от их работы выгоду прямо на старте. Таким образом, стали появляться успешные примеры компаний, чей бизнес был на 100% основан на разработке свободного программного обеспечения. Среди них здравствующая поныне и делающая миллиарды Red Hat, и давно почившая MySQL AB. Использование целыми корпорациями свободного программного обеспечения, да еще и распространяющегося на условиях GPL, как нельзя лучше показывало жизнеспособность Столлмановских идей, сформулированных еще в 80-е. Теперь стало очевидным, что разработка свободного ПО (к какому бы она лагерю не принадлежала) – не у́честь аскетов, которые обрекли себя на неоплачиваемый труд во благо общества. Здесь необходимо акцентировать особое внимание на том, что до середины нулевых у лагеря BSD были нормальные соседские отношения с GPL. Это проявлялось в том, что в базовой системе FreeBSD спокойно уживалось ПО, распространяющееся как под BSD (и другими пермиссивными) лицензиями, так и под GPL. Но все сильно изменилось к концу нулевых, когда Столлман решил сразиться с новым врагом.
Тивоизация
Суть тивоизации заключается в том, что устройство, прошивка которого основана на компонентах, распространяющихся под GPLv2 или другой копилефт-лицензией, не позволяет своему владельцу запускать модифицированные или альтернативные прошивки. Термин был придуман самим Столлманом и происходит от имени компании TiVo, которая стала одной из первых накладывать это ограничение на свои продукты. Стоит заметить, что GPLv2 никогда не запрещала тивоизацию, т.к. Столлман и Моглен не могли предугадать такой шаг со стороны компаний, когда разрабатывали текст лицензии. Несмотря на то, что компании, запрещающие перепрошивку своих устройств, могли не нарушать условий лицензии, Столлман все равно считал их действия заслуживающими порицания, т.к. они замахивались на свободу владельцев устройств делать с ними все, что они хотят. После долгих дискуссий на эту тему, он выпустил 3-ю версию GPL (известную также как GPLv3), целью которой стала борьба с тивоизацией. Лицензия оказалась более чем эффективной в этой борьбе – в системе достаточно иметь всего лишь один компонент, распространяющийся на условиях GPLv3, чтобы производитель не имел права запретить перепрошивку устройства. Но Столлман на этом не остановился и перелицензировал все программное обеспечение, разработанное в рамках своего проекта GNU. Таким образом, новые версии набора компиляторов GCC, отладчика GDB и других стали выпускаться под GPLv3. В середине нулевых у GCC и GDB не было свободных аналогов, которые бы могли сравниться с ними в стабильности и функциональности. Я уже упоминал, что без свободного компилятора и отладчика немыслимо создание свободной операционной системы – именно поэтому Столлман и разработал их одними из первых на пути создания своей операционной системы. Так, GCC использовался во FreeBSD для сборки большей части кода операционной системы и был справедливо частью ее базовой системы. Но когда набор компиляторов превратился в инструмент защиты от тивоизации, сообщество BSD оказалось под угрозой быть втянутой в чужую войну. Новые версии программного обеспечения, которое всегда было частью базовой системы, в одночасье стали распространяться на условиях, которые противоречили целям этой системы. В итоге было принято решение оставаться в стороне, но цена у этого решения была слишком высокой – во FreeBSD пришлось отказаться от обновления GCC и GDB и использовать те их версии, которые распространялись под GPLv2. Очевидно, что условия GPLv3 противоречили не только целям FreeBSD, но и целям большинства компаний, которые в основном занимались разработкой проприетарного ПО. Это послужило толчком к тому, чтобы создать альтернативы для GCC и GDB силами сообщества разработчиков свободного ПО на деньги корпораций. Так, в рамках проекта LLVM началась разработка альтернатив под пермессивной лицензией. В конце 2012-го FreeBSD была полностью переведена на сборку компилятором Clang из состава LLVM[1]. Теперь операционная система больше не зависит от GCC и GDB и они были окончательно удалены за ненадобностью из базовой системы. Другое ПО, распространяющееся под GPL, удаляется видимо по инерции, а также из-за нежелания повторять горький опыт.
Заключение
Я попытался рассказать, зачем базовая система FreeBSD чистится от компонентов, распространяющихся под лицензией GPL. Примечательно, что источником вдохновения стал квартальный отчет о развитии FreeBSD и простой вопрос, который в процессе его изучения я задал самому себе. Рассказ получился достаточно длинным, т.к. я подбирался к ответу на свой вопрос постепенно, по мере своих скромных сил и возможностей рассматривая темы, которые, на мой взгляд, помогают лучше понять ответ на него. Изучайте квартальные отчеты некоммерческих организаций, занимающихся разработкой свободного ПО, используйте свободное ПО и участвуйте в его разработке, и задавайте себе простые вопросы.