История

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

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

В те времена, когда программное обеспечение было состоявляющей частью компьютера, оно разрабатывалось с той же скоростью и в то же время, что и апаратное обеспечение. Время проектирования ЭВМ Мир, начиная с теоретических разработок и заканчивая эксплуатационным образцом, составило 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 было достаточно обширно, не хватало сущей малости -- ядра. Было BSD-ядро, я не знаю, почему оно не приглянулось ребятам из FSF. Никто не мешал его перелицензировать под GPL. Есть же Debian GNU/kFreeBSD. Это какие-то личные заморочки. Нужно понимать, RMS замечательная личность, он очень красноречив, харизматичен и говорит очень много правильных вещей, вместе с тем у него очень много всяких исторических наслоений очень странных, и периодически он начинает изрекать всякие глупости типа: "все про Линуса (Торвальдса) знают, считают, что свободные программы это Линус а мы, значит, типа, ничего не сделали. На самом деле все сделали мы, а Линус так только, ядро написал."

Непонятно, чем BSD-ядро не подошло FSF. Хотя, надо понимать, что к конца 80-х началу 90-х в BSD ситуация была абсолютно такая же, там тоже были свои unix wars, помните, почему закрыли ветку FreeBSD 1, потому же, почему был отозван BSD 4.4. В нем нашли большой кусок кода, который оказался кому-то принадлежащим, и этот кто-то сказал -- только через мой труп или через ваши деньги, и BSD 4.4 отозвали вышел BSD4.3-Reno, это BSD 4.4 + весь код, который можно было включить, и там произошли большие всякие перетряхи, а может лично с McKusick'ом RMS что-то не поделил...

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

Первоначально там были взяты куски из MINIX'а, которые потом были выброшены по лицензионным соображениям (дольше всего держалась файловая система, которую нужно было переписывать от начала до конца, но её тоже переписали, слишком уж она была учебно-тренировочная).

В этом же 1991 (уточнить!) году научный руководитель сказал Патрику Фолькердинку: вот тебе ядро, вот утилиты, сделай операционку. И в качестве дипломной работы он сделал дистрибутив. Фактически совершилось то, что раньше делалось десятилетиями. За год было создано ядро имелось достаточно нормальное окружение (утилиты), и вот из этого ядра и этого окружения, которые взяты из очень разных мест, собраны по всему миру, некий студент дипломник за год создал то, что называется дистрибутив -- комплект ПО с ядром. Нечто, что можно засунуть в компьютер на сидюке, установить, и получится операционная система. Эта штука была беспрецедентная, потому что до тех пор, все-таки, производство операционных систем как таковых было уделом крупных производителей или доставалась вам по университетской программе, как BSD. В 1992 году он сдал диплом и забыл про него, хотелось человеку работать, бабки зарабатывать, а не собирать из свободных программ какие-то операционные системы. И что вы думаете, в течение всего 1992 года его все стали клевать: "Мужик, ты тут сделал свободную операционную систему, мы тут ее у себя уже поставили, вот оно уже у нас стоит. Ты куда вообще делся, давай, продолжай. Ты ж понимаешь, что ничего другого нету". В 1993 году вышел первый плановый релиз дистрибутива Slackware (так он стал называться к тому моменту). Еще двое там было у истоков.

После этого процесс производства и выдачи программного продукта под названием ОС перешел из многолетней практики в практику месяцев, потому что тут же начали появляться другие дистрибутивы, вторым, по-моему, был сразу RedHat, Там американцы сказали: "там в Европе с этим Линуксом что-то такое делают интересное, а у нас тут только унылое BSD, щас мы тоже что-нибудь сделаем." Пришла некая команда со словами: "о, это же новая технология, щас мы ею воспользуемся, у нас же все программируют, нам ничего не надо делать, только продавай себе услуги". В течение всех 90-х наблюдался рост числа различных дистрибутивов, получивших название "операционная система GNU/Linux", и теперь понятно, что дистрибутив -- это не сами эти свободные программы, которые и без того одинаковые, и безусловно не ядро (а Linux -- это как раз ядро). Дистрибутив и компания, которая его производит, это те люди, которые собираются и делают из разрозненного набора операционную систему со своими присущими ей свойствами (например, вы могли заметить, что Ubuntu и ALT Linux отличаются, хотя оба Линуксы).

По статистике заметно, что активный рост дистрибутивов Линукс начинается всякий раз, когда выходит очередная версия Windows. Вышла Windows 95 в 94 году, 94-95 год -- это время зарождения многих дистрибутивов. Когда люди поняли, что им нужно переучиваться (с DOS, Win 3.1, и т.п.), они решили, что будут переучиваться на Линукс, а не на Windows 95. То же самое происходило в 99-2000 году, то же самое происходило с выходом XP, когда это было, а уж с выходом Vista я уже вообще молчу, даже самые унылые люди смотрят в сторону чего угодно, накопить денег и купить Mac вместе с MacOS, или плюнуть на все и перейти на этот ужасный Линукс, но только бы не Vista.

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


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

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

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

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

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

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

Level

Maintainer

Start date

End date

35

1

1

1

1

PavelSutyrin, Allena, VsevolodKrishchenko