Дмитрий Завалишин
Интервью с Дмитрием Завалишиным, работающим над собственной операционной системой под названием “Фантом”, многие с интересом прочитали, несмотря на солидный объём – пятьдесят тысяч знаков. Но некоторые читатели бросились комментировать, не читая – слишком уж плотной вышла стена текста. Что ж, вот некоторые выдержки, которые осилить куда легче, а общую картину они, в общем-то, передают.

О начале “Фантома”

– Сложность того, что я сейчас понимаю про систему, превысила возможности головного мозга, она сегодня в него уже не вмещается. До какого-то уровня я понимаю, как и что в ней происходит, а дальше – нет. И поскольку проверить это хочется, её пришлось сделать, чтобы понять, что будет дальше.

– Я стал пробовать, делать какие-то наброски, пытаться сделать то один, то другой кусочек – посмотреть работает или не работает та или иная вещь. Компилятор, вот, написал тестовый, систему виртуальной памяти. Оно начало оживать постепенно и двигаться. Финальный шаг – когда я сказал себе, что эти куски мы действительно будем собирать в ядро операционной системы.

О том, как все узнали о “Фантоме”

– Полтора года назад случилась эта история с публикацией в западном журнале. У одного из наших сотрудников был друг за рубежом, он ему рассказал, что, знаешь, у нас тут ребята операционку потихонечку клепают. “Да, правда? Расскажите. Написал письмо, мы кинули ему внутренние рабочие материалы, идеи, и через неделю вылетела статья, от которой мы сами были в лёгком шоке. Эта статья была перепечатана множество раз – на сотой перепечатке мы просто перестали считать. До этого нас, конечно, воодушевляло – было интересно: японский, китайский языки, европейские языки, прибалтийские языки, дискуссия где-то в Эстонии о том, что русские подкопаются под Эстонию через операционную систему, которую они разрабатывают!

– Я получил тысячи писем из-за рубежа от самых разных людей разного уровня, с разными словами. Как правило, публично ругают много, а в письмах только хвалят. Некоторое количество писем получил от людей из серьёзных компаний типа IBM, которые занимались сходной разработкой и указали на места, которые им кажутся проблемными или рекомендовали другие подходы.

О том, как работает “Фантом”

– Представьте себе, что вы вынуждены каждый вечер, приходя домой, собирать мебель, а утром снова разбирать и класть в ящики. Это иллюстрация того, как работают все без исключения современные программы. Программа вынуждена, поработав какое-то время, всё своё внутреннее представление о предмете, с которым она работает, разбирать и складывать в файлы. Это достаточно болезненный, странный и ненужный процесс. Первое, что делает “Фантом” – это избавляет программиста от необходимости этим заниматься.

– Фантомовские программы не замечают перезагрузки операционной системы. “Фантом” гарантирует это всем работающим программам, перманентно и без какой-либо поддержки с их стороны. Выключил-включил – всё осталось как прежде и поехало дальше.

– Представьте, стоит система, которая занимается жизнеобеспечением больного в больнице. Бросок питания – она перезапустилась и снова должна переинициализировать своё состояние, а больной до этого может просто не дожить. “Фантом” гарантирует ей перезапуск в рабочем состоянии.

– Ещё важнее те вещи, которые проистекают из этой консистентности в программной среде. В современной операционной системе – будь то Unix или Windows, взаимодействие двух программ очень сильно осложнено по массе причин. Во-первых, в силу того, что структура системы построена по принципу раздельных адресных пространств, и они находятся за очень толстой стенкой. Они могут общаться только, грубо говоря, кидаясь друг в друга записочками, причём “записочки” – это довольно дорого, и в эту записочку не запихнёшь сложные структуры, которыми оперируют современные программы.

– Мы говорим, что всё, что у нас есть в системе, можно использовать. То есть можно достучаться до чужих данных (с учётом желания того, кому они принадлежат, их вам отдать, конечно – в этом смысле “Фантом” – система очень защищённая), но если две программы желают обменяться данными, то это можно сделать очень дёшево, очень эффективно и с произвольной степенью сложности.

– “Фантом” представляет собой среду, в которой “Фотошоп” мог бы, один раз найдя шрифт, потом мгновенно запускаться и сразу начинать им пользоваться, имея непосредственный указатель на этот самый шрифт.

– В момент сохранения снэпшота происходит запись только тех данных, которые изменились с момента предыдущего снэпшота. Как правило, для обычной системы их немного. Это означает, что снэпшоты можно делать достаточно часто, а при сбое система восстановит состояние, довольно близкое к тому, что было раньше. Скорость, с которой система делает снэпшоты, регулируется. Можно сказать – раз в минуту, можно – вообще непрерывно.

О наследии Unix

– OpenGL у нас даже в каком-то виде сейчас есть в системе. В довольно сыром, правда.

– Есть объектная персистентная среда, которую “Фантом” предлагает в качестве родной. Под неё мы собираемся построить способ миграции, который позволил бы втаскивать на неё код, написанный на современных языках – на Java, Python, C#. Это очень большой объём кода, и он, на самом деле, превосходит то, что сделано для Unix.

– В сегодняшней стадии в “Фантоме” делается Unix-подсистема, которая позволит запускать под ним более или менее немодифицированный Unix-код, хотя X Window мы, наверное, не будем туда затаскивать.

– Собственная оконная система уже в какой-то степени есть, и не так уж много кода X Window, который было бы интересно в неё тащить. А делать X Window – это довольно серьёзная задача, которая, я боюсь, не окупится.

О Java

– У нас языкоагностическая среда, мы не завязаны на Java. Просто Java Virtual Machine на сегодня используется для очень большого количества современных языков – более 200 языков имеют трансляторы в JVM, а это значит, что если поддержать её, то мы поддержим и это огромное количество языков. Для нас это будет наиболее эффективным путём. Поэтому дело не в самой Java, а в виртуальной машине.

– Когда лет десять назад появилась Java, производительность программ на ней была катастрофически хуже, чем производительность программ на C++. Что не помешало Java “вынести” C++ просто с корнями. Можно считать, что C++ сейчас не существует, а Java сегодня – язык номер один.

О веб-серверах на “Фантоме”

– Мы считаем, что у нас есть хорошие шансы в разработке не очень масштабных систем. Условно – систем, которые делаются на коленке тремя программистами. То есть небольшие разработки, которые, как правило, сегодня делаются на PHP плюс MySQL. Здесь мы можем предложить PHP без MySQL. PHP и MySQL популярны, потому что их легко изучить. Если выкинуть MySQL, изучать будет ещё вдвое легче.

Об особенностях “Фантома”

– Одна из причин, по которой я так уверен в правильности концепции “Фантома”, – в том, что очень много частных задач здесь решается в силу естественных свойств системы. Это меня очень мотивирует.

– “Фантом” – это же, собственно, программы, которые постоянно и живы, и мертвы. Они лежат на диске, но как только они попытаются поработать, непосредственная попытка обращения к программе приведёт её в оперативную память. Она может поработать частью, и именно эта часть загрузится и поработает. Как только памяти станет мало для программ, и какие-то программы станут пассивными, они вытеснятся из оперативной памяти непосредственно стандартным механизмом планирования ресурсов компьютера.

– Здесь нет файлов, зато есть объекты. Объекты отличаются от файлов прежде всего тем, что для них можно определить методы – то есть давать им возможность сказать системе, что с ними ещё можно сделать. К примеру, их можно искать по другим критериям; например, их можно по-другому классифицировать, и не одним способом классифицировать.

– Приложение – это некоторый класс, реализующий некоторую функциональность. И объекты этого класса являются документами с точки зрения пользователя.

– “Фантом” больше всего похож на листочек бумажки – вы написали что-то – оно осталось. Хотите копию – сделайте копию. А вот команда Save здесь не нужна по определению. Даже больше скажу – в “Фантоме” нет разницы между иконкой и окном. То есть иконка, документ и окно – это, вообще говоря, одно и то же.

– Как только программу перестают беспокоить, она перестала быть запущенной. Начали снова с ней что-то делать – она продолжила работать с того места, где её оставили.

О том, что есть и что предстоит

– У нас сейчас достигнута ближайшая цель – получить стабильно работающее ядро, в котором хорошо работают снэпшоты, в котором чётко отслеживается перезагрузка. Сейчас есть нормальное, хорошее ядро, разработку которого можно при желании и остановить, и это будет приемлемо. В ядре есть некоторое количество вещей, которые нужно обязательно доделать – они касаются некоторых тонкостей восстановления системы.

– Следующая задача – сделать пользовательскую среду, для которой которой было бы удобно писать программы. То есть главная стоящая сейчас перед нами задача – сделать релиз, на котором средний программист мог бы уже что-нибудь написать.

– Ещё одна вещь, которая сейчас не готова – это графическая подсистема, которая на сегодня реализована только в ядре и почти никак не доведена до пользовательского уровня, и в ней не реализованы некоторые примитивы, которые необходимы в реальной жизни. К примеру, нет примитива, позволяющего подвинуть окно или изменить его размеры.

– После этого мы бы хотели, чтобы у нас случился релиз, про который мы бы могли сказать “да, интересующийся разработчик может это взять, собрать, попробовать, запустить, написать под это какую-нибудь программку”.

О монетизации и лицензии

– Мы – люди адекватные и понимаем, что создать операционную систему, во-первых, сложно, во-вторых, крайне сложно выйти с ней на рынок, хотя бы на какой-нибудь. Тем не менее, меня много спрашивают: “Почему ты за это взялся? Насколько это всё реально?” Я отвечаю, что если бы я просто не стал бы этого делать, мне бы стало стыдно, что не попробовал.

– Конечно, мы хотим, чтобы у “Фантома” было коммерческое применение. Есть некоторые направления, в которых ощущаются такие потребности.

– К GPL я отношусь очень плохо. Наверное, для кого-то это правильно, но я считаю, что нужно либо что-то отдавать по-настоящему, либо держать при себе и никому не показывать. Ситуация, когда ты говоришь “я отдам, но только если вы тоже будете отдавать” мне неприятна – я не люблю людям руки выкручивать и очень не люблю, когда их выкручивать пытаются мне. Мне будет куда приятнее, если мой код будут использовать бесплатно, чем если он потонет в пучине веков. Поэтому – LGPL.

Перейти к полной версии интервью