?

Log in

No account? Create an account

Июль, 16, 2007

12 июля стартовал исследовательский проект, который ставит своей целью создание новой отечественной перспективной ОС. Всё прошло по-рабочему буднично, без разрезания алых ленточек, произнесения пышных речей и осушения бокалов шампанского. Провели онлайн-планерку, обсудили контуры проекта, наметили дальнейшие шаги. Сформировали штаб — технический совет (техсовет), который будет осуществлять руководство проектом. В него вошли (в алфавитном порядке):

1. Руслан Богатырёв (Москва, Россия)
2. Илья Ермаков (Орёл, Россия)
3. Владимир Лось (Харьков, Украина)
4. Борис Рюмшин (Орёл, Россия)

Каждый из нашей четвёрки шёл к работе по созданию новой ОС своим путём. Это решение долго вызревало, не один год. Основой сближения интересов стали Оберон-технологии и аппарат формальных методов (formal methods), которые мы рассматриваем как конкурентное преимущество по отношению к другим подобным группам, занимающимся разработкой экспериментальных ОС. Мы не зациклены на языках Оберон-семейства и рассматриваем критически их изъяны, но высоко ценим то, чем Обероны обладают. В сфере системного программирования в противостоянии с Си и другими мэйнстрим-языками у них технологические позиции существенно лучше.

Помимо техсовета в стартовый состав группы вошли независимые разработчики и специалисты из самых разных уголков России (С.-Петербург, Зеленоград, Ярославль), из стран ближнего и дальнего зарубежья (Украина, Узбекистан, Израиль).

Cвыше 20 лет ядро группы занималось исследованиями и разработками в сфере языков системного программирования школы проф. Никлауса Вирта (Modula-2, Oberon, Oberon-2, Component Pascal, Active Oberon, Zonnon, Composita), операционных систем (Medos, Excelsior, Oberon System, Mithril, ETHOS, Portos, XO/2, Bluebottle), персональных компьютеров с аппаратной поддержкой базового языка (Lilith, Kronos, Ceres, Chameleon), систем динамической кодогенерации и кодогенерирующих загрузчиков (OMI, Juice), инструментальных систем (XDS, BlackBox, GPCP JVM/.NET), а также ОС, встраиваемых в браузер (OberonScript). Помимо этого в сферу профессиональных интересов участников группы входят операционные системы QNX, Inferno, Plan 9, Singularity и др.

При проведении исследований на протяжении этого периода были налажены контакты с ведущими исследовательскими группами мира: ETH Zurich, DEC Systems Research Center, Институт систем информатики РАН им. А.П.Ершова, Oxford University Computing Laboratory, Microsoft Research (Cambridge Lab).

Участники группы обладают многолетним опытом проведения теоретических и практических работ в области мультипрограммирования и параллельных вычислений, систем (жесткого) реального времени, разработки компиляторов, систем поддержки различных языков (run-time), кросс-компиляции, верификации ПО, математического аппарата конечных автоматов, сетей Петри, нейронных сетей, других формальных методов.


Цель проекта: проведение НИОКР (научно-исследовательские и опытно-конструкторские работы) по созданию перспективной ОС нового поколения (персональные компьютеры), предусматривающей (для ряда процессорных архитектур) реализацию операционной платформы и базовых средств для работы массового пользователя (гос.учреждения).

Модель работы: открытое исследовательское программирование (Open Research Programming); оно подразумевает открытый характер научных и инженерных работ в течение всего проекта, предоставление в открытый свободный доступ важнейших материалов по проекту, а также всей проектной документации и исходных текстов; при этом придание исходным текстам и исполняемому коду правового статуса общественного достояния (public domain).


Новую ОС планируется делать с нуля, отталкиваясь от двух магистралей: UNIX-направления (включая QNX, Minix, Plan 9 и др.) и Oberon-направления (Oberon System, XO/2, Bluebottle). Они берутся в качестве отправных точек.

В основу проекта положены два момента:

1. Технологическое совершенство (исследования, экспериментальная ОС).
2. Информационно-технологическая независимость (как минимум — группы, как максимум — государства).

Если задача решается небольшой группой (по крайней мере, сейчас), необходимо максимально упростить её без потери общности. Т.е. установить ограничения, которые существенно облегчат задачу:

1. Нет совместимости с другими ОС (можем делать с чистого листа).
2. Нет совместимости по драйверам.
3. Нет совместимости по операционным платформам (для одной — POSIX — можно сделать исключение).
4. Базовый функционал для пользователей ограничивается конкретным плацдармом (гос. учреждения, включая школы).
5. Нет необходимости решать маркетинговые задачи (как в случае экспериментальной ОС, так и в случае придания ей статуса государственной ОС).

У нас развязаны руки по научно-инженерным экспериментам с целью достижения технологического совершенства, нам нет надобности поклоняться идолам рынка. Мы видим, что результат можно будет не только положить на полочку или поставить в красивую рамочку, не только гордиться своими достижениями (если таковые будут), но и сделать результат полезным для массового пользователя.

Главные контраргументы, которые выдвигали в предварительных дискуссиях наши оппоненты, помимо чисто маркетинговых проблем (как завоевать место на рынке) сводятся к следующему:

1. Как переписывать множество прикладных вещей, уже имеющихся в Windows и Linux?
2. Что делать с драйверами?

Оба пункта рассматриваются как непреодолимая преграда на пути создании новой ОС с нуля. Поскольку столько всего уже наработано, вроде бы можно только идти по пути обязательной бинарной совместимости (по исполнению кода).

Аргументация для новой ОС, не совместимой по исполнению с имеющимся парком прикладного ПО, вкратце выглядит так.

1. Нет необходимости полностью переписывать специализированные программы и системы. Никто не мешает использовать новую ОС вместе с другими, причем даже на одном компьютере. В гос.учреждениях при решении офисных задач специализированные прикладные продукты гарантированно не нужны на всех 100% рабочих мест (СУБД в расчет не берём — это отдельная тема). Думаю, они не нужны и на 80%, и даже на 20%.

2. По мере необходимости прикладной слой может обогащаться необходимым софтом. Если ОС останется в ранге экспериментальной, то там будут появляться преимущественно "ширпотребные вещи" (видео, аудио, фото и др.). Если сможет стать государственной, то появится рынок для создания новых систем производственного назначения (включая и системы класса ERP, CRM, KMS, BI, EIS, EAI и др.). Причём нет надобности наследовать "жирность" существующего софта и старые ошибки.

3. Что касается драйверов. Во-первых, будут созданы условия для удобства написания подобных драйверов (причём с возможностью быстрой адаптации под новые версии оборудования). Во-вторых, будет базовый набор, который сможет покрыть основные потребности (школ и гос.учреждений). В-третьих, если ОС cтанет государственной, то требование совместимости с новым оборудованием — это вопрос взаимодействия с поставщиками аппаратных средств, для которых российский рынок — не пустое место. Если мы вправе требовать маркировки товаров и представления инструкций на русском языке, то соблюдение российских госстандартов и программная поддержка оборудования для новой государственной ОС (драйверы) — это вполне нормальное и разумное требование.

4. Совместимость с другими ОС подразумевается на уровне ведущих стандартных форматов файлов, некоторых открытых (стандартных) спецификаций (протоколов), а также (по возможности) отдельных стандартных операционных платформ (в частности, POSIX). Если связывать себя путами совместимости, то только в отношении общепринятых стандартов, которые не зависят от прихотей одной компании и которые достаточно стабильны во времени.

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

Можно ли сделать хорошую (в технологическом плане) ОС, которая была бы в исходных текстах на два порядка компактнее Windows и Linux (т.е. порядка 300-500 тыс. строк), имела практическую ценность и решала бы около 80% повседневных задач для достаточно массового сектора рынка (офисные задачи в гос.учреждениях)? На наш взгляд, это решаемая задача.

Кадры — самое главное в данном проекте. Их нужно не только подбирать, но и готовить. Без хорошего информирования о проекте заполучить такие кадры крайне тяжело. Примерно год уйдёт на формирование костяка и выведение команды на требуемый уровень знаний и коллективного взаимодействия, на то, чтобы можно было параллельно с экспериментальной работой приступать к стадии полноценного проектирования ОС. Для проработки такой ОС требуется около 10 человеко-лет (если исходить из энтузиастов, занятых на 1/4 рабочего времени, т.е. не более 2 часов в день, то получается оценка в 20 человек на 2 года). Для реализации такой ОС требуется ещё порядка 20-30 человеко-лет (из расчёта 15 тыс. строк в год на человека, при полном рабочем дне). 2 года на НИОКР и проектирование. 2-3 года на реализацию и доведение до полноценного продукта. Стадия производства должна осуществляться на основе финансирования. В принципе можно обойтись и без адекватного финансирования на этой стадии, но тогда качество доведения продукта и сроки могут сильно поплыть.

В новой ОС во главу угла будут поставлены следующие аспекты, отличающие её от других:

1. Информационная безопасность
2. Математический фундамент
3. Асинхронность
4. Адаптивность
5. Перенацеливаемость

Безопасность. Будет обусловлена проработкой на уровне ядра ОС и вышележащих уровней целостной системы комплексной защиты от несанкционированного доступа и вредоносного ПО. При проработке будет учитываться опыт создания достоверных/защищённых ОС (trusted OS).

Математический фундамент. Проект будет отличаться высокой наукоёмкостью. Конечные автоматы, сети Петри, нейронные сети — эти три базовые математические абстракции будут использованы при создании ОС. Их эффективная поддержка на уровне примитивов будет встраиваться на самый нижний уровень (вплоть до железа). Верификация логики взаимодействия будет проводиться статически и динамически на этом уровне, после чего проверенная схема будет автоматически "выливаться" специальными трансляторами с модели на целевые языки. Синхронность взаимодействия и чёткая логика в большей степени будут обеспечиваться конечными автоматами. Асинхронность и свобода реконфигурации — сетями Петри. Адаптивность — нейронными сетями. Математический фундамент будет сосредоточен в сфере ядра. В меньшей степени — на сервисном уровне. В ещё меньшем — на прикладном. Наукоёмкость с движением от ядра к периферии будет падать.

Асинхронность. Отличительным моментом новой ОС будет асинхронность. Это означает максимальный уход от прямых (синхронных) средств взаимодействия программных элементов (компонентов, объектов и др.) за счёт формирования косвенной, причинно-следственной связи. Конкретизация асинхронности для имеющейся процессорной архитектуры будет осуществляться полуавтоматически. Асинхронность обеспечивает основу для последующего распараллеливания (разного масштаба). Это иной подход к программированию.

Адаптивность. Адаптивность рассматривается как средство динамической оптимизации режима работы и взаимодействия всех компонентов ОС, а также демпфирования внешних возмущений, ведения политики обработки нештатных ситуаций (управляемая деградация) при изменении параметров операционного окружения. В некоторых моментах близка к идеям автономного компьютинга (в понимании IBM).

Перенацеливаемость. Ставится задача создания такого полуфабриката ОС, который позволил бы относительно легко функционально масштабироваться (статически), перенацеливаться по разным задачам (секторам рынка). Перенацеливаемость определяет возможность быстрой конкретизации (из единого полуфабриката) — построения семейства ОС, использующих общие архитектурно-конструкторские решения.


Основные зоны НИОКР

1. Ядро
* Микроядро (аттоядро)
* Защита
* Диспетчеризация процессов

2. Сервисный уровень
* Управление памятью
* Файловая система
* Управление устройствами
* Сетевые средства

3. Прикладной уровень
* Операционная платформа
* Пользовательский интерфейс
* Прикладные каркасы

Слои в ОС будут разделяться (причём ещё и организационно — за это будут отвечать разные сектора группы, разные люди), но при этом будет проводиться притирка между слоями. Идти будем с двух сторон — со стороны универсального функционала нижележащего уровня и последующей конкретизации его с учётом вышележащего уровня. Проектировать будем так, чтобы безболезненно можно было менять реализации слоёв и их внутреннюю логику (в т.ч. через "картриджи данных" — параметры формальных моделей).

При этом мы не планируем выбирать одну линию и жёстко следовать ей. Общая схема работ относительно скоро, после внутренних обсуждений, утрясётся. Но в рамках неё не только допустимы, но и приветствуются конкурентные решения. Искать оптимальность будем по нескольким направлениям: сопоставлять, сравнивать, выявлять плюсы и минусы. Макетирование (экспериментальное программирование) будет нацелено на обкатку разных идей.

Для ведения экспериментальных исследований (до формирования нового инструментария) планируется применять базовые рабочие языки. В роли таковых планируются Компонентный Паскаль и Оберон(-2). Базовый инструментарий — BlackBox. Это не означает, что в экспериментах для обкатки идей не будут задействованы другие языки, но их удельный вес будет много меньше. Вполне вероятно, что макет ОС будет делаться исключительно на базовых языках с имитацией средств новых языков. И только после обкатки (и готовности нового инструментария) будет переписываться на новые языки.

В идеале в отдалённом будущем при получении хороших результатов НИОКР вполне разумно будет ставить вопрос о разработке наиболее оптимального отечественного железа под такую схему. Но это дело не сегодняшнего дня.


Организационная структура группы

1. Сектор изучения перспективных ОС и процессорных архитектур
2. Сектор архитектурно-конструкторских решений
3. Сектор разработки инструментальных средств
4. Сектор разработки ядра
5. Сектор разработки сервисного уровня
6. Сектор разработки прикладного уровня
7. Сектор информационного обеспечения

Один исследовательский сектор (1), один проектный (2), четыре производственных (3-6), один вспомогательный (7).


Пояснения к процессу ведения проекта

Исследования — это не кодинг. Несколько иные требования к ведению процесса. Потребуется большая работа по самообразованию, работа по переосмыслению вроде бы известных вещей. Нужен критический взгляд. Потребуются яркие идеи, которые надо будет проверять экспериментально (язык реализации здесь вторичен). Потребуется привыкнуть к мысли, что исходники могут отправиться в корзину и переделываться по нескольку раз. Что это просто макет для проверки идей.

Помимо научных исследований и экспериментов понадобится формировать фундамент системы и создавать её основной скелет, на который будет наращиваться мышечная масса. Для этого потребуется выделение особой группы наиболее сильных, хорошо мотивированных программистов, способных уделять проекту достаточное время. Буквально с первого дня проекта занимаемся проработкой важных элементов прикладного уровня, которые дадут жизнь базовому прикладному функционалу применительно к ипостаси клиентской ОС массового применения. Этим будет заниматься отдельный сектор, для которого исследования по железу, ядру и сервисному уровню будут вторичными.

Мы не просим денег у государства. Фазу НИОКР можно сделать без денег. Идея создать ОС, которая может быть востребована государством (государственная ОС), — это путь от экспериментальной ОС (которой мы хотим заниматься и уже занимаемся) к массовому потребителю. Путь не единственный, но возможный. Если мы и будем претендовать на гранты, то на общих основаниях, в рамках проводимых работ.

В проекте будут задействованы два вещательных веб-центра, на которых будет строиться внутренняя инфраструктура проекта и вестись публичная часть: это EuroProg.ru (Европейский центр программирования, который осенью будет расконсервирован, сменит дизайн и структуру) и OberonCore.ru (который выступает в роли центра компетенции инструментария BlackBox в России). Работа будет вестись на собственном интрапортале, с использованием Wiki, системы версионирования, внутренних форумов и служебного FTP.

Предполагается следующая схема предоставления информации о проекте в публичный доступ. В Европейском центре программирования будет выделен специальный раздел, посвящённый данному проекту. Здесь будут публиковаться результаты исследований (включая различные обзоры по инструментарию, ОС и железу). В дополнение к этому будет представлена дополнительная литература (книги, препринты, статьи, документация и др.), проясняющая разные аспекты реализации — в рамках Открытой электронной библиотеки (Open Digital Library). На сайте OberonCore.ru, который будет центром формирования сообщества для данного проекта, планируется выделение специализированных форумов со свободным доступом. Там можно будет вести дискуссии по направлениям работ в рамках данного проекта непосредственно с участниками проекта, которые специализируются на тех или иных направлениях.

Мы не будем замыкаться в себе. Равно как и просто "вещать" о проекте в абстрактное информационное пространство. Будут налаживаться тесные контакты со всеми мало-мальски значимыми группами (как формальными, так и неформальными). По крайней мере, даже простое информирование этих групп о ходе продвижения проекта, информирование в приоритетном порядке (по срокам и полноте) по отношению к остальным позволит налаживать информационный обмен.

Открытость для нашего проекта — это условие его выживания. Открытость нам нужна, чтобы набрать кадры, сплотить коллектив (создать боеспособную единицу), получить подпитку идеями, орг.помощью, финансами.

Чтобы начинать с нуля, нужно браться за исследования. Разумеется, чтобы завоевать доверие к проекту, нужны и конкретные, работающие вещи. Макетирование, воплощение в софте элементов новой ОС, станет одной из важных задач первого этапа. Макетирование требуется как для проверки идей, так и для получения важных аргументов в изыскании дополнительных ресурсов (кадров, оборудования, информации, финансов).

Исследования и экспериментальное программирование вполне подлежат работе в условиях отсутствия финансирования и отчуждения кода в общественное достояние. Именно это и лежит в основе идеи Open Research Programming, где центр тяжести переносится на НИОКР, которые отделяются от собственно производства (на последнем и специализируется Open Source). И за счет этого возникает дополнительный стимул, дополнительная мотивацию к ведению перспективных проектов.

Сейчас главное — создать комфортную среду работы команды и построить саму команду. В настоящий момент нет по сути ограничений на вхождение в команду, кроме общения на русском языке и представления информации о себе, по которой можно сделать вывод об опыте и компетенции кандидата. Приём желающих будет вестись на протяжении всего проекта. В последующем предполагается устанавливать срок (ориентировочно 2 месяца), после которого кандидат, приславший заявку на участие и "поварившийся" в проекте, будет по решению техсовета получать все привилегии участника (в т.ч. в отношении доступа к служебным материалам проекта).

Чтобы полноценно решить задачу подобного масштаба, требуется сконцентрировать интеллектуальную мощь не одного десятка людей. Потребуются не только исследователи, проектировщики, инженеры и рядовые исполнители, но и квалифицированные консультанты, как по научным аспектам проекта, так и по инженерным. Создание новой ОС — это мощный интеллектуальный вызов. Мы убеждены, что достичь цели можно целенаправленной работой, с сильной мотивацией участников и помощников проекта.

Latest Month

Март 2009
Вс Пн Вт Ср Чт Пт Сб
1234567
891011121314
15161718192021
22232425262728
293031    
Разработано LiveJournal.com
Designed by Paulina Bozek