Планы и приоритеты

Очевидно, что полностью реализовать всё задуманное в один момент не получится. Как и в любом проекте, приходится задавать некоторые приоритеты, определяющие очерёдность реализации его частей и функций. Ниже приводятся этапы разработки, выделенные для «Сивелькирии», и их содержание.

Прототип

Целью разработки прототипа являются демонстрация принципиальной возможности реализации описанного продукта, а также уточнение архитектуры. В результате получится минимальная действующая модель, которую можно продемонстрировать заинтересованным лицам. Она будет включать в себя следующее:

  1. Ядро операционной системы, способное запускать код модулей и передавать между ними вызовы и данные;
  2. Поддержку модулей, интерфейсов, объектов и связей между объектами;
  3. Возможность генерации SDK для языка C++ на основе интерфейсов, описанных в виде XML;
  4. Возможность запуска под Windows и Linux в графическом режиме (с использованием слоя абстракции над графической и оконной подсистемами — например, Qt);
  5. Возможность запуска на PC и ARM в консольном режиме с минимально необходимой поддержкой устройств;
  6. Хранение объектов с использованием существующих файловых систем;
  7. Минимальную реализацию стратегии управления потоками и многозадачностью;
  8. Простейшие модули для демонстрации нескольких базовых сценариев использования;
  9. Загрузку интерфейсов и модулей вместе с ядром операционной системы (их выгрузка на данном этапе поддерживаться не будет).

Нулевая версия

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

  1. Полноценная реализация модулей:
    1. Поддержка работы с модулями со стороны ядра: загрузка, выгрузка, управление приоритетами и прочее;
    2. Центральный репозиторий, в котором хранятся модули и интерфейсы. Установка ПО осуществляется из него;
    3. Административные компоненты, отвечающие за взаимодействие с репозиторием со стороны операционной системы, загрузку, установку и удаление модулей и обновление списка интерфейсов.
  2. Драйверы:
    1. Фреймворк для написания драйверов к устройствам (или использования существующих, если это окажется возможным);
    2. Поддержка работы с драйверами со стороны ядра;
    3. Начальный набор драйверов устройств.
  3. Минимальная графическая подсистема, обеспечивающая идентичную отрисовку графики и рендеринг текста на всех платформах;
  4. Подсистема работы со звуком;
  5. Минимальная оконная подсистема. Минимальный набор компонентов и соответствующий API;
  6. Полноценная поддержка многозадачности и многопоточности;
  7. Объектная файловая система;
  8. Интерфейсы и поддержка со стороны операционной системы сред выполнения, отличных от запуска машинного кода, для возможности выполнения модулей:
    1. В специфической среде выполнения (из промежуточного кода);
    2. В интерпретаторе (скриптовые языки);
    3. В эмуляторе (собранных для другой платформы).
  9. Поддержка нескольких языков программирования и SDK для них;
  10. Минимальные версии базовых интерфейсов для наиболее распространённых сценариев использования:
    1. Просмотра изображений;
    2. Редактирования документов;
    3. Воспроизведения аудио и видео;
    4. Просмотра Web-содержимого;
    5. Локального хранения данных;
    6. Поддержки мессенджеров и электронной почты;
    7. Получения уведомлений и запросов на обслуживание.
  11. Минимальный набор ПО, реализующего данные сценарии;
  12. Сетевой протокол для взаимодействия устройств, на которых запущена «Сивелькирия», и поддержка взаимодействия с объектами, существующими на других устройствах;
  13. Инсталлятор;
  14. Загрузчик;
  15. Средства настройки и администрирования;
  16. Подсистема логирования;
  17. Подсистема отладки.

Первая версия

Первая версия ОС «Сивелькирия» будет являться результатом адаптации опыта разработки и эксплуатации к реальным условиям. В ней будут исправлены те проблемы, которые окажутся выявлены на предыдущей стадии. Кроме того, первая версия вберёт в себя всё, что получится при дальнейшем развитии уже вошедших в нулевую версию подсистем и модулей. Её API будет шире, как и покрытие сценариев использования.

На текущем этапе конкретизовать этот список достаточно сложно. Это будет сделано, когда данная деятельность станет более актуальной.