50 оттенков Unix за 50 лет

В августе 2019 года системе Unix исполнилось 50 лет. Как система появилась, развивалась и насколько далеко всё зашло.
В начале была AT&T
История Unix напрямую связана с американской компанией AT&T. Заходя издалека, Министерство юстиции США судилось с AT&T из-за её монополии на рынке телефонии. Компания не терпела конкуренции и не давала никому зайти на рынок. В 1956 году AT&T и Минюст пришли к консенсусу: компания получает доступ только на контролируемые рынки, даёт все свои патенты в открытый доступ и её насильно не разделяют. Появилась предпосылка к свободному программному обеспечению, чувствуете?
В 1964 году началась разработка системы Multics. Ею занялись General Electric, MIT и подразделение AT&T – Bell Labs. Multics была инновационной: в системе была централизованная файловая система, реализована виртуальная память и много чего ещё. Из недостатков – высокая сложность и стоимость проекта. Из-за этого в 1979 году Bell Labs выходит из проекта.
В августе 1969 году бывшие разработчики Multics из Bell Labs Кен Томпсон, Деннис Ритчи, Дуглас Макилрой и Джо Оссанна создали неофициальную упрощённую версию системы без названия. Написали её на языке ассемблера специально для мини-компьютера PDP-7. В 1970 году вышла официальная первая редакция системы. Её назвали UNICS, а потом переименовали в Unix.

В 1972 году Томпсон и Ричи создали интерпретируемый язык B. Он был сокращённой версией языка BCPL, до одной буквы сократилось и название. В том же году на нём переписывают Unix и выпускают вторую редакцию.
В 1973 Ричи и Томпсон улучшают B и создают компилируемый язык C. В том же году выходит третья редакция Unix со встроенным компилятором C, а 15 октября на языке переписали ядро системы и выпустили четвёртую редакцию.

В 1974 году исходный код Unix передали в Калифорнийский университет в Беркли по запросу профессора компьютерных наук Боба Фарби. Он увидел систему на симпозиуме и заинтересовался её развитием. Из-за консенсуса 1956 года AT&T не могли ему отказать, но брали высокую плату за доставку и носитель. По легенде, Кен Томпсон без разрешения компании отправлял копии Unix с подписью “Love, Ken”.
В 1975 году Unix полностью переписали на C и выпустили пятую редакцию. С некоторыми изменениями в том же году вышла шестая редакция. Чем она примечательна? Она была первой, которая вышла за стены Bell Labs. Исходный код системы распространялся по лицензии “как есть”: со всеми костылями, багами и детскими болезнями. Но на помощь пришла книга по функционалу Unix Джона Лайонса. Он преподавал компьютерные науки, а его книга была популярной среди пользователей и открывала им систему. Пользователи начали создавать независимые от Bell Labs версии Unix.
И тут понеслось
В 1975 году Кен Томпсон взял годовой отпуск в Bell Labs и отправился в Калифорнийский университет в Беркли. Он помог установить шестую редакцию Unix на местный компьютер и начал внедрять компилятор языка Паскаль. Аспиратны Чак Хейли и Билл Джой доработали компилятор и добавили текстовый редактор ex.
Другие университеты интересовались наработками в Беркли, поэтому Билл Джой продолжил работу с Unix. 9 марта 1978 года мир увидел 1BSD (Berkeley Software Distribution) – не то, чтобы самобытная система, а дополненный Unix. В мае 1979 года вышла 2BSD с новым текстовым редактором vi и командной оболочкой C shell.
В 1978 году в Беркли установили компьютер с новой 32-битной архитектурой VAX. Существовала UNIX/32V – 32-битная версия седьмой редакции Unix, но она не использовала плюсы виртуальной памяти VAX. Студенты университета в Беркли переписали ядро 32V, совместили с 2BSD, взяли немного из UNIX/32V и получили 3BSD в конце 1979 года.

В 1980 году Боб Фарби и его команда из Беркли заключили контракт с DARPA – подразделением Министерства обороны США. Им нужно было подогнать Unix под сеть ARPANET – маму нынешнего Интернета. На деньги DARPA Фарби организовал Группу исследования компьютерных систем – CSRG.
За два с половиной года CSRG выпустила 4BSD, а затем 4.1BSD с версиями 4.1a, 4.1b и 4.1c. В 1983 году выходит 4.2BSD – та самая версия, которая была нужна DARPA. Она вместила всё лучшее как от ранних наработок в Беркли, так и от опыта CSRG.
А тем временем, в 1982 году AT&T выпускает свой Unix System III – солянку из седьмой редакции и кучи узконаправленных Unixов для внутреннего использования AT&T. System III мог распространяться лицензиатами всего за $100, поэтому рассматривается как первая коммерческая система AT&T.
В 1983 году появилась Unix System V – коммерчески самая успешная версия системы. Всего AT&T выпустили 4 редакции системы с дополнениями: последняя версия вышла в 1989 году и получила технологии из 4.3BSD и SunOS. Кстати, Sun Microsystems – компания Билла Джоя, аспиранта-разработчика первой BSD.

От BSD и System V произошло несчётное количество систем. Многие из них давно забыты, некоторые до сих пор на плаву. Но мало кто помнит, что всё началось с одного университета и телекоммуникационной компании.
GNU is not Unix
27 сентября 1983 году сотрудник MIT Ричард Столлман опубликовал объявление о проекте по разработке свободного программного обеспечения. Назвал он свой проект GNU – “GNU is not Unix”. В первую очередь, GNU начинался с операционной системы. Столлман планировал создать её на тех же принципах, что и Unix, но полностью свободной. Мало того, все программы GNU должны были быть совместимы с коммерческими версиями Unix.
Какие цели были у проекта GNU? Кратко: создать столько свободного ПО, чтобы оно полностью заменило проприетарное. Такое ПО должно соответствовать 4 принципам: исходный код свободен для изучения, оно свободно распространяется, свободно модифицируется и его модификации свободно распространяются.
Первыми сделали приложения пользовательского окружения. Они сразу стали популярнее проприетарных аналогов, проект набирал обороты.
В 1985 году появился GNU FSF – Фонд свободного ПО, в 1988 – лицензия на свободное ПО GNU General Public License. К 1990-му система GNU была почти готова, осталось сделать ядро системы. Его разработка затянулась из-за задержки открытия кода микроядра Mach под свободной лицензией – именно на его базе планировали сделать ядро GNU Hurd.
И тут мы подошли к переломному моменту.
Ваш покорный слуга. Linux
В 1991 году молодой аспирант Линус Торвальдс получил копию Unix-like операционной системы Minix. Это была разработка американца Эндрю Таненбаума, которую он сделал как учебное пособие для студентов. Торвальдсу не понравилось использование Minix лишь для образовательных целей, а ещё он нашёл недостатки Minix. В апреле он начал переписывать код программы эмуляции терминала без привязки к конкретной ОС.

Накодил Торвальдс не на программу, а почти на ядро системы. Свои труды выложил в открытый доступ, и тут началась магия Интернета: активисты начали дорабатывать код вместе с Торвальдсом просто так.

В один момент все поняли, что приложения GNU удобнее, чем Minix, поэтому начали работать с ними. А ядро Linux + софт от GNU = Unix-like система GNU/Linux. Столлман настаивает именно на такой формулировке: его бесит, когда систему называют просто Linux. Торвальдс его в этом стремлении игнорирует и ссылается на то, что он простой программист.
И это не всё
А что, если я скажу, что macOS и iOS тоже дальние родственницы Unix? macOS – это развитие Unix-like системы Darwin от компании Apple, a Darwin произошла от Unix-like системы NeXTSTEP – разработки компании Стива Джобса NeXT.
Ноги Android тоже растут из Unix: самая популярная система для смартфонов работает на ядре Linux. Кто-то даже называет её дистрибутивом Linux.
Мораль сей басни
Заслуги Кена Томпсона и Денниса Ритчи не забыли. В 1999 году президент США Билл Клинтон вручил им Национальную медаль в области технологий.
Unix сильнее всех остальных повлияла на развитие операционных систем. Кусочек кода, программа, модификация программы или концепция Unix встречается в большинстве современных операционок.
Unix дала толчок появлению свободного ПО. Все пазлы сложились в цельную картину благодаря влиянию системы. И, как это бывает в истории, волей случая.
И история разделилась на до 01.01.1970 и после.