Операционные системы имеют основополагающее значение для Интернета, каким мы его знаем сегодня, поскольку в настоящее время они обеспечивают работу миллионов серверов, компьютеров и других встроенных вычислительных устройств. Отдельное почётное место среди этого занимает ОС Linux (или GNU/Linux), используемая миллиардами человек во всём мире.
GNU — Unix-подобная ОС с открытым исходным кодом, созданная 40 лет назад в 1983 году Ричардом Столлманом. GNU поддерживается Фондом свободного программного обеспечения (FSF), который первоначально был основан вокруг этого проекта, хотя позже он расширился и стал поддерживать другие проекты свободного ПО.
Если посмотреть на зарождение движения за свободное ПО — оно начинается с GNU. Система GNU — это не просто наиболее широко используемая ОС, основанная на свободном ПО. GNU также лежит в основе философии, которая направляла движение за свободное ПО на протяжении сорока лет.
А всё началось с плохо работающего принтера…
❯ Сколько нужно программистов, чтобы доработать принтер?
В начале 1980-х годов у программиста Лаборатории искусственного интеллекта Массачусетского технологического института (MIT), Ричарда Столлмана, возникли проблемы с ненадёжным принтером Xerox 9700. Он хотел модифицировать его ПО, чтобы уведомлять пользователей о частых замятиях. Идея хорошая, но Столлман не смог получить доступ к исходному коду, чтобы внести эти изменения. Это противоречило духу открытости Лаборатории. Тогда он решил, что код ПО должен быть в свободном доступе. Столлман хотел, чтобы пользователи могли свободно использовать, изменять и распространять ПО. 27 сентября 1983 года Столлман объявил о плане разработки свободного ПО Unix-подобной ОС. Так родилась GNU (рекурсивная аббревиатура, что означает «GNU's Not Unix»).
Забегая вперёд, Столлман не смог осуществить свою мечту и написать ОС. Проект ядра ОС GNU Hurd до сих пор остаётся незавершённой. Но, вдохновлённый своей идеей о том, что несвободное ПО является антисоциальным, неэтичным и просто неправильным, он и его единомышленники начали создавать семейство ПО GNU. Из этого возникло множество других программ с открытым исходным кодом.
В 1976 году Ричард Столлман, Дэвид А. Мун и Гай Л. Стилу-младший написали EMACS, текстовый редактор, как набор макросов редактора TECO. Джеймс Гослинг, наиболее известный как родитель языка Java, затем взял идею EMACS, перенёс её на Unix и улучшил производительность отображения. Затем он передал гаражной компании Unipress права на поддержку и продажу EMACS. Именно тогда появился Столлман, как рассказывает Гослинг, и «просто присвоил весь исходный код». В 1984 году Ричард Столлман начал разработку новой реализации Emacs как свободной альтернативы проприетарному Gosling Emacs. GNU Emacs стал первой программой проекта GNU.
Столлман понял, что по неформальным правилам сообщества EMACS он не может контролировать даже свою собственную версию EMACS. Он и его коллеги решили, что пользователи могут изменять код GNU EMACS, пока они публикуют свои модификации, и их «производные» работы также будут иметь ту же лицензию GNU EMACS. Столлман переписал нарушающий авторские права код после судебного процесса между IBM и DEC против Unipress и множества резких слов от Гослинга в свой адрес. По иронии судьбы, именно в этой неблаговидной борьбе, Столлман добился одну из своих величайших достижений: Публичной лицензии GNU (GPL).
❯ Авторское лево
Разработчики хотели, чтобы ОС позволяла пользователям экспериментировать и модифицировать её самостоятельно. Это означало принятие мер по предотвращению превращения свободной ОС в несвободное.
С помощью Марка Фишера и Джерри Коэна, юристов в области интеллектуальной собственности, и Джона Гилмора, разработчика свободного ПО и соучредителя Electronic Frontier Foundation (EFF), Столлман понял, что лицензия GNU EMACS слишком ограничена. Фишер призвал Столлмана использовать авторское право в качестве основы для лицензии, в то время как Гилмор предложил: «Вероятно, следует удалить название «EMACS» из лицензии и заменить его на «ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ». Мы надеемся, что вскоре EMACS перестанет быть самой большой частью системы GNU, и лицензия будет распространяться на всё».
Используя эти идеи, Столлман создал первую версию GPL: «Авторское лево (копилефт), используемое в проекте GNU, представляет собой комбинацию уведомления об авторских правах и Стандартной общественной лицензии GNU. Уведомление об авторских правах является обычным. Стандартная общественная лицензия представляет собой лицензию на копирование, которая, по сути, гласит, что у вас есть те свободы, которые мы хотим, чтобы вы имели, и что вы не можете отнять эти свободы у кого-либо ещё».
Эти четыре свободы теперь являются основополагающими для всех лицензий на свободное ПО и лицензии с открытым исходным кодом:
- Свобода запускать программу по своему желанию и для любых целей.
- Свобода изучать, как работает программа, и изменять её так, чтобы она выполняла ваши вычисления по вашему желанию. Доступ к исходному коду является предварительным условием для этого.
- Свобода распространять копии, чтобы вы могли помочь другим.
- Свобода распространять копии ваших изменённых версий среди других. Сделав это, вы дадите всему сообществу возможность извлечь выгоду из ваших изменений. Доступ к исходному коду является предварительным условием для этого.
GPL — самая популярная и широко используемая лицензия на программное обеспечение с открытым исходным кодом. Тем не менее, по прошествии многих лет некоторые компании и разработчики почувствовали, что GPL является слишком ограничительной. Это привело к появлению альтернативных лицензий, таких как лицензия Apache и лицензия MIT, которые предлагали более либеральные условия. Лицензия MIT, вдохновлённая GPL, налагает мало ограничений на повторное использование. Пользователям ПО, использующим лицензию MIT, разрешается использовать, копировать, изменять, объединять, публиковать, распространять, сублицензировать и продавать копии ПО.
Частично эта напряжённость привела к расколу группы и появлению открытого исходного кода, который многие рассматривают как более прагматичный подход к свободе ПО.
GPL называется строгой лицензией, поскольку она совершенно несовместима с проприетарным ПО. Оно обязывает пользователя предоставлять исходный код при распространении любых копий ПО, а все изменения исходного кода должны лицензироваться по лицензии GPL.
Допустимость повторного использования по сути не делает программу свободной. Лицензия Berkely Software Distribution (BSD) и её последняя доступная версия являются наиболее допустимыми лицензиями. Однако лицензия BSD не требует, чтобы пользователи предоставляли доступ к исходному коду или каким-либо изменениям. Единственное требование состоит в том, чтобы первоначальные авторы были указаны в лицензии, прилагаемой к выпущенному приложению. ПО, выпущенное по лицензии BSD, составляет основу macOS.
GPL развивалась и с годами приобретала всё большее значение. GPLv2, пожалуй, самый важный из её вариантов, поскольку это лицензия Linux. Последняя версия, GPLv3, расширила концепции свободного ПО, включив в них управление цифровыми правами (DRM) и патенты.
Чтобы помочь поддержать разработку программ GNU, в 1985 году был основан Фонд свободного ПО (FSF) для поддержки и продвижения программистов GPL и движения за свободное ПО. FSF владеет авторскими правами на многие программы GNU. Следующей важной вехой стала разработка компилятора GNU C (GCC) в 1987 году. GCC был не только бесплатным, но и превосходил по производительности многие современные компиляторы, что обеспечило его быстрое внедрение и способствовало развитию проекта.
❯ Лучший (не)результат Столлмана
Точно так же, как каждый писатель мечтает написать великий роман, каждый программист в мечтает о написании великой программы. Таким для Столлмана является GCC, который ценится в GNU. GCC считается высшим достижением Столлмана в кругах программирования. Существуют и другие программы GNU. К ним относятся Debugger GNU (Gdb); загрузчик-системы GRUB и GNU Common Lisp. Другие проекты с открытым исходным кодом, имеющие лицензию GNU GPL, включают Ansible, Drupal, Git и WordPress.
Но самый больной вопрос заключается в том, что Столлман так и не создал успешную ОС. Действительно, к началу 90-х годов проект GNU успешно переписал большую часть системы Unix. Но всё же осталось одно яркое исключение: ядро ОС.
И можно утверждать, что в том узком, специфическом смысле, который предпочитает сам Столлман, проект GNU провалился. Полноценной работающей ОС GNU не существует. Операционная система представляет собой стек компонентов, от видимых элементов, с которыми сталкивается пользователь, до ядра. А ядро GNU, также рекурсивно называемое Hurd, всё ещё не завершено и не готово для использования, даже спустя столько времени.
Это очень амбициозный проект, настоящее микроядро, и очень немногим проектам удалось заставить его работать хорошо. Современное состояние, возможно, перешло от микроядра Mach, которое использует Hurd, к таким проектам, как seL4. Более успешный пример – но всё ещё довольно неполный – это Minix 3, который запускает механизм управления внутри всех современных чипов Intel.
Линус Торвальдс, финский студент-компьютерщик, который в 1991 году начал работать над ядром ОС в качестве хобби-проекта. Это ядро, названное Linux, в сочетании с системой GNU создало полностью свободную ОС. По сей день Столлман и FSF настаивают на том, чтобы Linux назывался «GNU/Linux».
GNU и Столлман заслуживают почёт за новаторское видение и разработку gcc, glibc и кучу утилит с нуля. Но они потратили 20 из 40 лет пытаясь завоевать признание Linux. Самый первый релиз Линуса в 1991 году, конечно, во многом зависел от GNU, но развитие ПО GNU за последние 20 с лишним лет зависело и направлялось Linux и его сообществом.
GNU не помогло и то, что с годами у Столлмана сложилась противоречивая репутация. Это достигло апогея в 2019 году, когда его защита покойного Марвина Мински, пионера искусственного интеллекта и соратника миллиардера
Празднование 40-летия GNU
Сегодня, в 2023 году, Столлман по-прежнему является членом Совета FSF, который также спонсирует проект GNU, который также продолжает попытки создать полную ОС свободного ПО. Конечно, Столлман участвовал во многих спорных идеях по разным вопросам, но влияние, которое он оказал на Linux и свободное ПО, огромно!
Если быть более справедливым и сбалансированным, проект GNU имел огромный успех, который изменил облик всей компьютерной индустрии. На одном, низком уровне, существует множество операционных систем GNU, основанных на ядре Linux, включая NixOS-подобную GNU Guix, а также несколько дистрибутивов, полностью использующих код GNU.
Но в более общем смысле концепции свободы программного обеспечения, которые формализовал и продвигал Столлман, перевернули индустрию ПО с ног на голову. А уже потом Эрик Рэймонд и Брюс Перенс нашли способ продать идею деловым людям с термином «открытый исходный код».
❯ ПО с открытым исходным кодом и свободное ПО
Операционная система GNU состоит из пакетов GNU, созданных волонтерами проекта, и свободного ПО, выпущенного третьими сторонами. Идея проекта заключалась в том, чтобы сделать возможным использование компьютера без ПО, которое каким-либо образом ущемляет свободу пользователя. Эта концепция началась с появлением компьютеров в 1980-х годах, каждый бренд поставлялся со своей собственной ОС; ни один из них не включал в себя свободное ПО.
Это означало, что первым шагом в использовании компьютера было обещание не помогать своему ближнему. Сотрудничающее сообщество было запрещено. Правило владельцев несвободного программного обеспечения гласило: «Если ты делишься с ближним, то ты — пират»
Ричард Столлман
Вы можете подумать, что всё это очень похоже на ПО с открытым исходным кодом. Однако не позволяйте никому из движения за свободное ПО услышать ваши слова – эти две группы разделены, хотя эти термины обозначают почти один и тот же диапазон программ.
В основе открытого исходного кода лежала идея о том, что люди могут свободно изменять код, если они делятся им как свободным ПО. На самом деле само свободное ПО старше, чем идея свободного ПО. На заре вычислительной техники программное обеспечение просто было общим. Однако в качестве неожиданного побочного эффекта антимонопольного иска США против IBM в 1969 году мэйнфреймы и миникомпьютеры, такие как DEC и IBM, перестали поставляться в комплекте с бесплатным ПО и начали продаваться проприетарные операционные системы и программы. К концу 70-х и началу 80-х проприетарное программное обеспечение стало новой нормой.
Движение за свободное ПО фактически предшествовало разработке GNU, начиная с 1983 года. В 1980-е годы были разработаны основные компоненты системы GNU. Затем, в 1998 году, сформировалась отколовшаяся группа, которая начала кампанию во имя открытого исходного кода.
Термин «открытый исходный код» быстро стал ассоциироваться с идеями и аргументами, основанными только на практических ценностях, таких как создание или наличие мощного и надёжного программного обеспечения. В большинстве дискуссий об «открытом исходном коде» не уделяется внимания «добру и злу», а только популярности и успеху.
Открытый исходный код упускает из виду суть свободного ПО (по крайней мере, на этом настаивают столлманисты), поэтому, хотя эти термины пересекаются, они говорят совершенно разные вещи о программах, к которым они применяются, и основаны на разных ценностях. Ценности открытого исходного кода сосредоточены на практической выгоде, и идея не предполагает агитацию за принципы. Вот почему движение за свободное ПО недовольно этим термином.
По их мнению, небесплатное ПО сводится к инструменту несправедливой власти: программа контролирует пользователя, разработчик контролирует программу; программа является инструментом доминирования. Он имеет функции, предназначенные для плохого обращения с пользователем, которые, если и не являются откровенно злонамеренными, являются результатом стимулирования разработчиков делать программное обеспечение вызывающим привыкание, контролирующим и манипулятивным. Здесь было бы легко говорить о манипуляциях больших технологий – о зависимости от социальных сетей, сборе пользовательских данных с целью получения прибыли и о бэкдорах, намеренно оставленных открытыми…
Свободное программное обеспечение не означает некоммерческое; на самом деле, свободное ПО по сути должно быть доступно для коммерческого использования, коммерческой разработки и коммерческого распространения. Пользователи имеют свободу запускать, копировать, распространять, изучать, изменять и улучшать программное обеспечение. Однако право делать свободный выбор — это именно то, к чему апеллируют свободные программы. Защитники утверждают, что СМИ предпочитают термин «открытый исходный код», потому что он скрывает этические проблемы, которые представляет движение за свободное ПО.
«Мы надеемся, что сороковая годовщина вдохновит хакеров, как старых, так и новых, присоединиться к GNU в её цели по созданию, улучшению и распространению свободного программного обеспечения по всему миру. Программное обеспечение контролирует наш мир в наши дни, а GNU — это критика и решение существующего положения вещей, в котором мы отчаянно нуждаемся, чтобы наши технологии не контролировали нас», — заявили представители GNU.
Для разработчиков наследие GNU остаётся непреходящим свидетельством идеи о том, что программное обеспечение должно расширять возможности, а не ограничивать своих пользователей.