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. Последовавшие за этим результаты оказались поистине поразительными.