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

О начале «Фантома»

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

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

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

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

— Я получил тысячи писем из-за рубежа от самых разных людей разного уровня, с разными словами. Как правило, публично ругают много, а в письмах только хвалят. Некоторое количество писем получил от людей из серьёзных компаний типа 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.

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