История

Когда компьютеры были очень большие, а программы очень маленькие... Разработка ПО была неотъемлемой частью разработки компьютера. Программное обеспечение было жестко привязано к аппаратному обеспечению конкретной машины. Именно тогда и появились сами термины "аппаратное обеспечение", "программное обеспечение".

Простая мясорубка состоит из железяк, и работает сама по себе. Элементы компьютера, даже правильно собранные, сами по себе не заработают. Для работы компьютера необходимы программы. Аппаратное обеспечение должно быть скреплено прораммным.

В те времена, когда программное обеспечение было состоявляющей частью компьютера, оно разрабатывалось с той же скоростью и в то же время, что и апаратное обеспечение. Время проектирования ЭВМ Мир, начиная с теоретических разработок и заканчивая эксплуатационным образцом, составило 12 лет. И на протяжении всего этого времени параллельно с аппаратным разрабатывалось программное обеспечение, именно для "скрепления" аппаратуры, а не для решения пользовательских задач. Пользователи для решения своих задач писали программы сами. Заграницей использовались аналогичные подходы. Надо заметить, что в то время, в отличии от нынешней ситуации, Советский Союз опережал весь мир в области разработки вычислительной техники.

Неотъемлемость программного обеспчения от аппаратного можно наблюдать и в некоторых современных устройствах. Например,в неуправляемых свитчах. В них нет операционной системы, это почти что просто хабы, тем не менее, в них есть регистры для хранения MAC-адресов, реализация технологии защиты от spoof'инга, и т. п.

Исторической и идеологической предшественницей GNU/Linux является операционная система UNIX. История UNIX весьма обширна и интересна, но мы заострим вниманиt лишь на трех вещах, её касающихся.

Для себя

Исторически операционная система UNIX разрабатывалась "для себя". После того, как Bell Labs отказались от участия в проекте MULTICS группа исследователей из Bell Labs, задействованная в этом проекте, хотела продолжить работу над созданием операционной системы с разделением времени. Название UNIX предложил Брайан Керниган, по ассоциациям с MULTICS. Предложение купить компьютер для проекта было отклонено и поначалу для экспериментов использовался найденный в подвале старый PDP-7.

Немного ранее Кен Томпсон создал игру Star Trek(в мемуарах используется названии Space Travel, так как Star Trek является зарегестрированным торговым знаком), и был ею весьма увлечен. Дениса Ритчи интересовали больше научные, теоретические вещи --- он разрабатывал языки программирования(A, B). Таким образом, имелась необходимость в обеспечении работы нескольких пользователей на одной машине. Чтобы на одном компьтере могли одновременно выполняться несколько процессов и работать несколько пользователей рабочей среде нужно было ядро, отвечающее за грамотное распределение ресурсов --- машинного времени, оперативной памяти, внешних устройств. Уже тогда было очевидно, что такое ядро должно быть обособлено от пользовательсктих задач, и должно лишь предоставлять возможность разделения ресурсов.

По сути, ядро операционной системы --- это всего лишь большая библиотека, предоставляющая функции для управления ресурсами. Ресурс можно заказать, освободить, можно получить отказ в доступе к ресурсу, и т.п. Доступ к программному интерфейсу ядра предоставляется в виде системных вызовов(system calls, 2-ая секция man). Программы, позволяющие воспользоваться функциями ядра называют утилитами. По замыслу разработчиков набор утилит должен реализовывать командный интерфейс ядра на основе прораммного. Утилиты позволяют манипулировать файлами, производить печать, и т. д.

[ПРИКРЕПЛЁННЫЙ ФАЙЛ] Кен Томпсон и Денис Ритчи продвинулись в реализации этой концепции. В начале 70-ых задачей начал заниматься целый отдел, началось внедрение. Начальник отдела увлекался макроязыками и предложил идею конвейера, то есть, потоковую передачу данных вместо макроподстановок и скобочек как в лиспе.

В этой технологии отсутствует способ нормальной реализации механизма ветвления, однако, при использовании командной строки механизмы сложнее конвейер могут запутать пользователя.

Затем в разработке начал принимать участие известный поупляризатор науки Брайан Керниган. Он предложил две вещи:

В то время уже существовали языки программирования, такие как PL/I и FORTRAN. Но они были ориентированы больше на решение пользовательских задач, чем системных. FORTRAN(FORmula TRANslator), первый высокоуровневый язык, был придуман математиками и ориентирован на решение математических задач. ALGOL-60 имел некоторые особенности, не позволявшие создавать нормальные реализации. PL/I только начинал приобретать законченную форму, и также был ориентирован скорее на пользовательские задачи, хотя и содержал много интересных идей. Керниган предложил реализовать язык прогрраммирования ориентированный на системные задачи.

Потенциальным результатом использования подобного подхода была возможность портирования операционной системы на компьютер с принципиально отличающейся архитектурой. В 1972 ОС была портирована на 32-разрядный Interdata-32 с 16-разрядного PDP-11. Небольшая часть ядра, отвечающая за работу с аппаратурой, разумеется, реализовывалась и реализовывается на ассемблере в любом случае, однако вся логика операционной системы была написана на языке C.

Переносимость программ

Портируемость программных продуктов стала, в определенном смысле, революционным событием. Появилась возможность создать программный продукт один раз, и после этого использовать его на различных компьютерах. В случае одинаковой архитектуры достаточно было простого копирования, в случае разных --- перекомпиляции. Жизненный цикл программного продукта полностью отделился от жизненного цикла компьютера и даже класса компьютеров. Это начало происходить в 70-ые годы. Стало ясно, что производство программных продуктов отличается от производстав глинянных горшков: для того, чтобы сделать в два раза больше горшков надо потратить в два раза больше времени, сил, глины; для того, чтобы сделать две копии программы достаточно вызвать утилиту копирования. Стало очевидно, что переносимые программные продукты не являются материальными.

Еще важнее то, что выяснилась еще одна вещь: для создания хорошей программы целесообразно привлечь к её разработке разных людей, заинтересованных в немного разных задачах.

Например, кто-то пишет программу для форматирования текста для печати на принтере IBM. Благодаря портируемости, эту программу могут использовать еще в десятке организаций. В одной из организация сотрудник хочет напечатать поздравление секретарше шефа в стихотворной форме и добавляет в программу возможности центрирования и использования красивых шрифтов.

Суть в том, что пользователи модифицируют программный продукт, приспосабливая его к своим нуждам.

Коллективная разработка

После того, как UNIX получила распространение, в течение порядка десяти лет она развивалась вышеописанным способом. Люди писали программы, на конференциях обменивались ими, находили ошибки и дорабатывали, снова обменивались. Этот процесс затронул не столько UNIX разрабатывавшийся Кеном Томпсоном и Денисом Ричи в Bell Labs(тот был производственным продуктом и принадлежал компании AT&T), сколько UNIX-подобную ОС, создававшуюся американскими университетами и получившую название BSD(Berkley System Distribution). Тогда же появилась концепция создания и распространения некоторого блока программ,написанных различными людьми, называющегося distribution. Авторы программ распространяли их затем, чтобы другие пользователи подправляли и дорабатывали программы. Такая форма разработки программного продукта хорошо себя зарекомендовала уже тогда, хотя в те времена, чтобы передать копию программы надо было записать её на ленту и либо отдать при личной встрече, либо выслать бандеролью. Программы тогда разрабатывались не слишком многочисленными учеными, которые постоянно встречались и общались на различных конференциях, обмениваяь не только идеями, но и их воплощениями.

Это счастье продолжалось до конца 70-ых-начала 80-ых годов, когда стала очевидно, что ОС UNIX и её подобия обладают с точки зрения бизнеса двумя очень важными свойствами:

Лицензионно-правовые аспекты

Начались так называемые unix wars. Стало выяснятся, что большинство программного кода имеет правообладателей.Более того, если программа не была написана в свободное от работы время и иного не указано в контракте, правообладателем явлется работадатель программиста. Это совершенно не согласовывалось с описанным выше академическим стилем создания программ. Разработчики UNIX-систем привыкли показывать свои работы заинтересованным коллегам, которые высказывали мнения, помогали, дополняли. Работа в сообществе сильно отличается от работы в одиночку.

Также выяснилось, что многие не задумывались о принадлежности кода, и для большого количества программ установить писались ли они в рабочее время, и кто написал какую часть не представляется возможным.

В результате, в 80-ых годах, параллельно с развитием университетских версий, произошел стремительный рост коммерческих UNIX-подобных систем. Дерево родословной UNIX-систем занимает около 24 листов формата А4.(картинка)

Одновременно с этим произошло еще три вещи:

Для программного производства 80-ые стали временем застоя. Десятилетие прошло под лозунгом "компютер в каждый дом", но при этом технологический прогресс приостановился. На 8-битных домашних компьютера не было даже полноценных операционных систем, их заменяло программное обеспечение --- Macintosh, DOS, Windows. Внимание уделялось разработке интерфейсов, повышению usability(особенно это отличало Macintosh). Технологии же не могут развиваться без исследований, а исследования не могут существовать без академической структуры.

К концу 80-х возросшая информационная связность позволила сформироваться свободному сообществу вокруг программных продуктов --- при совместной работе над проектом людям более не приходилось платить за свой энтузиазм. В конце 80-ых -- начале 90-х стали отмирать такие вещи как система UUCP, FIDO, телефонные BBS-системы, в какой-то период не выпускались даже GNU Distributions, подборки свободного ПО. В России, в силу не очень широкого распространения Интернета, всё это использовалось намного дольше. Вместе с со связностью возросло и напряжение между свободным и несвободным. Появились случаи серьезного преследования со стороны проавообладателей программных продуктов.

Именно такая участь постигла одного из самых известных людей в области свободного ПО --- Ричарда Мэтью Столлмана(RMS). Он работал над lisp-машиной(компьютером, имеющим язык lisp в качестве ассемблера), делал для неё "программное обеспечение", и вдруг выяснилось, что всё им разработанное, в том числе и текстовый редактор EMACS, написанный для личных нужд, принадлежит компании-работодателю, так как было сделано в рабочее время. Столлман не остановился на обдумывании идеи того, что ПО должно быть свободным, а перешел к действиям --- изобрел свободное лицензирование программных продуктов.

Свободное лицензирование программ

При распространении программного продукта правообладатель накладывает на него некоторые условия распространения. Ровно также, как в этих условиях может содержаться запрет на копирование, модификацию, дизассемблирование, в них может быть сказано и примерно следующее:"Программу можно дизассемблировать, распространять, модифицировать, совершать прочие действия, но при дальнейшем распространении нельзя ее закрывать или иным способом делать менее свободной."

Используя американский механизм авторской лицензии( подписанный у нотариуса документ, имеющий законную силу) RMS и его коллеги из Free Software Foundation(FSF) добились юридической значимости свободной лицензии(GPL). Во многих странах GPL либо сама является значимой, либо, как в России, принимается во внимание. Таким образом, разработчики получили возможность распространять свои программные продукты по условиям лицензии, запрещающей делать свободное ПО менее свободным. У такого подхода есть свои преимущества, о которых будет рассказано позднее.

В рамках движения FSF было создано большое количество свободных программных продуктов,однако долгое время не было ядра, лиценхированного по GPL. В принципе, существовала возможность перелицензировать ядро BSD, но этого так и не произошло. Возможно по причине того, что BSD на тот момент была втянута в unix wars, возможно, из-за каких-то разногласий между RMS и McKusick. Стоит отметить, что RMS --- замечательная личность, харизматичный оратор, но в некоторые его высказывания весьма спорны, например:"Все знают Линуса Торвальдса, и считают, что свободное ПО создал он, а FSF ничего не сделало, а на самом деле Линус так, ядро только написал, а сделали всё мы".

И вот один финнский студент(этнически, кажется, не финн), Линус Торвальдс, экспереминтируя с учебной ОС MINIX(разработанной классиком в области построения ОС --- Э. Танненбаумом), написал собственную маленькую unix-подобную ОС. ОС Линуса умещалась на дискетке и, по обычаям того времени, была несвободной. Её можно было изучать, но распространение допускалось только в университетах. Это вполне соответствовало академическому стилю, ведь никто не предполагал, что на основе учебных наработок будет делаться что-либо серьезное. Следующей целью Линуса стало создание свободной системы, без присущих университетским обучающим системам ограничений,на которой можно было бы "делать всё". Свободные утилиты уже существовали, не хватало ядра, и именно его написал Линус в 1991 году. Ядро оказалось работоспособное, пригодное к использованию в реальных условиях. (уточнить даты и версии) В первых версиях некоторые части были заимствованы из MINIX, но затем, по лицензионным соображениям, они были переписаны. Позднее всего была переделана файловая система, в первоначальном варианте чрезмерно упрощенная.

В 1991(не знаю, откуда взялся 91. Бакалавра он получил в 93, тогда же и слакварь появилась. Найти упоминания до 93 не удалось ) году Патрик Фолькердинк в качестве дипломной работы объединил свободное ядро и свободные утилиты, создав, всего за несколько месяцев, дистрибутив операционной системы, то есть, нечто такое, что, после установки на компьютер, создает операционную систему. Это было беспрецендентное явление, так как ранее создание опреационных систем считалось прерогативой крупных компаний. Благодаря активности заинтересованных в свободной ОС пользователей Патрик продолжал и продолжает делать релизы своего дистрибутива, названного им Slackware.

Как только процесс создания операционной системы стал занимать не несколько лет, а несколько месяцев, начали появляться и другие дистрибутивы --- Debian, SuSe, RedHat. Некоторые люди сочли, что создание дистрибутива это новая технология, позволяющая продавать услуги. В течение 90-ых количество дистрибутивов, получивших название "операционная система GNU/Linux" неуклонно росло. Итак, дистрибутив --- это не свободные программы, и, тем более, не ядро. Дистрибутив --- это сделанная из разрозненного набора компонент операционная система с уникальными свойствами. Например, Ubuntu и ALT Linux далеко не одинаковы, хотя и то и то является операционной системой GNU/Linux.

Статистика

показывает, что с выходом каждой новой версии Windows начинается активный рост как числа дистрибутивов Linux, так и количества их пользователей.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

35

1

1

1

1

PavelSutyrin, Allena, VsevolodKrishchenko