Однако никакие проекты (в том числе программистские) не рождаются популярными, а становятся ими – после долгой и порой изнурительной работы "в стол". От идеи и горящих глаз "а давайте сделаем вот это!" до того момента, когда об успехах можно будет говорить вслух, обычно проходит немало времени.
Этот рассказ об одном из таких проектов. Вы вряд ли будете им пользоваться сегодня или завтра. Но есть люди, которые вкладывают свои силы и время в то, что, возможно, чуточку упростит вашу жизнь послезавтра. И этот рассказ – о них.
– Наша операционка уже работает на ноутбуке XO-1 (OLPC). Загружается и показывает "синий экран смерти" – хвастается Алексей Брагин, координатор проекта ReactOS. – У Microsoft, правда, Windows тоже уже на нем работает, но они заменили там «родной» BIOS на стандартный, а это не так интересно. Мы оставили OpenFirmware и адаптируем свою систему. Правда, эти молодцы, которые делали железо, спецификацию USB-контроллера немного переиначили, и я вынужден читать их документацию и подправлять наши драйвера. Поэтому пока оно не очень работает.
Впрочем, по выражению лица видно, что прогрессом на этом направлении Алексей доволен. Он вообще полон оптимизма. Об успехах говорить не стесняется, даже если эти успехи могут вызвать у слушателя улыбку или недоумение – как с тем же "синим экраном". На обычном PC, впрочем, система работает значительно лучше – можно запустить текстовый редактор (AbiWord), браузер (Firefox) и вообще довольно внушительный список приложений. Они даже будут работать. Пока ОС не «упадет» – а это рано или поздно случится, ибо версия – "ранняя альфа", и до практического ее применения конечными пользователями еще далеко.
ReactOS – свободный «клон» Windows NT и ее потомков (в число которых входит и Vista). Иными словами, участники проекта пытаются в свободное от остальных дел время переписать "с нуля" систему, на которую гигантская корпорация потратила уже несколько десятков лет работы (и страшно подумать, сколько человеко-лет). Конечно, в такой формулировке задача выглядит столь же грандиозно, сколь и безнадежно. Впрочем, не все так плохо.
– На самом деле, эта задача сравнительно просто решается, – оптимистично замечает Алексей. – Вот смотрите: в свое время был Unix, потом появился GNU (задуманный как свободный клон Unix – И.Щ.), в котором ядра не было, а потом появился Линус, который вовремя сказал: "У меня есть ядро, совместимое с GNU". И все пошло. У нас ситуация похожая. Есть куча драйверов – практически подо все. И есть не море, а целый океан win32-софта. И мы просто делаем ядро, совместимое и с тем, и с другим.
Решают эту "простую задачу" участники ReactOS вот уже 10 лет. Начало было положено еще в 1996 году – тогда проект назывался FreeWin95, но в конце 97-го года он был переориентирован на разработку WinNT-совместимого ядра и получил современное название.
– Нас часто спрашивают: "почему проект развивается столько времени, а прогресса пока немного?" – говорит Алексей, рассказывая об истории ReactOS. – С самого начала все было довольно интересно поставлено: были координаторы по разным областям (например: kernel coordinator, media coordinator, web coordinator, win32 subsystem coordinator и т. д.), но из-за острой нехватки людей фактически координаторы были просто разработчиками, которые с течением времени уставали и уходили. Бессменным оставался только первый координатор проекта – Джейсон Филби (Jason Filby). В начале он очень активно им занимался, ездил на выставки, налаживал связи (вообще этим он, конечно, заложил хорошую базу, даже несмотря на то, что в то время прогресс по фактической реализации был минимальный). Но вскоре время, которое он мог отдавать проекту, сильно сократилось – фактически он был только на email-связи для каких-то экстренных вопросов. Вот здесь удивительный момент – все это время проект жил и развивался сам собой, за счет энтузиазма разработчиков (грубо говоря: один сломал – другой исправил). Чисто с программистской точки зрения, это идеал для работы: выбирай то, что интересно, сроков никто не ставит, сам выбираешь способ реализации. Все бы хорошо, но в результате каждый продвигал что-то свое, и вместо того, чтобы сделать как надо, "подтачивал напильником" под то, что уже было реализовано. Взяли некоторые идеи от Windows, и сделали некое ядро – наполовину из идей NT, наполовину из своих идей. Написали для него драйверы, которые зависели от всех его глюков. И Win32 API взяли из Wine. А потом столкнулись с тем, что все это глючит, и систему невозможно развивать, потому что все сделано на примитивном уровне. Начали перерабатывать ядро – при этом полетели все драйвера – они не были рассчитаны на такую работу, их с Windows никто не тестировал.