UNИX, DZ, Фантом и Zope3
2009-10-17 15:55Новость о разработке ОС Фантом сразу стала широко известной. Многие споры о ней основаны на предположении о новизне разработки и сводятся к обсуждению того, возможна ли реализация заявленных концепций. Но на самом деле, элемент принципиальной новизны в Фантом отсутствует: заявленные концепции давно и успешно используются в широком классе систем, под названием объектно-ориентированные сервера приложений. Хотите увидеть будущее уже сегодня? Я расскажу, куда надо смотреть
Концепции ОС "Фантом" - это реальность Zope3
ОС "Фантом" - это операционная система Дмитрия Завалишина и его соратников. Довольно нашумевшая в последнее время. Сразу, как я услышал об этом проекте, меня преследовало ощущение дежавю: все доводы за и против были знакомы, это те самые доводы, которые я слышу про сервер приложений Zope, с которым упражняюсь последние несколько лет. На недавнем семинаре UNИX удалось встретится и пообщаться непосредственно с DZ. К моему удивлению, ощущение дежавю только усилилось.
Поясню в чем дело. Широко известно, что центральной концепцией ОС "Фантом" является персистентная память системы и процессов. Благодаря этому, система ведет себя так, как будто никогда не останавливается вообще. А следовательно, одна из наиболее одиозных концепций операционной системы - обособленная подсистема долговременного хранения данных, она же файловая система - уходит в прошлое. В самом деле, зачем процессу сериализовывать объект и сохранять его в файлах файловой системы, если можно просто зарегистрировать объект как автономный компонент операционной системы и переложить на нее заботу о его сохранности? Такой подход, предположительно, должен привести к существенному упрощению программного обеспечения, существенная часть которого посвящена файловому взаимодействию.
Этот тезис можно проиллюстрировать на опыте обучения программированию: студентам предлагается некий учебник, который при помощи простенького языка учит описывать реальный мир в виде программных структур. Студенты испытывают радостное возбуждение, от того как это просто и изящно получается при помощи структур, кортежей, списков и словарей, но затем на них выливают ушат холодной воды: то, чему их учили представляет лишь академический интерес, так как это красиво выглядит лишь для данных в памяти, а данные там не сохраняются долго. Мало того - даже если бы они там сохранялись, данные реального мира туда бы не влезли. После чего вчерашний подающий надежды специалист начинает ощущать себя недоучкой и знакомится с реальным миром: NAS, форматы файлов, сериализация, lex/yacc чтобы разбирать эти файлы, технология XML/XSLT/XPath, чтобы форматы были переносимы, реляционные базы данных, чтобы работать с данными, не поднимая их в память целиком, и куча маленьких других костылей, каждый из которых превратился в целую отрасль. И все это ради того, чтобы сохранить, передать и восстановить данные. Так вот. Если объекты персистентные - эти великие технологии можно выбросить и вернутся в уютный мир учебника программирования. Ну, я утрирую, конечно.
На семинаре UNИX я узнал об ОС "Фантом" кое-что новое: Дмитрий Завалишин упомянул несколько ключевых моментов так называемой "Компонентной Архитектуры". Ее преимущества не так очевидны, как персистентная память, но пользу трудно переоценить. Основные термины компонентной модели - интерфейс, компонент и адаптер. С любым компонентом можно работать используя предоставляемые им интерфейсы. Если компонент не предоставляет нужный интерфейс - его можно адаптировать к нему, разработав специальный адаптер. Таким образом, два процесса могут пользоваться общим компонентом не вдаваясь в подробности его внутреннего строения. Более того: можно объединить в единое целое несколько заведомо чуждых друг другу компонентов и процессов: достаточно написать адаптер интерфейса предоставляемого компонентом к интерфейсу, известному процессу и задача интеграции решена.
На основе интерфейсов также удобно выстраивать разделение прав доступа: права даются на интерфейс взаимодействия с компонентом. Так, права на гипотетические интерфейсы IReadFile, IWriteFile, IExecuteFile могли бы моделировать привычные юниксные права доступа для гипотетического адаптера к POSIX. Естественно, грануляция прав на уровне интерфейсов оказывается намного более точной и гибкой.
Внутренности и детали реализации ОС "Фантом" скрыты от посторонних глаз, что в моем мире разработчиков открытого исходного кода вызывает недоверие, граничащее с параноидальностью. Для многих моих коллег, особенности ОС "Фантом" кажутся фантастичными, а преимущества спорными. Но у меня разумность и полезность концепций, планов и перспектив, рассказанных Дмитрием Завалишиным, не вызывают сомнений. Дело в том, что я уже много лет использую сервер приложений Zope3, который обладает многими свойствами проектируемой ОС "Фантом", хотя и сделан другими людьми и на другой платформе.
Zope3 - моя повседневная реальность: компонентный сервер приложений, с персистентными компонентами (объектами, для простоты), транзакционной памятью с возможностью отката и версионирования, сборщиками мусора, разделением доступа на уровне объектов и многими другими особенностями, которые создают совершенно новый, чрезвычайно гибкий и уютный мир, в котором возможно все. Хотя Zope3 не имеет с ОС "Фантом" общей кодовой базы, концептуальные идеи настолько сходны, что я с удивлением обнаружил, что могу ответить на любой вопрос, который задают Дмитрию, или даже предложить способы реализации отдельных частей ОС "Фантом". Основываясь на опыте использования Zope3, я уже сегодня могу сказать:
- идеи, заложенные в ОС "Фантом", действительно реализуемы (опыт такой реализации есть - это Zope3),
- эти идеи действительно полезны (мы используем их уже почти десять лет и после них POSIX кажется инвалидной коляской).
Поэтому в случае удачи проекта ОС "Фантом" ему найдется достойное место.
Как и многие разработчики моего поколения, я имею некий опыт разработки операционных систем - и личный, и наблюдения над (успешными!) попытками некоторых моих знакомых. Поэтому я могу сразу развеять миф о том, что разработка операционной системы это необычно длительный и дорогостоящий процесс, сопоставимый по стоимости с большим адронным коллайдером: при наличии продуктивной идеи и заинтересованности одного-двух человек, ядро и минимальный функционал новой операционной системы можно разработать за 3-4 месяца, максимум - год. Причем этот функционал будет существенно превышать запуск тетриса. Разработать ОС "Фантом" - это просто. Запусть Zope3 как операционную систему - обосновано полагаю, будет еще проще, тем более что прецедент создания операционной системы на Python уже есть.
Говорить о нужности сложнее, так как здесь личные предпочтения
перемешиваются с запросами рынка. Лично я сталкиваясь с программированием
для "обычной" операционной системы, каждый раз понимаю, что все они (и Unix,
и Windows, и даже
А вот потребность снизить стоимость разработки - это реальный запрос рынка, и компонентно-ориентированные, транзакционные среды с персистентной памятью, такие как привычный Zope или фантастическая ОС "Фантом", полностью ему удовлетворяют. Возможность быстрого, "моментального" старта системы также чрезвычайно ценна, и обсуждается такими компаниями, как Микрософт, как главный козырь в удержании рынка. При персистентной памяти вопрос быстрого старта даже не стоит: система не останавливается, она - максимум - спит: восстановление обслуживания не дольше и не сложнее чем hibernate.
Я не планирую заниматься разработкой какой-либо ОС, но всегда
приветствую такие попытки - будь это




