👩‍💻 Корни Linux и рождение GNU.

·

3 min read

Корни #Linux прослеживаются ещё с 70-х годов 20-го века. Точкой отсчёта можно считать появление операционной системы Unix в 1969-м году в США в фирме Bell Laboratories, дочернем подразделении компании AT&T. Unix стала основной для большого количества операционных систем промышленного класса. Linux же больше всего обязан своей жизнью двум проектам — GNU и [Minix.

](ru.wikipedia.org/wiki/Minix) История проекта GNU началась в сентябре 1983-го года. Основоположник проекта GNU, Ричард Столлман работал в это время в лаборатории искусственного интеллекта Массачусетского технологического института. Столлмана называют одним из самых выдающихся программистов нашего времени.

В той среде, к которой принадлежал Столлман, было принято свободно обмениваться программами и их исходными кодами. Лицензия же на Unix от AT&T, к примеру, стоила 40 000 долларов. Позволить себе купить её могли только достаточно крупные фирмы. А без обладания лицензией, программист не имел права использовать исходные коды системы в своих разработках. Это препятствовало обмену идеями в сфере программирования и сильно тормозило процесс создания программ, поскольку вместо того, чтобы позаимствовать готовый кусок кода для решения той или иной задачи, разработчик программы был вынужден писать эту часть кода заново, что сродни изобретению колеса.

Столлман решил изменить это положение вещей в программировании. В 1983-м году он объявил о начале разработки проекта GNU, целью которого было создание полностью открытой операционной системы.

Аббревиатура GNU расшифровывается как «GNU — это не Unix» (GNU is Not Unix). Unix всегда была несвободным ПО, то есть она лишает своих пользователей свободы сотрудничества, а также контроля над своими компьютерами (как Windows в наши дни). Чуть позже Столлман написал свой знаменитый Манифест GNU, который стал основой для лицензии GPL (GNU General Public License). Роль этой лицензии нельзя переоценить, она изменила всю компьютерную индустрию.

Основная идея GPL состоит в том, что пользователь должен обладать следующими четырьмя правами (или четырьмя свободами):

- Правом запускать программу для любых целей (свобода 0);
- Правом изучать устройство программы и приспосабливать её к своим потребностям (свобода 1), что предполагает доступ к исходному коду программы;
- Правом распространять программу, имея возможность помочь другим (свобода 2);
- Правом улучшать программу и публиковать улучшения, в пользу всего сообщества (свобода 3), что тоже предполагает доступ к исходному коду программы.

Программное обеспечение, распространяемое под лицензией GPL, можно как угодно использовать, копировать, дорабатывать, модифицировать, передавать или продавать модифицированные версии другим лицам при условии, что результат такой переработки тоже будет распространяться под лицензией GPL. Последнее условие — самое важное и определяющее в этой лицензии. Оно гарантирует, что результаты усилий разработчиков свободного ПО останутся открытыми и не станут частью какого-либо лицензированного обычным способом продукта. Оно также отличает свободное ПО от ПО, распространяемого бесплатно.

Одно из требований этой лицензии состоит в том, что продавая ПО под лицензией GPL, вы должны предоставить исходные коды этого ПО каждому, кто захочет получить к ним доступ. Лицензия GPL **«делает ПО свободным и гарантирует, что оно останется свободным».

К 1990-му году в рамках проекта GNU было создано большинство компонент, необходимых для функционирования свободной операционной системы. Помимо текстового редактора Emacs, Столлман создал компилятор gcc (GNU C Compiler) и отладчик gdb. Будучи выдающимся программистом, Ричард Столлман в одиночку сумел создать эффективный и надёжный компилятор, который превосходит по своим качествам продукты коммерческих поставщиков, создаваемые целыми группами программистов. Поскольку изначально при его создании ставилась задача обеспечения переносимости, сегодня существуют версии этого компилятора практически для всех операционных систем. Позже были созданы компиляторы и для других языков программирования, включая C++, Pascal и Fortran.** Поэтому сейчас аббревиатура GCC расшифровывается как GNU Compiler Collection.

Как пишет Ричард Столлман: «К 1990-му году система GNU была практически закончена, не хватало только одного из базовых компонентов — ядра.» Ожидалось, что ядро (оно получило название Hurd) будет реализовано как набор серверных процессов, работающих на Mach — микроядре, создаваемом в Университете Карнеги-Меллона, а затем в Университете штата Юта. Начало разработки откладывалось в ожидании выпуска Mach, которое, как было обещано, будет выпущено в виде свободно распространяемого программного обеспечения. Но его появление всё откладывалось, и тут появилось ядро, разработанное финским студентом Линусом Торвальдсом, получившее название #Linux. Линус создал его в попытках усовершенствовать свою домашнюю операционную систему Minix, о которой будет отдельный пост.