Цифровой журнал «Компьютерра» № 24 - Коллектив Авторов
Шрифт:
Интервал:
Закладка:
Четвёртый пример — собственно, операционная система, которая находится совсем в другой области, и тем не менее — очень интересный и амбициозный проект.
- Но что вас вдруг натолкнуло на мысль делать собственное ядро ОС? Какие-то нужды по другим проектам? Неудовлетворённость существующими системами?
- О, совсем не вдруг! Эта идея зрела давно. Она — результат многолетнего опыта работы в софтверном бизнесе и довольно обширных представлений о том, что происходит в самых разных областях разработки софта, и представлений о том, как устроены существующие операционные системы. Дело в том, что в советское время, когда я только начинал всем этим заниматься, я был очень активным юниксоидом. В восьмидесятые годы я пропагандировал Unix — тогда это была сверхмодерновая, никому не известная операционная система, которая только начинала свой путь. И в мире-то начинала, а в СССР это была совсем фантастика. Я довольно хорошо её знал, был системным программистом, занимался разработкой драйверов и существенно касался ядра операционной системы.
Потом, когда появился MS-DOS, он очень сильно уступал «Юниксу». Зачастую приходилось писать программы, функциональность которых находилась в рамках компонента операционной системы. То есть, скажем, мы под свои задачи писали такие вещи как многозадачность — для MS-DOS. Причём такие вещи делал каждый десятый программист, работающий с MS-DOS. Это сложно, но вполне достижимо.
Когда мы это делали, мы понимали, какие задачи мы при этом решали и откуда такие потребности возникают. Однажды у нас была очень смешная практическая работа. Когда появилась одна из первых 386-х машин, они были бешено дорогие и никто не понимал, зачем они вообще нужны. Потому что DOS на них работал как на обычных 286-х. Разницы не было, и никто не понимал, зачем там ещё какие-то восемь мегабайтов.
У меня был начальник, который ко мне пришёл и сказал: «Слушай, ты понимаешь, что с ней можно сделать?». Я говорю, что в принципе к ней можно подключить несколько терминалов. Он говорит «Да? Здорово. А как?», я отвечаю: «можно плату такую купить, вставить процессор в неё, подключить к ней терминалы СМ ЭВМ — они ещё были на рынке, — Но операционка этого не поддерживает, ничего с этим сделать нельзя». «А можешь что-нибудь сделать, чтобы она поддерживала этот терминал?». «Могу — говорю, — могу сделать систему, которая позволяет текст на них на всех редактировать». «Здорово! Под это есть задача, давай». И мы сделали продукт, который позволял подключить восемь терминалов к 386 машине, под DOS написали многозадачную среду, в которую встроили приложения — текстовый редактор и прочую мелочёвку. Из этого получилась некоторая инфраструктура для подготовки документации. Были клиенты, которые ей пользовались. Это был некоторый прямой опыт создания — если не операционной системы, то близкой вещи, и её компоненты там присуствовали.
Дальше разработка самых разных приложений и задач в основном компонентного характера наводила на мысль о том, как бы это делать правильно, и в девяностых годах начали бродить в голове и осмысливаться первые идеи, которые легли в основу «Фантома». Я много об этих идеях говорил, общаясь с разными людьми, с сотрудниками разных крупных софтверных компаний — это интересная тема, которая обсуждалась. И где-то лет пять назад один из моих знакомых мне сказал: «Давай, Дим, ты что-нибудь уже сделаешь, потому что, вроде, интересная тема». А я очень боялся, потому что тема-то на самом деле неподъёмная и, честно сказать, не мог подумать пять лет назад, что ОС у меня будет запускаться и работать.
Я стал пробовать, делать какие-то наброски, пытаться сделать то один, то другой кусочек — посмотреть работает или не работает та или иная вещь. Компилятор вот написал тестовый, систему виртуальной памяти. Оно начало оживать постепенно и двигаться. Финальный шаг — когда я сказал себе, что эти куски мы действительно будем собирать в ядро операционной системы.
Отчасти процесс пошёл потому, что случился информационный прорыв. Мы, на самом деле, его не планировали, но уже пытались делать какое-то ядро. Полтора года назад случилась эта история с публикацией в западном журнале. Случилось абсолютно спонтанно, не планировалось вообще. У одного из наших сотрудников был друг за рубежом, он ему рассказал, что, знаешь, у нас тут ребята операционку потихонечку клепают. "Да, правда? Расскажите. Написал письмо, мы кинули ему внутренние рабочие материалы, идеи, и через неделю вылетела статья, от которой мы сами были в лёгком шоке. Эта статья была перепечатана множество раз — на сотой перепечатке мы просто перестали считать. До этого нас, конечно, воодушевляло — было интересно: японский, китайский языки, европейские языки, прибалтийские языки, дискуссия где-то в Эстонии о том, что русские подкопаются под Эстонию через операционную систему, которую они разрабатывают! Феерическая, конечно, реакция.
- Когда это было?
- Полтора года назад где-то. Зимой прошлого года. Если бы не это, может, ещё года два всё бы шло на тормозах. Но тут как-то так получилось, что мир про это узнал и среагировал не очень благожелательно. Были люди, которые говорили: «Да, здорово, интересно, слава богу, что вы так смотрите на вещи нестандартно, пытаетесь что-то сделать нетипичное». Были люди, которые говорили: «Да это всё сто раз уже было». И они отчасти правы, потому что концепцию, которая у нас есть, по частям можно найти в разных работах разных времён. Третьи говорили: «Да вообще, козлы, куда вы лезете, какие вам операционные системы, вы же там какие-то сайтики программируете». Да, понятно, что моя компания занимается разработкой веб-систем довольно много, поэтому люди говорят «сайтописатели операционку делают, да кто они такие?!». Естественного скепсиса хватает, но он и у меня вообще-то есть.
Мы люди адекватные и понимаем, что создать операционную систему, во-первых, сложно, во-вторых, крайне сложно выйти с ней на рынок, хотя бы на какой-нибудь. Тем не менее, меня много спрашивают: «Почему ты за это взялся? Насколько это всё реально?» Я отвечаю, что если бы я просто не стал бы этого делать, мне бы стало стыдно, что не попробовал.
Так что мы понимаем — это большая и сложная задача. Тем не менее, в последнее время появилось некоторое ощущение того, что наша работа действительно востребована. Во всяком случае, в некоторых ситуациях я встречаюсь с людьми, которые выражают желание либо просто попробовать другую операционную систему, либо явно указывают, что то, что мы сделали, им интересно, потому что в «Фантоме» есть те или иные специфические свойства, которые отвечают их потребностям. Причём есть люди, с которыми мы общаемся по поводу этой операционки, и они говорят: «Ребята, нас очень радует то, что она простая». Даже это уже важно.
- А можете как-нибудь сформулировать, что отличает «Фантом» от других существующих ядер?
- Конечно. У меня есть хорошая, как мне кажется, иллюстрация к этому. Почти все люди в этой стране хоть раз видели икеевскую мебель и хоть раз в жизни собирали её. Представьте себе, что вы вынуждены каждый вечер, приходя домой, собирать эту мебель, а утром снова разбирать и класть в ящики. Это иллюстрация того, как работают все без исключения современные программы. Программа в силу некоторого стереотипного мышления разработчика операционных систем вынуждена, поработав какое-то время, всё своё внутреннее представление о предмете, с которым она работает, разбирать и складывать в файлы. Это достаточно болезненный, странный и ненужный процесс. Первое, что делает «Фантом» — это избавляет программиста от необходимости этим заниматься.
Из этого проистекает достаточно много вещей — от приятных до фантастически хороших. Самая простая и очевидная — то, что в силу этого факта фантомовские программы не замечают перезагрузки операционной системы. Этому все так радуются в Firefox, который, как известно, способен запомнить состояние и при загрузке его «поднять». Но Firefox делает это вручную, а «Фантом» гарантирует такое всем работающим программам, перманентно и без какой-либо поддержки с их стороны. Выключил-включил — всё осталось как прежде и поехало дальше.
Обратим внимание на то, что чтобы это делать, Firefox при перезагрузке перескачивает данные со всех сайтов. Для моих пятидесяти вкладок это вполне ощутимо. Перезагружаешь систему, и начинается война за канал — уходят минуты на то, чтобы всё это выкачать.
Ещё вчера был отличнейший пример, я просто счастлив, что на семинаре мне его подсказали. Был человек, который занимается пожарными системами. Он рассказывает про совершенно живую ситуацию: бросок питания — миллисекундный, но вызывающий сбой на процессоре. И после этого охранная система тратит пятнадцать минут на пересчёт датчиков. С «Фантомом» после сбоя питания и перезапуска система будет иметь то же состояние, и датчики пересчитывать уже не надо.