Перейти к содержанию

1.2 Как появился Linux (How Linux Came to Be)

Linux — в некотором роде аномалия в индустрии разработки программного обеспечения. Большинство программных продуктов, будь то приложения или операционные системы, создаются в рамках хорошо организованного процесса проектирования и разработки. Я много лет проработал в индустрии разработки программного обеспечения и видел изнутри, как это устроено. Вот что обычно происходит:

  • Организация выявляет потребность клиента.
  • Собирается команда проектировщиков, которая формирует документ требований к продукту (product requirements document, PRD), точно описывающий, что именно будет делать продукт.
  • Задачи, выделенные в PRD, распределяются между группами программистов, которые пишут порученные им элементы кода.
  • По завершении код фиксируется в системе контроля версий, и продукт проходит серию циклов тестирования.
  • Когда из продукта устранены ошибки (или хотя бы большая их часть), готовый продукт поставляется клиенту.
  • Клиент пользуется продуктом в течение некоторого времени и, как правило, выявляет ошибки, пропущенные на этапе первоначального тестирования. Кроме того, обычно он определяет новые возможности и функции, которые хотел бы видеть добавленными.
  • Компания-разработчик получает обратную связь от клиентов, и цикл начинается заново.

Любопытно, что при своём появлении Linux не вписывался в этот цикл. Вместо этого аспирант Хельсинкского университета в Финляндии по имени Линус Торвальдс (Linus Torvalds) разработал ядро (kernel) Linux. В начале 1990-х годов Торвальдс заинтересовался минималистичной бесплатной операционной системой под названием Minix. Доктор Эндрю С. Таненбаум (Andrew S. Tanenbaum), университетский профессор, преподававший программирование в Нидерландах, разработал Minix как клон коммерческой операционной системы UNIX. В своё время исходный код операционной системы UNIX был предоставлен университетам в образовательных целях. Однако в конце 1980-х годов эта практика была прекращена, и Таненбаум остался без действенного инструмента, с помощью которого мог бы объяснять студентам внутреннее устройство операционной системы. Не растерявшись, Таненбаум решил создать собственную операционную систему для использования на занятиях и разработал небольшой клон ядра UNIX, который назвал Minix. Его целью было дать студентам настоящую операционную систему вместе с сопровождающим её исходным кодом. Таненбаум даже включил исходный код Minix в свой учебник «Операционные системы: разработка и реализация» (Operating Systems: Design and Implementation, Prentice Hall, 1987).

Вдохновлённый Таненбаумом и Minix, Торвальдс в 1991 году разработал собственный клон UNIX, который окрестил Linux. Эта первая версия Linux была весьма минималистичной по своей природе; она не была полноценной операционной системой, укомплектованной приложениями и утилитами. Напротив, версия Linux 0.02, выпущенная 5 октября 1991 года, состояла лишь из ядра Linux и трёх базовых утилит:

  • bash — интерфейс командной строки;
  • update — утилита для сброса буферов файловой системы на диск;
  • gcc — компилятор C++.

Беспрецедентным шагом Торвальдс выложил исходный код своей операционной системы Linux в Интернет и сделал его свободно доступным для всех желающих его загрузить. Тем самым корпоративная модель разработки программного обеспечения была полностью разрушена. Торвальдс пошёл ещё дальше. Он предложил другим программистам изменять и улучшать исходный код Linux. Linux зажил собственной жизнью и превратился в международный проект совместной разработки. Никакой секретности, никаких тщательно охраняемых авторских прав. Доступ к исходному коду Linux был открыт всем желающим.

Этот проект совместной разработки Linux продолжался несколько лет. В 1994 году была готова к выпуску версия Linux 1.0. Последовавшие за этим результаты оказались поистине поразительными.