Интервью с Дмитрием Завалишиным, работающим над собственной операционной системой под названием «Фантом», многие с интересом прочитали, несмотря на солидный объём — пятьдесят тысяч знаков. Но некоторые читатели бросились комментировать, не читая — слишком уж плотной вышла стена текста. Что ж, вот некоторые выдержки, которые осилить куда легче, а общую картину они, в общем-то, передают.
О начале «Фантома»
— Сложность того, что я сейчас понимаю про систему, превысила возможности головного мозга, она сегодня в него уже не вмещается. До какого-то уровня я понимаю, как и что в ней происходит, а дальше — нет. И поскольку проверить это хочется, её пришлось сделать, чтобы понять, что будет дальше.
— Я стал пробовать, делать какие-то наброски, пытаться сделать то один, то другой кусочек — посмотреть работает или не работает та или иная вещь. Компилятор, вот, написал тестовый, систему виртуальной памяти. Оно начало оживать постепенно и двигаться. Финальный шаг — когда я сказал себе, что эти куски мы действительно будем собирать в ядро операционной системы.
О том, как все узнали о «Фантоме»
— Полтора года назад случилась эта история с публикацией в западном журнале. У одного из наших сотрудников был друг за рубежом, он ему рассказал, что, знаешь, у нас тут ребята операционку потихонечку клепают. «Да, правда? Расскажите. Написал письмо, мы кинули ему внутренние рабочие материалы, идеи, и через неделю вылетела статья, от которой мы сами были в лёгком шоке. Эта статья была перепечатана множество раз — на сотой перепечатке мы просто перестали считать. До этого нас, конечно, воодушевляло — было интересно: японский, китайский языки, европейские языки, прибалтийские языки, дискуссия где-то в Эстонии о том, что русские подкопаются под Эстонию через операционную систему, которую они разрабатывают!
— Я получил тысячи писем из-за рубежа от самых разных людей разного уровня, с разными словами. Как правило, публично ругают много, а в письмах только хвалят. Некоторое количество писем получил от людей из серьёзных компаний типа 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.