- Следующая мечта — исчезновение (с пользовательской точки зрения) разницы между оперативной памятью и диском. Это бы отменило необходимость сохранять то и дело свои данные. «Фантом» от этого избавляет?
- Да, «Фантом» здесь больше всего похож на листочек бумажки — вы написали что-то — оно осталось. Хотите копию — сделайте копию. А вот команда Save здесь не нужна по определению. Даже больше скажу — в «Фантоме» нет разницы между иконкой и окном. То есть иконка, документ и окно — это, вообще говоря, одно и то же. Наличие окна, которое показывает содержимое документа — это всего лишь вопрос состояния hide или unhide. По сути дела, окно — это увеличенная иконка.
- То есть можно сделать раскинский zoomable-интерфейс?
- Да-да-да! Это в существенной мере движется именно в эту сторону. Я как раз про это и говорил — в Раскине меня как раз смущает то, что у него есть хорошее представление о том, что он хотел бы видеть, но нет хорошего представления о том, как это положить на реальную софтверную среду. У нас это представление, кажется, даже есть. Оно не вполне однозначно ложится на идеи Раскина, но я в целом вполне разделаю его мечты.
- Далее — разница между запущенной и незапущенной программой. Она тоже, как я понимаю, стирается?
- Да, в «Фантоме» это делается естественным образом. Как только программу перестают беспокоить, она перестала быть запущенной. Начали снова с ней что-то делать — она продолжила работать с того места, где её оставили. Собственно, это к тому же вопросу об иконке, документе и окне. Есть документ, состояние которого присутствует, и если убрали окно, это ни на что не повлияет. Документ останется в прежнем состоянии.
- Последнее — это возможность отмены любого пользовательского действия.
- Здесь система как таковая, к сожалению, ничего предоставить не сможет. У нас есть представление о том, как это можно сделать в рамках реализуемой объектной среды, но уже с некоторой потребностью от программиста предпринять некоторые усилия. Даже не столько усилия, сколько необходимость делать свои приложения некоторым определённым образом. Грубо говоря, если он использует немодифицируемые объекты и применяет функциональный стиль, то более или менее автоматом получается некая среда, в которой можно возвращаться к предыдущему состоянию. В этом месте мы не даём готового решения, но мы говорим, что если в нашей среде придерживаться определённых правил, это будет получаться дёшево и легко.
- Давайте теперь вернёмся к реальности. Какие короткосрочные перспективы стоят перед проектом?
- У нас сейчас достигнута ближайшая цель получить стабильно работающее ядро, в котором хорошо работают снэпшоты, в котором чётко отслеживается перезагрузка. Сейчас есть нормальное, хорошее ядро, разработку которого можно при желании и остановить, и это будет приемлемо. В ядре есть некоторое количество вещей, которые нужно обязательно доделать — они касаются некоторых тонкостей восстановления системы. В системе есть такие места, которые должны быть проинформированы о перезагрузке, и это место пока что не реализовано. Как только пройдём его, разработка ядра будет приторможена.
Следующая задача — сделать пользовательскую среду, для которой которой было бы удобно писать программы. То есть главная стоящая сейчас перед нами задача — сделать релиз, на котором средний программист мог бы уже что-нибудь написать. Строго говоря, этот релиз у нас уже есть, но человеку потребуются усилия на то, чтобы продраться через наши инструменты — способы склеивания кода, миграции, сборки. Не сказать, что они сделаны плохо — просто так, как того требовала текущая ситуация.
Ещё одна вещь, которая сейчас не готова — это графическая подсистема, которая на сегодня реализована только в ядре и почти никак не доведена до пользовательского уровня, и в ней не реализованы некоторые примитивы, которые необходимы в реальной жизни. К примеру, нет примитива, позволяющего подвинуть окно или изменить его размеры. Без этого в режиме демонстрации можно жить, но в реальной жизни хотелось бы, чтобы оно было. Вот такие вещи нужно отработать, и после этого мы бы хотели, чтобы у нас случился релиз, про который мы бы могли сказать «да, интересующийся разработчик может это взять, собрать, попробовать, запустить, написать под это какую-нибудь программку».