28 июня 2015 г.

Рассвет Haiku

Как команда добровольцев вернула операционную систему к жизни.

Команда разработчиков Haiku за работой
Команда разработчиков Haiku за работой
Это случилось летом 2001, когда у программиста Михаеля Фипса (Michael Phipps) возникла проблема: его любимая операционная система BeOS была в шаге от исчезновения. Чувствовать эмоциональную привязанность к какому-то ни было программному обеспечению может казаться поразительно странным, но для Фипса, как и многих других (включая меня), BeOS заслужила это. Она работала потрясающе быстро на железе того времени; у неё был чистый интуитивный пользовательский интерфейс; и она предоставляла богатое, весёлое и современное программное окружение. Вкратце, мы видели, что она существенно превосходит любую другую операционную систему из доступных. Но компания, создавшая BeOS, не смогла пробиться на рынок, и её активы, включая BeOS, были проданы конкуренту.

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

Если вы когда-либо программировали, то вы можете представить, что создание операционной системы — это огромная работа. А ожидать, что люди будут делать это, когда им не платят, было бы слегка невероятным. Но для десятков разработчиков-добровольцев, которые работали над Haiku, это был труд во имя любви. За 11 лет со дня основания проекта мы выпустили 3 альфа-версии продукта, и в этом месяце мы ожидаем выпустить 4-ую, финальную альфа-версию. После этого мы перейдем к бета-этапу, который мы надеемся закончить до конца этого года, за которым последует первый официальный выпуск, известный как R1, где-то в начале 2013.

Уже сегодня каждый может установить и запустить операционную систему на Intel x86-совместимом компьютере. Многие пользователи отмечают, что даже альфа-версии Haiku кажутся настолько же стабильными, как финальные версии некоторых других продуктов. Определённо, среди всего многообразия операционных систем в разработке, Haiku, возможно, наиболее направлена на конкуренцию с распространёнными операционными системами, такими как Microsoft Windows и Mac OS. Для пользователей и разработчиков опыт работы с Haiku удивительно слажен: она быстра, отзывчива и эффективна, как BeOS. Кроме того, Haiku, не в пример своим устоявшимся соперникам, удивительно хороша в решении одной из тяжелейших проблем современных вычислений — работы с многоядерными микропроцессорами. Давайте увидим, как Haiku пришла к этому, и так ли хорошо работает операционная система вашего компьютера.

Для начала, немного истории. В 1991 году француз по имени Жан-Луиз Гассе (Jean-Louis Gassée) вместе с несколькими другими бывшими сотрудниками Apple основали Be Inc., потому что они хотели создать компьютер нового поколения. В частности, они хотели избежать ловушки обратной совместимости, свидетелями которой они были в Apple, где каждая новая версия железа и программ должна была учитывать годы прошлых систем. Первым продуктом компании стал настольный компьютер с названием BeBox. Не найдя ни одной подходящей операционной системы, инженеры Be написали собственную.

Компьютер BeBox
Компьютер BeBox
Выпущенный в октябре 1995, BeBox просуществовал недолго. BeOS же, напротив, быстро обрела небольшую, но верную группу приверженцев, и уже скоро работала на Intel x86-совместимых PC и Macintosh PowerPC клонах. В какой-то момент Apple даже рассматривала BeOS как замену своей операционной системе. В итоге компания выпустила урезанную версию BeOS для Internet-оборудования, но этого было недостаточно. В 2001 Palm приобрела Be за объявленные 11 миллионов долларов.

Ещё в то время как сделка по продаже Be подходила к завершению, Фипс запустил проект Haiku, известный в те времена как OpenBeOS (имя было изменено голосованием сообщества спустя несколько лет).

С самого начала Фипс решил, что единственной целью проекта станет воссоздание последней официальной версии BeOS, известной как R5. Оглянувшись назад, понимаешь, что это был гениальный ход. Проекты с открытым кодом, как правило, делаются для собственного удовольствия в свободное время, часто выдыхаются и откладываются, так и не добившись ничего существенного. Haiku избежала такой участи, потому что все разработчики верили в возможность пересоздания R5.

И всё же перед Фипсом и теми, кто присоединился к нему, стояла очень сложная задача. Операционная система чрезвычайно сложна, особенно такая большая как BeOS, чьи многочисленные слои и приложения проектировались изначально для совместной работы. Некоторые из наиболее одарённых инженеров Кремниевой Долины разрабатывали программу более 10 лет. Создание заново такой системы командой из добровольцев в их свободное время было сумасшедшей идеей. Но ведь именно так появился Linux, как и программное обеспечение GNU от Free Software Foundation, начиная с GNU C компилятора и заканчивая GnuCash, бухгалтерской программой.

К счастью BeOS была написана в модульном стиле, позволяя достаточно просто разрабатывать, тестировать, и затем подменять каждый из компонентов BeOS на его двойник с открытым кодом. Некоторые части BeOS уже были выпущены компанией Be в открытом коде, такие как Tracker и Deskbar, являющиеся аналогами Explorer и Taskbar в Windows, а также Finder и Dock в OS X. Одним из первых кусков кода, написанных добровольцами, был инструментарий для хранителей экрана (screen-saver kit), у которого очень простая функция, но также множество деталей. Кроме прочего, он должен постоянно следить за активностью клавиатуры и мыши, загружать настройки хранения экрана в нужные моменты, и спрашивать пароль при выключении хранителя экрана. Когда со всеми частями разобрались, Фипс заменил хранитель экрана BeOS на его версию с открытым кодом, и ко всеобщему удивлению и радости, оно заработало. Что более важно, это было доказательством концепции, показывающей, что разработчики могут заменять каждый из модулей BeOS, зная, что они будут полностью совместимы.

В 2008 мы достигли вехи (milestone). Достижение было в том, что мы смогли впервые собрать исходный код Haiku из-под самой Haiku; программисты называют эту способность само-базированием (self-hosting). Этот этап критичен для разработки любой операционной системы, потому что без него ОС всегда будет зависеть от других систем.

В то время как разработка шла полным ходом, Фипс работал над созданием организационной части для Haiku, в конце концов основав Haiku Inc. как некоммерческую организацию в 2003. В дополнение к контролю за проектом и приёмом пожертвований, Haiku Inc. владеет правами и торговыми марками web-сайта Haiku, её логотипа и, конечно, исходного кода. Весь код Haiku теперь доступен по лицензии MIT, позволяющей полный и свободный доступ к коду каждому, включая частные компании и другие проекты с открытым кодом.

Конечно же, команда Haiku должна быть внимательна, чтобы не нарушить патенты BeOS, которые всё ещё в силе. Как правило, мы поддерживаем дружеские отношения с японской программной компанией Access, которая сейчас владеет правами на BeOS; к примеру, компания позволяет нам выкладывать документацию BeOS на нашем сайте, и она никогда не мешала нашим попыткам воспроизвести технологию BeOS. Стала бы Access или какая-либо другая компания, которая думает, что имеет права на наш код, судиться с маленьким проектом как мы? Финансово это не имело бы никакого смысла, а также создало бы плохую репутацию компании. Но нам остаётся только ждать и увидеть самим. Судя по текущему бешеному состоянию в судебных тяжбах по интеллектуальной собственности в Соединённых Штатах и где бы то ни было, ни один программный продукт нельзя назвать совершенно иммунным к проблемам легальности.

В 2007 году Фипс объявил о своём уходе из проекта по личным причинам, и новая группа людей захватила Haiku Inc. Как он и ожидал перед уходом, потеря лидера не обрекла проект на смерть. Я в настоящий момент являюсь хранителем сокровищ и, вместе с другими исполнительными директорами Haiku Inc., состою в совете директоров. До сих пор мы поддерживали обороты, и на прошедшем апрельском собрании в Düsseldorf, Германия, разработчики Haiku работали над приближающейся алфа-версией.

На текущий момент мы воспроизвели BeOS R5 так точно, что даже старые приложения BeOS, которым теперь уже более 10 лет, могут работать на Haiku. Когда проект только стартовал, многие думали, что такого рода совместимость будет невозможна. Во многих областях, Haiku даже превзошла своего предшественницу. К примеру, Haiku поддерживает больше языков, чем BeOS, и более сговорчива к переводу на другие языки. Она также поддерживает современные видео-карты, новые процессоры, доступ к беспроводным сетям и позволяет задействовать больше памяти, чем BeOS.

И в плане программирования Haiku значительно облегчает дизайн пользовательских интерфейсов для приложений, потому что у неё есть встроенный инструмент раскладки (layout tool), позволяющий автоматически располагать иконки и другие виджеты (widgets) на экране. С BeOS разработчикам приходилось указывать каждую деталь раскладки, выравнивать кнопки с флажками вручную, к примеру. Эти и другие улучшения позволили Haiku оставаться действенной, учитывая молниеносный темп инноваций в компьютерном оборудовании и программах.

Вы можете удивиться: при существующих Windows, Mac OS X, сотен версий Linux и бесчисленных мобильных ОС, действительно ли нужна миру Haiku?

Да, нужна, по многим причинам. Во многом схожи с природными, компьютерные вирусы цветут в моно-культуре, и потому что среди нас так много компьютеров Windows, вирусы для Windows находят много жертв. Далее, если одна операционная система установила монополию, её создателям нет большого смысла улучшать программное обеспечение. (Вызов со стороны Mozilla Firefox и есть, в конце концов, движущая сила для Microsoft к обновлению Internet Explorer). Также разнообразие ведёт к взаимной совместимости, потому что оно призывает разработчиков ПО создавать код, который слаженно работает с другими. Когда нет соревнования — нет побуждающей силы стремиться к этому.

Но Haiku делает больше, чем просто расширяет генофонд операционных систем. Одна из первых особенностей, которые люди замечаю в Haiku — это то, что она не похожа ни на Windows, ни на OS X или Linux. Она уникальна. Linux, к примеру, основан на ядре (kernel), которое изначально было спроектировано для использования на серверах и только потом было адаптировано для настольных систем. Как следствие, ядро иногда прокидывает пользовательский интерфейс, что пользователи Linux ощущают как раздражительные задержки, когда их компьютеры делают что-то тяжёлое, как прожигание DVD или сборку кода. Ядро Haiku всегда существовало для персональных компьютеров, и, как полагается, оно всегда отдаёт приоритет тому, что происходит с графическим пользовательским интерфейсом.

Между ядром и графическим интерфейсом есть то, что называется программным интерфейсом приложений, или API. API — это то, что разработчики приложений используют для доступа к другим программным системам; дизайн API оказывает влияние как на разработчиков, так и на непосредственных пользователей. У Haiku есть только одно API. Linux, напротив, имеет сотни API и примерно столько же пользовательских интерфейсов, так что вы не можете переключиться плавно с одной версии Linux на другую. Та версия, которую вы используете, может значительно изменить внешний вид экрана вашего компьютера, методы загрузки и исполнения программ, а также множество других вещей, все из которых усложняют разработку приложения, которое выполняется одинаково хорошо на всех Linux системах.

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

Что действительно отличает Haiku, так это её эффективность и скорость. На моём настольном компьютере 3-хлетней давности Haiku загружается с холодного старта за 10-15 секунд и занимает только около 170 мегабайт RAM во время работы. В сравнении с другими операционными системами она наиболее эффективно расходует вычислительные ресурсы. Haiku ощущается быстрой и отзывчивой даже когда работает на старых системах, которые иначе были бы признаны устаревшими, ибо они не могут больше совладать с неэффективностью и загруженностью других операционных систем.

Во многом эффективность и скорость Haiku есть прямой результат наследия BeOS. BeOS была спроектирована изначально для максимального использования потоков, которые в компьютерных терминах представляют собой последовательности исполняемого кода. Как ткань состоит из множества нитей (threads) сплетённых вместе, так и операционная система сделана из потоков (threads), которые делят время процессора. Обычно выделяют по потоку на каждое приложение, плюс один на пользовательский интерфейс операционной системы. Проблема в том, что пользовательский интерфейс, в частности, требует более чем один поток. Те самые сообщения «Приложение не отвечает» в Windows и "пляжный мяч смерти" в OS X, которые все из нас видели чаще или реже с разочарованием — это прямой результат использования только одного потока для пользовательского интерфейса. Когда этот поток оказывается слишком загружен работой, или есть другая проблема (такая как медленная сеть), интерфейс всего приложения заклинивает.

Этого не случалось в BeOS, и этого не случиться в Haiku. Где BeOS опережала другие операционные системы того времени (и где Haiku всё ещё впереди современных операционных систем), так это в том, что каждое приложение использует много потоков. Ядро приложения само по себе является потоком, плюс каждое окно приложения создаёт поток. Это немного усложняет код, но в результате приложения почти никогда не притормаживают и не заклинивают.

Для системы быть многопоточной значит, что Haiku может хорошо использовать множество процессоров либо CPU ядер, которые распространены повсеместно. Ядро Haiku позволяет каждому потоку работать на своём собственном ядре или процессоре, включая потоки внутри одного приложения. Добавление потоков к другим задачам, таким как получение данных из сети, также просто. Другие операционные системы прибегают к использованию многих ядер только когда выполняют много приложений одновременно, или когда какое-либо приложение имеет специальный многопоточный код, реализованный для него. Но этот многопоточный код сложен, так что большая часть приложений не могут им похвастаться.

Haiku упрощает процесс написания многопоточного кода путём сокрытия большей части взаимодействия между потоками, так что разработчикам не нужно думать об этом. Во многом это возможно благодаря обширному использованию механизма сообщений. Скажем, Поток А и Поток Б в одном приложении оба хотят получить кусок данных от Потока В. Вместо того, чтобы прямо обратиться к этим данным, Потоки А и Б посылают по сообщению, которые помещаются в центральную очередь сообщений и обрабатываются в определённом порядке. Без этого механизма два потока попытались бы доступиться к Потоку В одновременно и зашли бы в тупик (deadlock), в результате чего они ждали бы друг друга вечно. В Haiku сообщения могут быть посланы как внутри приложения, так и другим приложениям. Таким образом, механизм сообщений Haiku берёт на себя всю сложность управления потоками, освобождая от этого разработчика.

Главная причина, по которой BeOS использовал множество потоков, была тем, что BeBox был задуман как медиа-платформа. Фактически одним из рекламных имён BeOS было "медиа-ОС". Хотя реклама слегка преукрашала достоинства, система действительно хорошо справлялась с мультимедиа. В типичной демонстрации BeBox играл полдюжины разных видео-роликов одновременно без задержек и пропуска кадров, в то время как система оставалась отзывчивой. Эффективность системы также позволяла обрабатывать аудио сигнал с низкой задержкой. В то время как Haiku всё ещё предстоит много работы в этих областях, она уже далеко впереди многих других систем.

Ещё одно преимущество Haiku перед другими состоит в обширном использовании файловой системы типа базы данных, которая позволяет любому файлу иметь различные свойства привязанные к нему. Эти свойства могут быть проиндексированы и получены так же, как и в обычной базе данных. К примеру, каждое электронное сообщение (e-mail) в Haiku хранится вместе со свойствами, такими как: тема, имя отправителя с адресом, имя получателя с адресом. Из программы управления файлами, известной как Tracker, вы можете проводить поиск по любому из этих свойств. Свойства также позволяют вам извлекать информацию о песне из MP3 файлов, а также легко организовать и находить файлы в музыкальной библиотеке через Tracker. Записи в адресной книге Haiku, известные как People files, состоят практически полностью из таких свойств.

Позволить вашей ОС организовывать адресную книгу даёт преимущество: вы больше не привязаны к только одной программе, управляющей вашими письмами и контактами. Каждый, кто когда-либо пробовал извлекать старые письма из раздутого файла Microsoft Outlook, поймёт всю красоту данного подхода. Вместо того, чтобы скрывать вашу корреспонденцию за форматом, доступным только из одной программы, Haiku позволяет вам использовать любую программу — вы даже можете использовать несколько программ для операций с одними и теми же письмами. Точно также People files в Haiku может редактироваться и управляться многими программами, можно даже изменять их из Tracker. Ни одна другая ОС не реализовала так удачно концепцию базы данных в своей файловой системе.

Учитывая все достоинства, Haiku недостаёт некоторых ключевых моментов, которые ожидают пользователи. К примеру, большая часть современных ОС имеют аппаратно-ускоренные интерфейсы. Это позволяет отображать причудливые эффекты: тени от окон, прозрачные границы, эскизы содержимого окон — всё это быстро и эффективно, используя видео-карту. Пользователи популярных ОС также имеют доступ к широкому набору приложений. Haiku в настоящий момент ограничена всего несколькими родными приложениями, не считая того, что осталось от BeOS.

Как и другие открытые ОС, Haiku страдает от недостатка драйверов. Современные видео-карты, принтера, а также другие компоненты достаточно сложны: они как маленькие компьютеры сами по себе, и требуют для работы специальные программы — драйверы. Драйвер служит мостом между ОС и железом. Сегодня существует так много типов и марок железа, что разработчикам проектов с открытым кодом трудно за ними угнаться.

К счастью, Haiku может опереться на работу, сделанную тысячами разработчиков Linux, FreeBSD и других открытых ОС. Haiku уже использует сетевые и беспроводные драйвера FreeBSD через специальный интерфейс-переводчик. Работа также ведётся над внедрением новой системы Gallium3D, которая может стать будущим для драйверов видео-карт в Linux.

Что более важно, многие из сильных сторон Haiku, возможно, никогда не сравняются с ведущими ОС, или уж точно не скоро. Приложения для Linux не продуманы для мультипоточности так же глубоко, как в Haiku, а, следовательно, они не могут воспользоваться всей силой современных многоядерных процессоров. С выходом OS X Snow Leopard два года назад Apple добавила новую технологию Grand Central Dispatch, которая облегчает использование многих потоков для приложений. Но там всё ещё только один поток для пользовательского интерфейса, так что «пляжный мяч смерти» никуда не денется.

Последний выпуск Windows 7 был большим шагом вперёд по сравнению с предшественницей, но у неё осталось много проблем, таких как повсеместная нескладность интерфейсов, а также простая перегруженность информацией. Панель управления сама по себе уже может вызвать у пользователя мигрень. Windows огромна: чистая установка Windows 7 Ultimate займёт 20 гигабайт места. Даже если вы включите десятки бесплатных приложений, которые идут с Haiku, установка ОС будет стоить вам всего 700 мегабайт — одна тринадцатая от жилой площади Windows 7. А что касается открытости и свободы — то Windows и Mac OS это не светит.

В итоге, Haiku позволяет по-иному взглянуть на ваш персональный компьютер. Если вам не нравятся глючные программы с несовместимостями и недостатками, если вы ненавидите, когда вас заставляют менять железо и программы каждые пару лет только потому, что «улучшения» системы сделали их устаревшими, и если вам нравится идея ОС, которая быстра, отзывчива и просто освежающе нова и привлекательна, тогда, возможно, Haiku как-раз для вас.

Логотип Haiku
Логотип Haiku
Об авторе.
Райн Ливенгуд (Ryan Leavengood) — компьютерный консультант в Boynton Beach, Fla., занимающаяся разработкой сайтов на Ruby on Rails. Впервые он был вовлечен в проект с открытым кодом для разработки Haiku в 2003 году, и теперь он хранитель их сокровищ. Ни одна ОС не идеальна, замечает он, но «некоторые совсем неидеальны. Я понял, что каждая ОС, над которой я работал, была не хуже, чем то, что я уже использовал». Когда Ливенгуд не программирует, он с женой Франческой (Francesca) проводят время со своими четырьмя кошками, одним сенбернаром и садом из местных растений Флориды.

От переводчика: Я был большим фанатом BeOS и уже давно слежу за Haiku, периодически принимая участие в проекте. Система развивается с переменным темпом, но достаточно стабильно. Недавно объявили о принятых в GSOC проектах — звучит многообещающе. Выпуск беты, а также единороги с радугами, действительно не за горами.
Ссылка на оригинал: The Dawn of Haiku OS.

Комментариев нет:

Отправить комментарий