Программирование | Преподавание | Публикации | Переводы и языки | Прочее | Про меня | En / De / עב |
О том, как команда энтузиастов воссоздала замечательную операционную систему.
Опасаясь, что в руках нового владельца проект BeOS медленно угаснет из-за отсутствия поддержки, Фипс решился на дело, которое показалось ему самым разумным в этих обстоятельствах, а именно, он решил полностью воссоздать BeOS с нуля, но уже в качестве проекта с открытым исходным кодом. Фипс рассудил, что поскольку такие проекты не являются собственностью какой-либо одной компании или частного лица, то они не могут исчезнуть просто, потому что компания обанкротилась или потому что проект покинули ключевые разработчики. Если вам доводилось заниматься программированием, то вы должны знать, что создание операционной системы – это огромная работа. И было бы странным ожидать, что люди будут заниматься такой работой абсолютно бесплатно. Однако для нескольких десятков энтузиастов работа над «Хайку» стала любимым делом. За одиннадцать лет работы над проектом мы выпустили три альфа версии системы, а в этом месяце [статья была опубликована в мае. прим. пер.] собираемся выпустить четвертую и последнюю альфа версию. После этого мы приступим к этапу бета тестирования, которое мы надеемся закончить к концу этого года. А затем в начале 2013 года выйдет первый официальный выпуск системы известный как R1. Однако уже сейчас любой желающий может использовать данную систему, установив её на компьютере Intel x86. Многие из тех, кто уже так и поступил, отмечают, что даже альфа версии «Хайку» не уступают по стабильности работы итоговым версиям иных программ. И действительно, среди всех многочисленных операционных систем, используемых в настоящее время, «Хайку», вероятно, занимает наилучшую позицию для того, чтобы «бросить вызов» таким популярным операционным системам, как Microsoft Windows или Mac OS. Опыт использования «Хайку» показывает, что она чрезвычайно удобна как для рядовых пользователей, так и для профессиональных разработчиков. Подобно BeOS она отличается быстродействием, гибкостью и эффективностью. Более того, в отличие от своих уже состоявшихся конкурентов, «Хайку» чрезвычайно хорошо решает одну из сложнейших задач современного программирования: работу на многоядерных процессорах. Давайте взглянем, за счет чего это все достигается, рассмотрим процесс развития «Хайку» и выясним действительно ли операционная система, установленная на вашем компьютере, работает так хорошо, как могла бы. Но сначала немного истории. В 1991 году бывший исполнительный директор компании Apple, француз по имени Жан-Луи Гассэ, вместе с некоторыми своими экс-коллегами по Apple, основали компанию Be Inc. для того, чтобы заняться разработкой компьютера нового типа. В частности, они хотели избежать «ловушки обратной совместимости», которую им часто приходилось наблюдать, работая в компании Apple. Там при разработке каждой новой версии аппаратуры или программ приходилось брать в расчет предыдущие версии вместе со всеми их недостатками. Первым продуктом компании стал настольный компьютер, получивший название BeBox. Не найдя операционной системы, которая отвечала бы их запросам, инженеры компании Be написали свою собственную. BeBox появился на рынке в октябре 1995 года, но не обрел популярности, и вскоре его разработка была свернута. BeOS, напротив, быстро нашла маленькую группу «преданных поклонников», и вскоре уже работала на компьютерах совместимых с архитектурой Intel x86 и Macintosh PowerPC. На определенном этапе в Apple даже подумывали использовать BeOS вместо своей собственной операционной системы. В итоге компания выпустила укороченную версию BeOS для установки в аппаратах, «заточенных» на работу в интернете, но для успеха этого оказалось недостаточно. В 2001 году компания Palm купила Be, как сообщалось, за 11 миллионов долларов. Когда сделка по продаже компании Be была уже на финальной стадии, Фипс основал проект, который первоначально именовался OpenBeOS, но потом, спустя несколько лет, стал называться «Хайку».
С самого начала Фипс решил, что проект будет нацелен на то, чтобы воссоздать последний официальный выпуск BeOS известный как R5. Оглядываясь назад, можно увидеть, что это решение было гениальным. Обычно проектами по разработке программ с открытым исходным кодом люди занимаются в свое свободное время, ради удовольствия. Зачастую такие проекты, так и не приведя к какому либо существенному результату, постепенно «угасают», поскольку разработчики теряют к ним интерес и сворачивают с первоначально выбранного пути. Однако «Хайку» удалось избежать этой участи, поскольку все его разработчики верили в важность воссоздания R5. Для того чтобы заниматься своим проектом, Фипсу и его единомышленникам, приходилось «выкраивать» время от своей основной работы. Операционная система является крайне сложным продуктом, в особенности такая всеобъемлющая, как BeOS, чьи многочисленные уровни и приложения изначально были спроектированы так, чтобы работать вместе. Самые одаренные инженеры Кремниевой Долины работали над ней более десяти лет. Идея воссоздать такую систему силами энтузиастов, работающих над проектом в свое свободное время, была поистине сумасшедшей. Однако именно благодаря таким, на первый взгляд безумным идеям, и появился Linux, а также программы фонда свободного программного обеспечения GNU, начиная от компилятора языка C и заканчивая программой бухгалтерского учета GnuCash. Компьютерная система, подобно слоеному пирогу, состоит из нескольких слоев. В такой системе имеется аппаратное обеспечение, операционная система, управляющая этим аппаратным обеспечением, и приложения, работающие в операционной системе, например браузеры, текстовые редакторы, а также такие приятные штуки, как игры. Помимо этого операционная система является тем инструментом, с помощью которого программисты посылают команды аппаратному обеспечению. К счастью, BeOS обладала модульной структурой. Именно благодаря этому и стала возможной разработка, тестирование, и замена по отдельности каждого компонента BeOS своим свободным аналогом. Несколько компонентов BeOS уже были выпущены компанией Be в качестве программ с открытым исходным кодом. Это были такие программы, как Tracker и Deskbar, которым в системе Windows соответствуют Windows Explorer и Taskbar, а в операционной системе OS X – Finder и Dock. Одной из первых программ, которую программисты решили заменить, стала заставка экрана или скринсейвер. У такой программы довольно простое назначение, но в то же время в ней происходит работа с важными частями компьютерного комплекса. Среди прочего, эта программа должна постоянно следить за активностью клавиатуры и мыши, загружаться в заданное время и запрашивать пароль при выключении. Когда все части, составляющие новый скринсейвер, были закончены, Фипс заменил скринсейвер системы BeOS на разработанную версию с открытым исходным кодом. К всеобщей радости и удивлению, она работала. Но более важным было то, что разработчики убедились в верности выбранного подхода, и поняли, что они могут заменить каждый модуль в BeOS, зная при этом, что он будет полностью совместим с другими частями системы. В 2008 году мы перешагнули важный рубеж. «Хайку», как и любая другая программа, написана в исходном коде. Для того, чтобы компьютер смог с этим кодом работать, необходимо его откомпилировать и преобразовать в бинарный код. Прорывом было то, что наконец-то стало возможно компилировать исходный код «Хайку» из самой операционный системы «Хайку». Программисты называют такую возможность «саморазмещением». Этот этап является крайне важным при разработке любой операционной системы, потому что не обладающая возможностями самокомпилирования операционная система всегда будет зависеть от других систем. Когда работа над проектом уже шла полным ходом, Фипс решил заняться созданием организации, которая стала бы «домом» для «Хайку». В итоге, в 2003 году он основал некоммерческую организацию Haiku Inc. Она контролирует работу над проектом, и принимает пожертвования. Также ей принадлежат торговые марки и авторские права на сайт, логотип и, разумеется, сам исходный код «Хайку». В настоящее время исходный код «Хайку» доступен по, так называемой, MIT лицензии. Данная лицензия позволяет полное и свободное использование кода практически всем желающим, включая частные компании и другие проекты с открытым исходным кодом.
Разумеется, команде разработчиков «Хайку» приходится остерегаться нарушения патентных прав, которые имеются у BeOS и ещё не утратили своей силы. Однако мы поддерживаем дружеские отношения с японской компаний Access, которой в настоящее время принадлежат права на BeOS. В частности, Access разрешает нам выкладывать документацию по BeOS на нашем сайте. Кроме того, она никогда не пыталась запретить нам ни одну из наших работ по копированию технологий, используемых в BeOS. Станет ли Access или какая либо другая корпорация, которой покажется, что у неё есть права на наш код, судиться с таким меленьким проектом, как наш? Ведь от такой тяжбы компании не пришлось бы ожидать больших финансовых выгод, да и на репутации это сказалось бы не лучшим образом. Однако поживем – увидим. С нынешним числом судебных разбирательств, посвященных вопросам интеллектуальной собственности в США и по всему миру, ни один проект по созданию программных продуктов не может считать себя абсолютно защищенным от судебных исков. В 2007 году Фипс объявил, что по семейным обстоятельствам вынужден покинуть проект, и у руля Haiku Inc. встали другие. Однако потеря лидера, не повредила проекту, почти как изначально и предполагал Фипс. Так, в настоящий момент, я выполняю обязанности казначея проекта и вместе с другими членами руководства заседаю в совете директоров. Мы помогаем дальнейшему динамичному развитию проекта, так что во время своего последнего собрания, которое состоялось в Дюссельдорфе в начале апреля, команда разработчиков «Хайку» уже работала над очередной альфа-версией системы. К настоящему моменту мы воссоздали BeOS R5 настолько точно, что старые приложения, разработанные для BeOS, которым сейчас уже более десяти лет, свободно запускаются на «Хайку». Когда проект только начинался, многие полагали, что такая совместимость будет невозможна. Во многих ключевых областях «Хайку» даже превзошла свою предшественницу. Так, например, «Хайку» поддерживает гораздо большее число языков, чем BeOS, и помимо этого обладает также и другими средствами интернационализации. К тому же она может работать с современными видеокартами, новейшими процессорами и беспроводными сетями и поддерживать работу с большим объемом памяти, чем BeOS. Если говорить о программировании, то в «Хайку» проще создание пользовательских интерфейсов программ. Это обусловлено тем, что у неё есть встроенный инструмент для разметки, который позволяет автоматически размещать на экране иконки и виджеты, в то время как в BeOS разработчики вынуждены были вручную задавать каждую деталь разметки, например, выравнивание различных кнопок. Эти и другие улучшения позволили «Хайку» оставаться современной, несмотря на стремительные темпы развития и многочисленные новшества в компьютерной отрасли. Но даже узнав обо всех достоинствах «Хайку», вы, возможно, все ещё задаетесь вопросом – а нужна ли ещё одна операционная система, когда уже есть Windows, Mac OS X, сотни версий Linux и многочисленные системы для мобильных аппаратов? Ответ на этот вопрос – «Да, нужна». И по целому ряду причин. Компьютерные вирусы, почти так же, как и их собратья в природе, активно размножаются в условиях единообразия. А поскольку много людей использует операционную систему Windows, то у вирусов, созданных для нанесения вреда данной системе, нет недостатка в жертвах. К тому же, если у одной операционной системы есть монополия на рынке, то у её создателей не будет веских причин её улучшать (конкуренция со стороны браузера Mozilla Firefox, во многом, была тем стимулом, который заставил улучшить Internet Explorer). Многообразие же способствует созданию программ с лучшей совместимостью, поскольку в условиях многообразия разработчик вынужден создавать код, который должен хорошо уметь взаимодействовать с другими программами. Когда конкуренция почти не ощущается, для работ по совершенствованию программ просто нет стимулов. Однако «Хайку» не просто обогащает генофонд операционных систем. Первое, что люди в ней отмечают, это её непохожесть на другие операционные системы, такие как Windows, OS X или Linux. Она уникальна. Так, например, сердцевиной Linux является так называемое ядро, которое изначально было создано для работы на серверах, и лишь позже модифицировано для использования на настольных компьютерах. В результате, иногда данное ядро выделяет недостаточно ресурсов пользовательскому интерфейсу, и пользователи Linux ощущают досадные задержки в работе системы. Это проявляется, когда компьютер выполняет особо ресурсозатратные операции, такие как прожигание DVD-дисков или компиляция кода. Ядро же операционной системы «Хайку» изначально создавалось для настольных компьютеров, и поэтому оно всегда отдает приоритет пользовательскому интерфейсу, невзирая на то, что происходит в системе. Между ядром системы и пользовательским интерфейсом находится так называемый программный интерфейс приложения или API. API – это тот инструмент, который разработчики программного обеспечения используют для осуществления взаимодействия своего приложения с другими. Плохой дизайн API может испортить жизнь как самим программистам, так и конечным пользователям их программ. У «Хайку» есть только один API. Для сравнения, в Linux имеются сотни API и почти столько же пользовательских интерфейсов, и поэтому безболезненно перейти с одной версии Linux на другую практически невозможно. Используемая вами версия Linux может сильно сказаться на том, как выглядит экран компьютера, на способе запуска и выполнения программ, и на множестве других вещей. Все это делает разработку программ, которые бы одинаково хорошо работали на всех версиях Linux, довольно непростым делом. Все компоненты «Хайку», в том числе и его приложения, такие как браузер или медиаплеер, с самого начала были спроектированы для того, чтобы работать вместе. Даже её исходный код написан в едином стиле. Разработчики это ценят, поскольку это позволяет им быстро включиться в дело и набрать скорость работы. Разработчик, создающий программу для «Хайку», может быть уверен, что она будет выполняться и вести себя одинаково на всех сборках «Хайку». Несмотря на то, что «Хайку» – это проект с открытым исходным кодом, у неё всегда будет только одна официальная версия. Сочетание всех этих вещей обеспечивает замечательно согласованную работу системы и простоту её освоения. Что действительно выделяет «Хайку», так это её производительность и скорость работы. На моем компьютере, выпущенном три года назад, «Хайку» загружается за 10 – 15 секунд из полностью выключенного состояния, а во время работы использует всего около 170 мегабайт оперативной памяти. По сравнению с другими операционными системами «Хайку» просто великолепна в обеспечении пользователя максимальным объемом ресурсов. «Хайку» замечательно работает даже на старых машинах, которые, благодаря данной системе, не считаются устаревшими и непригодными к использованию, просто потому, что они больше не могут работать с разбухшими и неэффективными современными операционными системами. Быстродействие и высокая производительность «Хайку» во многом обусловлена теми архитектурными решениями, которые она унаследовала от BeOS. BeOS изначально была спроектирована так, чтобы полностью использовать возможности многопоточности. Под потоком в программировании понимается последовательно выполняющийся программный код. Подобно тому, как ткань состоит из множества нитей сотканных вместе, операционная система состоит из нитей выполнения, или потоков, каждый из которых получает свою долю процессорного времени. Как правило, у каждого приложения есть по одному потоку выполнения, и у пользовательского интерфейса операционной системы тоже есть один поток. Проблема заключается в том, что как раз пользовательскому интерфейсу зачастую нужен больше чем один поток выполнения. Сообщения типа «приложение не отвечает» (Windows) или «пляжный мяч смерти» (OS X), довольно часто огорчающие большинство из нас, являются прямым следствием того, что у пользовательского интерфейса есть только один поток выполнения. Когда этот поток слишком загружен работой или у него появляется какая либо другая проблема (например, ухудшается скорость сетевого соединения), то интерфейс приложения оказывается заблокированным. Такого не бывало в BeOS, и этого нет в «Хайку». Чем BeOS была лучше операционных систем своего времени, (и чем «Хайку» всё ещё лучше нынешних), так это тем, что в ней каждое приложение использует несколько потоков выполнения. У ядра приложения есть свой поток выполнения, и для каждого нового окна создается свой, отдельный поток. Это, конечно, несколько усложняет написание кода, но в результате программы почти никогда не тормозят и не зависают.
Большая многопоточность операционной системы означает, что «Хайку» может сполна использовать преимущества многопроцессорных компьютеров и многоядерных процессоров, которые ныне распространены повсеместно. Ядро «Хайку» дает возможность каждому потоку выполняться на своем процессоре или ядре. Это касается даже тех потоков, которые принадлежат одному приложению. Создание нескольких отдельных потоков выполнения для других задач, таких как, например, чтение информации из сети, также становится проще. Другие операционные системы могут использовать преимущества многоядерной архитектуры только в том случае, когда им приходится работать одновременно с большим числом приложений, или же в случае работы с одним, но таким, которое специально написано с использованием многопоточности. Однако написание таких программ является непростым делом, поэтому они достаточно редки. «Хайку» упрощает процесс написания многопоточных приложений, поскольку в ней большая часть взаимодействия между потоками скрыта от разработчика, и ему не приходится больше беспокоиться о том, как обеспечить многопоточную работу своей программы. Во многом это обеспечивается широким использованием сообщений. Предположим, в приложении есть поток А и поток В, и оба хотят получить данные от потока С. Вместо того, чтобы напрямую обратиться к этим данным, оба потока отправляют сообщения, которые попадают в центральную очередь сообщений, где обрабатываются в специальном порядке. Если бы этого механизма не было, то два потока попытались бы одновременно получить доступ к третьему и тем самым создали бы взаимоблокировку, в которой бы и застряли в вечном ожидании. В «Хайку» сообщения можно передавать как между потоками одного приложения, так и разных. Таким образом, с помощью сообщений «Хайку» управляется с многопоточностью и освобождает программиста от необходимости разбираться со всеми сложностями многопоточности самому. Основная причина, по которой в BeOS использовалась многопоточность, заключалась в том, что BeBox задумывался как мультимедийная платформа. Одним из маркетинговых названий BeOS даже было «операционная система для мультимедиа». Это не было просто рекламным преувеличением, система и в самом деле очень хорошо работала с мультимедиа. Обычно при демонстрации BeBox на нем одновременно включали полдюжины разных видеофайлов, которые все проигрывались без помех и задержек. Время отклика самой системы при этом не ухудшалось. Производительность системы также позволяла быструю обработку аудиофайлов. Хотя «Хайку» все ещё нуждается в доработке в этих областях, она все равно опережает многие другие системы. Ещё одно преимущество »Хайку» над другими операционными системами заключается в том, что ней активно используется файловая система, основанная на принципах баз данных. В этой системе каждый файл может иметь разнообразные атрибуты, ассоциированные с ним, которые затем индексируются, и по которым в дальнейшем можно осуществлять поиск, совсем как в современных базах данных. Так, например, каждое сообщение электронной почты хранится в «Хайку» вместе со своими атрибутами, такими как тема письма, имя и адрес отправителя, имя и адрес получателя. С помощью файлового менеджера Tracker можно проводить поиск по всем этим атрибутам. Использование атрибутов также позволяет извлекать из mp3-файлов информацию о песнях, и с помощью файлового менеджера с легкостью упорядочивать свою библиотеку аудиозаписей и находить в ней записи. Записи в адресной книге «Хайку», которая называется People почти полностью состоят из атрибутов. Операционная система, которая помогает упорядочивать электронную почту и адресную книгу, предоставляет огромные преимущества. В этом случае вы уже больше не привязаны к какой-либо программе по управлению почтой или контактами. Всякий, кто пытался извлечь старые сообщения из разросшегося файла почтовых сообщений программы Microsoft Outlook, оценит всю прелесть данного подхода. Вместо того, чтобы «привязываться» к какому-либо проприетарному формату, который доступен только для одной конкретной программы, «Хайку» позволяет использовать любую программу по вашему усмотрению. Можно даже использовать несколько программ для одного и того же набора почтовых сообщений. Точно так же файлами записей в адресной книге программы People можно управлять с помощью самых разных программ, даже с помощью файлового менеджера Tracker. Ни одна другая операционная система не может похвастаться столь удачной реализацией файловой системы на основе принципов баз данных. Однако за все эти преимущества «Хайку» приходится расплачиваться отсутствием некоторых ключевых возможностей, которые пользователи привыкли ожидать от операционных систем. Так, например, интерфейс большинства современных операционных систем использует аппаратное ускорение, что делает возможным реализовывать с помощью видеокарты такие графические эффекты, как тени, прозрачные границы и всплывающие миниатюры окон, которые будут работать быстро и эффективно. Пользователи широко распространенных операционных систем также имеют богатый набор приложений для работы. В «Хайку» же в настоящее время имеется весьма ограниченный набор программ, созданных специально для неё или унаследованных от BeOS. Кроме того, так же как и другие операционные системы с открытым исходным кодом, «Хайку» страдает от нехватки драйверов к оборудованию. Современные видеокарты, принтеры и другие компоненты компьютерной системы очень сложны. Они словно самостоятельные мини-компьютеры, и для того, чтобы они работали, необходима специальная программа, называющаяся драйвер. Драйвер является посредником между операционной системой и аппаратным обеспечением. Однако в настоящее время на рынке существует так много типов и моделей оборудования, а также их производителей, что разработчикам, работающим над проектом с открытым исходным кодом, очень трудно за ними поспевать. К счастью в «Хайку» могут быть внедрены наработки, которые уже имеются у большого числа программистов, работающих над Linux, FreeBSD и другими открытыми операционными системами. В настоящий момент «Хайку» уже использует драйвера сетевой карты и wi-fi от FreeBSD через специальный транслирующий интерфейс. Также ведутся работы по включению в «Хайку» новой системы Gallium3D, которая, как ожидается, будет использоваться в будущих драйверах для видеокарт в Linux. Более того, на многие преимущества «Хайку», скорее всего, никогда не будет достойного ответа со стороны лидирующих операционных систем. По крайней мере, не в обозримом будущем. Приложения в Linux не спроектированы таким образом, чтобы поддерживать многопоточность в том же объеме, в каком её поддерживают приложения «Хайку». Поэтому приложения Linux не могут полностью использовать преимущества многоядерных систем. В версии операционной системы OS X, выпущенной компанией Apple два года назад и получившей название Snow Leopard, появилась новая технология под названием Grand Central Dispatch. С её помощью приложениям теперь легче использовать многопоточность. Однако для пользовательского интерфейса программ по-прежнему выделяется только один поток. Поэтому «пляжный мяч смерти» все ещё существует. Последняя версия Windows 7 значительно лучше по сравнению со своими предшественницами. Однако в ней все ещё есть недостатки, такие как повсеместная противоречивость интерфейса и избыток очевидной информации. Одной панели управления достаточно для того, чтобы вызвать у пользователя головную боль. Кроме того, Windows огромна. Чистая система Windows 7 Ultimate занимает 20Гб места на диске. Даже если вы установите вместе с «Хайку» десятки свободно распространяемых приложений, которые имеются для данной системы, то все это займет всего лишь около 700Мб, то есть одну тридцатую того объема, который нужен для Windows 7. Что же касается открытости кода и бесплатности распространения, то ни Windows, ни Mac OS это совершенно не грозит. В конечном итоге «Хайку» представляет собой абсолютно новый взгляд на персональный компьютер. Если вы считаете, что программное обеспечение не должно «кишеть» ошибками, быть несовместимым и непроизводительным, если вы ненавидите необходимость обновлять программное и аппаратное обеспечение каждые несколько лет, просто потому что в результате «модернизации» оно оказалось устаревшим, и если идея использовать операционную систему, отличающуюся быстродействием и простотой, кажется вам удивительно новой и притягательной, тогда, возможно (всего лишь возможно), операционная система «Хайку» создана именно для вас. Первоначально данная статья была опубликована в печатной версии журнала «IEEE Spectrum», под названием «The Dawn of Haiku». Об авторе Райан Левенгуд – консультант по компьютерным технологиям, специализирующийся на разработке сайтов на Ruby on Rails. Живет в Бойнтон-Бич, штат Флорида. В 2003 году впервые принял участие в работах по созданию операционной системы «Хайку», сейчас является казначеем проекта. «Нет совершенных операционных систем, однако некоторые чересчур уж несовершенны» — говорит он. «Я посчитал, что над какой бы операционной системой я ни работал, она не сможет быть хуже, чем та, которую я уже использую». В свободное от программирования время Райан вместе с женой Франческой занимаются своими четырьмя котами, сенбернаром, и садом, где они выращивают типичные для штата Флориды растения. Автор оригинала: Ryan Leavengood |
Valid XHTML 1.0 | © DarkEol, 2002–2024 | Valid CSS | Java 11.0.9 |