Очевидно, что полностью реализовать всё задуманное в один момент не получится. Как и в любом проекте, приходится задавать некоторые приоритеты, определяющие очерёдность реализации его частей и функций. Ниже приводятся этапы разработки, выделенные для «Сивелькирии», и их содержание.
Прототип
Целью разработки прототипа являются демонстрация принципиальной возможности реализации описанного продукта, а также уточнение архитектуры. В результате получится минимальная действующая модель, которую можно продемонстрировать заинтересованным лицам. Она будет включать в себя следующее:
- Ядро операционной системы, способное запускать код модулей и передавать между ними вызовы и данные;
- Поддержку модулей, интерфейсов, объектов и связей между объектами;
- Возможность генерации SDK для языка C++ на основе интерфейсов, описанных в виде XML;
- Возможность запуска под Windows и Linux в графическом режиме (с использованием слоя абстракции над графической и оконной подсистемами — например, Qt);
- Возможность запуска на PC и ARM в консольном режиме с минимально необходимой поддержкой устройств;
- Хранение объектов с использованием существующих файловых систем;
- Минимальную реализацию стратегии управления потоками и многозадачностью;
- Простейшие модули для демонстрации нескольких базовых сценариев использования;
- Загрузку интерфейсов и модулей вместе с ядром операционной системы (их выгрузка на данном этапе поддерживаться не будет).
Нулевая версия
Нулевая версия — это минимально функциональная реализация операционной системы, пригодная к использованию и написанию ПО для неё. На этапе разработки нулевой версии произойдёт окончательное уточнение архитектуры системы. Помимо функциональности, включаемой в себя прототипом, она также будет иметь поддержку следующих функций:
- Полноценная реализация модулей:
- Поддержка работы с модулями со стороны ядра: загрузка, выгрузка, управление приоритетами и прочее;
- Центральный репозиторий, в котором хранятся модули и интерфейсы. Установка ПО осуществляется из него;
- Административные компоненты, отвечающие за взаимодействие с репозиторием со стороны операционной системы, загрузку, установку и удаление модулей и обновление списка интерфейсов.
- Драйверы:
- Фреймворк для написания драйверов к устройствам (или использования существующих, если это окажется возможным);
- Поддержка работы с драйверами со стороны ядра;
- Начальный набор драйверов устройств.
- Минимальная графическая подсистема, обеспечивающая идентичную отрисовку графики и рендеринг текста на всех платформах;
- Подсистема работы со звуком;
- Минимальная оконная подсистема. Минимальный набор компонентов и соответствующий API;
- Полноценная поддержка многозадачности и многопоточности;
- Объектная файловая система;
- Интерфейсы и поддержка со стороны операционной системы сред выполнения, отличных от запуска машинного кода, для возможности выполнения модулей:
- В специфической среде выполнения (из промежуточного кода);
- В интерпретаторе (скриптовые языки);
- В эмуляторе (собранных для другой платформы).
- Поддержка нескольких языков программирования и SDK для них;
- Минимальные версии базовых интерфейсов для наиболее распространённых сценариев использования:
- Просмотра изображений;
- Редактирования документов;
- Воспроизведения аудио и видео;
- Просмотра Web-содержимого;
- Локального хранения данных;
- Поддержки мессенджеров и электронной почты;
- Получения уведомлений и запросов на обслуживание.
- Минимальный набор ПО, реализующего данные сценарии;
- Сетевой протокол для взаимодействия устройств, на которых запущена «Сивелькирия», и поддержка взаимодействия с объектами, существующими на других устройствах;
- Инсталлятор;
- Загрузчик;
- Средства настройки и администрирования;
- Подсистема логирования;
- Подсистема отладки.
Первая версия
Первая версия ОС «Сивелькирия» будет являться результатом адаптации опыта разработки и эксплуатации к реальным условиям. В ней будут исправлены те проблемы, которые окажутся выявлены на предыдущей стадии. Кроме того, первая версия вберёт в себя всё, что получится при дальнейшем развитии уже вошедших в нулевую версию подсистем и модулей. Её API будет шире, как и покрытие сценариев использования.
На текущем этапе конкретизовать этот список достаточно сложно. Это будет сделано, когда данная деятельность станет более актуальной.