BeOS: система, которую никто не собирался создавать
Из-за ограниченности бюджета и недостатка времени, операционную систему собирались приобрести на стороне... Но, как оказалось, ни одна система не отвечала принципиальным требованиям стартапа - и отвечающую этим требованиям пришлось писать самим, с нуля.
Хотя бы одна ее часть уже существовала в природе: эти самые требования. Ни одно из них не было случайным, каждое прошло не один раунд обсуждений и споров, и даже авторитет Жана-Луи в созданной им компании не всегда приводил его к победе. В своде требований была описана потрясающая система.
Создается впечатление, что качество операционных систем или компьютерных платформ почти не влияет на их судьбу. Или влияет, но совсем не так, как следовало бы. Правда, все лучшее из лучших исчезнувших творений человеческого гения перенимается оставшимися в живых, делая их немного лучше.
Продолжение. Начало, предыдущие части здесь, здесь и здесь.
Названия компьютера и операционной системы
Я буду называть все компьютеры от Be "BeBox". Это их официальное название, но с ним не все так просто. Оно вошло в обращение только в 1995, и появилось стихийно. Его никто не придумывал специально. До 1995 компьютеры своей разработки назывались в компании по разному. Часто их называли "computer", иногда в французским акцентом.
Самый первый, "мелкосерийный", вариант называли Be Machine. Стив Сакоман собрал в своем гараже 30 экземпляров Be Machine, для сотрудников компании. Естественно, ему помогали сотрудники, даже глава компании - но главным и самым полезным помощником был 12-летний сын Стива.
Эксплуатация Be Machine выявляла недостатки, и порождала многочисленные идеи по улучшению компьютера. Собственно, именно для этого их и "выпустили" таким большим тиражом. Ими пользовались даже бухгалтер компании, и офис-менеджер. Поэтому, очень скоро, компьютер у специалистов по разработке компьютера стал существенно отличаться от Be Machine.
Кто-то назвал его Be-1, созвучно с B-1 (как бомбардировщик), и это прижилось. А Be на процессорах PPC-603, естественно, стал Be-2. Но скоро и это название, также стихийно, изменилось на BeBox.
Его сделали официальным. Жан-Луи не хотел, чтобы в названии компьютера были цифры. Странная мания, чем-то напоминает стиль Джобса. BeBox его вполне устраивал. Название не только прижилось - его стали использовать ретроспективно, для обозначения прежних моделей компьютера. Те самые 30 Be Machine теперь называли Hobbit BeBox. Кстати, у коллекционеров каждая такая машинка стоит теперь чуть ли не миллион долларов, но их остались единицы, в свободную продажу они никогда не поступали.
Операционную систему назвали BeOS тогда же, когда поняли что без написания своей собственной системы не обойтись.
Свод требований
Система не должна была занимать сотни мегабайт на диске. Именно поэтому Unix’ы даже не рассматривались в качестве кандидата на роль операционной системы для BeBox.
В ней должно было быть ядро (низкоуровневый сервис системы, отвечающий за базовые операции - процессы, потоки, работу планировщика заданий, семафоры, зоны, порты, коммуникации между процессорами и т. п.).
В числе необходимых особенностей системы были вытесняющая многозадачность, защищенная виртуальная память, многопоточность, и поддержка многопроцессорных конфигураций.
За важные аспекты работы системы должны были отвечать ее внутренние "серверы", в случае приобретения системы на стороне они могли быть переименованы как угодно, но все они должны были исполняться в отдельных процессах, возможно с несколькими потоками. Application Server (отвечающий за запуск и инициализацию программ), Storage Server (управление постоянной памятью), Audio Server, Net Server и другие.
От конструкции системы и к ее важнейших процессов (таких как запуск системы, управление потоками и процессами, управление обменом сообщениями между процессами, работа с сетью и периферией, поддержка TCP/IP, и т. п.) требовали:
- чистоту и внятность реализации (контролировать можно только понятные механизмы);
- подробность и внятность документации;
- открытость (для "умного" пользователя).
При всей очевидности этих требований, их никогда не записывали в технических заданиях, и не обращали никакого внимания на их соблюдение.
Неудивительно, что на поиск сторонней операционной системы ушло много сил и времени. Удивительнее другое: в мире нашлась операционная система, Chorus OS, которая отвечала почти всем этим требованиям.
Свод требований восстановлен "по факту": в технической документации, с невероятной четкостью и ясностью, описаны даже те элементы и процессы операционной системы, которые обычно запутаны, противоречивы и граничат с магией. Сам этот свод никогда не был опубликован.
BeOS
Аккуратная реализация требований к системе потребовала от разработчиков примерно столько же времени, сколько уходит на разработку операционных систем в которых эти требования сформулированы нечетко.
В BeOS случались временные отступления от этих правил, когда у разработчиков не было времени, но именно временные. По окончании аврала, любой ценой, главные принципы обязательно восстанавливали.
На спокойном этапе разработки системы, с особой тщательностью, учитывался характер хоббитов.
Влияние хоббитов было, в основном, положительным: почти весь исходный код BeOS был написан на C и C++. В том числе и низкоуровневый. Благодаря этому, систему удавалось переносить на принципиально другие архитектуры относительно легко. Относительно.
В известной мне части свода требований нет ни одного, связанного с пользовательским интерфейсом. Это не случайно. Смирившись с неизбежным, Жан-Луи разрешил писать свою собственную систему, но все что связано с интерфейсом, оконной и графической систем он упорно откладывал.
Как оказалось, он искал подходящего "донора", надеясь решить интерфейсный вопрос, как минимум, выиграв время.
В 1992 году в компанию пришел Стив Хоровиц, недавний выпускник университета, знаток пользовательских интерфейсов и аномально большого числа языков программирования. Его первым заданием стало изучение PostScript. Человек занимался любимым делом, и за это получал приличную зарплату, в компании которая явно не страдала от избытка денег.
Его мучили угрызения совести, пока ему не сообщили его главную задачу.
Графика и пользовательский интерфейс
Оконную операционную система от Sun Microsystems, написанную на Display PostScript, Жан-Луи предполагал использовать в качестве графического интерфейса BeOS. Или как основу этого интерфейса.
Стиву Хоровицу поручался весь круг вопросов, связанный с адаптацией NeWS в BeOS. Я думаю, Жан-Луи просыпался по ночам в холодном поту, вспоминая о том, что если NeWS будет признана подходящей, придется вести переговоры о приобретении лицензий сразу у двух монстров (у Sun Microsystems и у Adobe Systems). Это было бы нелегко, но выиграть время было необходимо.
Стив Хоровиц заставил NeWS "шевелиться" в BeOS, но пришел к выводу что перенос этой системы в BeOS и ее адаптация займут нереально много времени. Он подробно описал в отчете сложности переноса и адаптации, и объяснил почему они нереальны.
Теперь еще и графику с оконной системой и пользовательским интерфейсом нужно делать самим?
Но тут выяснилось, что Бенуа Шиллингз, никому об этом не говоря, потихоньку работал над своим вариантом графической системы со всеми ее подсистемами, с нуля - и уже многого добился. Даже у самых занятых людей должно быть свободное время. Иначе, в трудный час, подобные чудеса будут попросту невозможны.
Бенуа стал начальником отдела графики и интерфейса, а Стив Хоровец - сотрудником этого отдела.
Пользовательский интерфейс системы тоже обсуждали всей компанией. Как ни странно, в результате получился один из лучших пользовательских интерфейсов в индустрии. Хотя, возможно, именно поэтому.
Продолжение следует