Plans and priorities

It will be impossible to implement everything at once. As in any project, priorities need to be set to determine the order of implementation of its parts and features.

Below are the stages of development proposed for Sivelkiria.

Prototype

The purpose of developing a prototype is to demonstrate the fundamental feasibility of implementation of the described product, as well as to specify the design. As a result, a minimal working model will be created which can be demonstrated to interested parties. It will include the following:

1.     An operating system kernel capable of running modules’ code and transferring calls and data between them.

2.     Support for modules, interfaces, objects and links between objects.

3.     Ability to generate C++ SDK based on the interfaces defined using XML syntax.

4.     Ability to run on Windows and Linux in graphical mode (using a window and graphics abstraction layer based on existing technologies such as Qt).

5.     Ability to run on PC and ARM in console mode with minimal device support.

6.     Object storage using existing file systems.

7.     Minimal implementation of thread management strategies and multitasking.

8.     Simple modules to demonstrate a few basic use cases.

9.     Loading interfaces and modules at the same time with the kernel (no unloading will be supported).

Version zero

Version zero is a minimally functional implementation of the operating system suitable for basic use and for the writing of software. At this stage, overall architecture details will be figured out. Version zero will include the features supported by the prototype as well as the following:

1.     Full-scale module implementation:

  • Kernel support: loading, unloading, prioritizing, etc.
  • The main repository where modules and interfaces are stored; the repository is also used to install software from it.
  • Administrative components responsible for interacting with the repository from the operating system, loading, installing / uninstalling modules, and updating the list of interfaces.

2.     Drivers:

  • A framework for developing device drivers (or using existing ones, if possible).
  • Kernel support.
  • An initial set of device drivers.

3.     A minimal graphics subsystem that provides identical graphics rendering and text rendering on all platforms.

4.     A sound subsystem.

5.     A minimal window subsystem including a minimum set of components and related APIs.

6.     Full support for multithreading and multitasking.

7.     An object-oriented file system.

8.     API and kernel support for non-native module executors to allow execution of all modules:

  • Inside a specific environment (from intermediate code).
  • Inside interpreters (scripting languages).
  • Inside emulators (to run modules built for other platforms).

9.     Support for several programming languages and SDKs for them.

10.  Minimal versions of basic APIs for most common use cases:

  • Image viewing
  • Document editing.
  • Audio and video playback.
  • Web access.
  • Local data storage.
  • Messengers and mail client support.
  • Notifications and service requests.

11.  A minimal set of software covering these use cases.

12. Network protocol to connect Sivelkiria-driven devices, as well as object proxying support.

13.  An installer.

14.  A bootloader.

15.  Administrative tools.

16.  A logging subsystem.

17.  A debug subsystem.

Version one

The first version of Sivelkiria OS will be the result of adapting the existing development and usage experience to real-life conditions. It will resolve the problems identified at the previous stage. It will also include all previously developed modules and subsystems. Its API will be broader and it will cover more usage scenarios.

At the current stage, it is difficult to specify this list any further. It will be revised once activity is underway.