
                             ========
                             Road Map
                             ========


Herein, we lay out our plans for evolving Genode. Progress in addition to this
planning will very much depend on the degree of community support the project
will receive. The
[http:/about/challenges - Challenges] page collects some of our ideas to
advance Genode in various further directions.

The road map is not fixed. If there is commercial interest of pushing the
Genode technology to a certain direction, we are willing to revisit our plans.


Review of 2015
##############

In the beginning of 2015, we declared four main topics to work on, namely
Genode as general-purpose OS, our custom base-hw kernel platform, thorough
documentation, and the seL4 kernel. It goes without saying that the stability
and performance of the base system is a fundamental requirement for the first
topic.

In mid of 2015, we eventually reached the point where a hand full of
developers started using Genode as their day-to-day OS in the form of the
so-called
[https://github.com/genodelabs/genode/issues/1552 - Turmvilla scenario].
By the end of the year, the performance, stability, and device-driver support
had reached a level that leaves people impressed every time we have the chance
to show off our system. Once people become interested, the Genode Foundations
book - published in Spring - provides a smooth introduction into Genode. The
Turmvilla scenario is currently based on the NOVA kernel. For the future, we
want to use also other kernels, in particular our custom base-hw kernel and
seL4. Thanks to the contribution of
[http://codelabs.ch - Codelabs], base-hw became usable on the 64-bit x86
architecture and on the Muen separation kernel in particular. With our work
on seL4, we reached the point where basic Genode scenarios are executable
on this kernel.

After having passed the point where a few enthusiasts are able to use Genode
as day-to-day OS, we should put the emphasis of 2016 on
ways to make Genode accessible for a wider community.


Big picture for 2016
####################

We identified two possible ways to extend the Genode community.

By community we refer to two groups of people. The first group are
maker-minded people with a strong incentive to build things. By publishing a
series of step-by-step guides that explain how to put Genode components
together in order to create custom system scenarios, we intend to spark
interest of system builders in Genode. Those articles could be accompanied by
screencasts or live-system images.

The second group are certain end users with a strong desire for privacy and
security. We expect this narrow user group to willingly trade the comfort and
features of traditional desktop OSes for the benefits of Genode. We plan to
showcase a system with practical value for this group, for example a
disposable OS like Tails that allows the user to browse the internet via the
Tor network.

In this spirit, the leitmotif for 2016 will be: Let us make Genode accessible
to the world outside the inner circle of us enthusiasts.

On a technical level, this motive implicates the following topics:

* The deployment, management, and configuration of Genode systems, i.e., by
  bringing forward our work on the Nix package manager and by fostering
  dynamic configurability. This direction also reinforces the need to achieve
  binary compatibility between the various base platforms to make the
  distribution of binary packages, reproducible builds, and continuous test
  and integration scalable.

* Accommodation of common desktop use cases like plugging in a USB
  stick to work with the files stored on it. Also disk encryption comes
  into mind.

* Optimization of Genode for the use on a laptop, e.g., addressing
  fan control, power management, suspend/resume, and similar features.

* Identifying ways of how Genode could contribute additional value to
  Xen-based environments like Amazon EC2 and Qubes OS.

* Foster the cross-pollination of the seL4 and Genode communities.
  Genode would allow the seL4 community to move beyond static system
  scenarios.

* As most use cases rely on networking, we acknowledge the need for
  improving Genode's network support such as NAT, the robustness of the
  available TCP/IP stacks and drivers, encryption, and possibly IPv6.

* Genode as distributed system, e.g., a system spread over multiple FPGA-based
  softcore CPUs, over multiple domains of the Muen separation kernel, or a
  local machine and a cloud-service provider.

Assuming that we succeed in drawing the attention of a broader audience
to our project, we should make sure that Genode's API won't undergo
major changes soon after this point. Today, there are still a number of
deficiencies in the current API. We should finalize the renovation of
the Genode API until the mid of 2016. This will also be right the time for
updating the Genode book. Also, the planned step-by-step guides will
be based on the modernized API.


Milestones for 2016
###################

In the following, we present a rough schedule of the planned work. As usual,
it is not set in stone. If you are interested in a particular line of work,
please get in touch.


February - Release 16.02
========================

* RISC-V architecture support
* seL4 version 2.0
* Assignment of USB devices to VirtualBox guests
* API modernization (introduction of new component API, deprecation
  of API legacies)


May - Release 16.05
===================

* VirtualBox on top of the Muen separation kernel
* Update of the Genode Foundations book
* NAT component
* API modernization (removal of API legacies)
* Definition of "packages"


August - Release 16.08
======================

* Cross-kernel binary compatibility
* Interactive system scenarios on top of seL4
* Networking via Tor
* Block encryption
* Build-system support for handling packages


November - Release 16.11
========================

* Genode on top of Xen
* Exploration of Genode as distributed system
* Deployment of packages
* On-target building of packages

