Публикации Терминологические конфликты во взаимотношениях с клиентом Технологическая сингулярность

UNИX, DZ, Фантом и Zope3

Andrey Orlov  2009-10-17 15:55

Новость о разработке ОС Фантом сразу стала широко известной. Многие споры о ней основаны на предположении о новизне разработки и сводятся к обсуждению того, возможна ли реализация заявленных концепций. Но на самом деле, элемент принципиальной новизны в Фантом отсутствует: заявленные концепции давно и успешно используются в широком классе систем, под названием объектно-ориентированные сервера приложений. Хотите увидеть будущее уже сегодня? Я расскажу, куда надо смотреть

Концепции ОС "Фантом" - это реальность Zope3

Концепции ОС "Фантом" - это реальность 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, и даже Plan9), несмотря на массу новых находок, в основе разработаны для решения давно забытых задач, на забытых языках и используя забытые технологии. Пытаясь ими воспользоваться оказываешься в положении ходока, снимающего девушку на ржавом грузовике, который было лень сдать в утиль папаше-дальнобойщику (при том, что папаша-то давно обновил матчасть). Но это личное мнение, которое даже люди, мнение которых я уважаю, разделяют далеко не все.

А вот потребность снизить стоимость разработки - это реальный запрос рынка, и компонентно-ориентированные, транзакционные среды с персистентной памятью, такие как привычный Zope или фантастическая ОС "Фантом", полностью ему удовлетворяют. Возможность быстрого, "моментального" старта системы также чрезвычайно ценна, и обсуждается такими компаниями, как Микрософт, как главный козырь в удержании рынка. При персистентной памяти вопрос быстрого старта даже не стоит: система не останавливается, она - максимум - спит: восстановление обслуживания не дольше и не сложнее чем hibernate.

Я не планирую заниматься разработкой какой-либо ОС, но всегда приветствую такие попытки - будь это Minix3, Plan9, Cleese или даже ReactOS. Но когда я вижу, что попытка основана на такой продуктивной идее, как в случае ОС "Фантом", радость моя не знает границ: давайте же, наконец, сдадим в утиль этот привычный мир. Сожаление вызывает лишь проприетарность проекта. Читатель, может быть, ВЫ займетесь нативным запуском Zope3 и сделаете открытый проект?

DreamBot Zope3 Учат тут Нейросети Репозиторий Слив! Статистика Редакторам Мобильный блог
Официальный сайт Zope3 Московская группа изучения реактивного движения The Dream Bot Site nooxml Сайт посуточной аренды квартир в москве