
                             ========
                             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 2017
##############

The technical topics of 2017 ranged from hardware-accelerated graphics, over
UEFI, greatly improved seL4 support, user-level networking, file-system
infrastructure, to an consolidated framework API. However, one topic stood out
the most, which is the practical use of Genode as day-to-day OS.

Whereas the so-called "Turmvilla" system scenario enabled a few enthusiasts to
work on a Genode-based system since mid of 2015, the scenario was quite rigid
and required significant manual labour for any customization. Although it was
not really inviting for potential users, it illustrated well that all the
basic building blocks - in particular the driver stacks - were in place. But
it would have been be quite a stretch to call Turmvilla a general-purpose OS
at that point. The year 2017 introduced two pivotal features that allowed us to
break free from the limitations of Turmvilla-like scenarios, namely the new
[https://genode.org/documentation/release-notes/17.05#Package_management - package-management concept]
and the ability to
[https://genode.org/documentation/release-notes/17.02#Dynamically_reconfigurable_init_component - compose and modify subsystems dynamically].

Inspired by these new features, a new system scenario called "Sculpt" emerged
in Autumn 2017. The combination of Genode's recursive architecture with the
dynamic reconfigurability of the init component allows the user to
interactively shape the running Genode system including any subsystem or even
configurations of individual components. The system structure is always at the
user's fingertips and can by modified instantly using a text editor. At the
same time, the new package management greatly helps to keep the complexity at
a manageable level. Whereas Turmvilla users rarely updated their installation
out of hesitance to break their work environment, Sculpt is routinely updated
on a weekly basis. The switch of the entire Genode-Labs team to Genode full
time by the end of year was certainly our biggest milestone so far.


2018 - The year of Sculpt
#########################

The "Turmvilla" era lies behind us. So let the "Sculpt" era begin!

Having used Sculpt over the past few months, we feel confident to make the
system scenario available to a larger audience. In 2018, we will take four
steps:

# Sculpt for Early Adopters (EA)

  The current version of Sculpt accompanied with plain-text documentation
  that explains the concept and use. It is intended for people who are
  already familiar with Genode, in particular users that experimented with
  Turmvilla-like scenarios in the past. Sculpt EA expects basic Vim skills
  from the user.

# Sculpt for The Curious (TC)

  A polished version of Sculpt that is more welcoming to the user and
  accompanied with example subsystems that loosely resemble a traditional
  notion of an operating system (like basic menus and window borders).
  There will be a ready-to-use ISO image for Sculpt TC. So users won't need
  to be familiar with Genode's source code and build system. As with Sculpt
  EA, Sculpt TC will still rely on the user's ability to use Vim.

# Sculpt by Visual Composition (VC)

  Whereas the earlier versions rely on text editing for sculpting the system,
  Sculpt VC will feature an interactive graphical user interface, which will
  hopefully make the system tangible for users who live outside the terminal.

# Sculpt as a Community Experience (CE)

  Sculpt CE will allow anyone to play the role of a component provider.
  Each user should be able to pick individual components or entire component
  compositions provided by others while maintaining complete control over the
  system.

In addition to working on Sculpt as the overall theme of the year, we will
focus on the following topics:

:Gentle transition from NOVA to our custom kernel and seL4:

  NOVA used to be our kernel of choice on x86 platforms. However, since the
  kernel is no longer actively developed, we had to take over the
  responsibility to maintain it. Whereas we feel confident in developing the
  kernel in an evolutionary way, the kernel has long-standing architectural
  limitations (i.e. kernel-memory management) that would require invasive
  changes. Instead of ramping up our engagement with NOVA, we'd like to focus
  on our custom kernel (base-hw) and the seL4 kernel. In 2018, we set out to
  enable Sculpt on base-hw. This involves the support for SMP, VT-x, and VT-d
  on x86.

:Freescale i.MX:

  Based on the feedback from our community, Freescale i.MX support is of
  great interest, specifically i.MX6. Hence, we plan to improve the driver
  support for this SoC.

:seL4:

  We will try to apply all improvements of Genode on seL4 whenever feasible.
  It also goes without saying that we will track seL4's upstream development.

:Software quality and resilience:

  The modernized framework API introduced last year is an important stepping
  stone. But there is much more we can (and should) do, I.e., learning from
  the high-integrity computing community (e.g., implementing critical
  components in SPARK), leveling-up the scope and intensity of our automated
  tests, facilitating static code analysis, and employing software-hardening
  techniques. Of course, this scope goes far beyond the time frame of one
  year. The immediate prioritization of these topics will largely depend on
  the focus of commercial users funding the work.

:System monitoring, tracing, profiling:

  The interactive use of Sculpt along with the prospects enabled by Genode's
  GPU support motivate us to optimize Genode towards low-latency multimedia
  applications. We will ultimately need to gain a deep understanding on
  inter-component interactions, in particular along time-critical data paths.
  Therefore, we plan to improve the tooling and cultivate the use of our
  existing but underused tracing support.

:Java:

  By the end of 2018, we want to enable Genode to leverage the ecosystem
  around Java, which is - according to the TIOBE index - the most popular
  programming language.


Milestones for 2018
###################

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 18.02
========================

* Sculpt for Early Adopters (EA)
* Dynamic on-target package installation and deployment
* i.MX6 networking


May - Release 18.05
===================

* Sculpt for The Curious (TC)
* Update of the Genode Foundations book
* Consistent use of the depot tools for automated tests
* Qt5-based applications based on packages
* SMP support for the base-hw kernel on x86


August - Release 18.08
======================

* Sculpt by Visual Composition (VC)
* Ability to (cleanly) restart device drivers
* Updated PC hardware support
* i.MX6 USB
* Multi-component user mail agent
* IOMMU support for the base-hw kernel on x86


November - Release 18.11
========================

* Sculpt as a Community Experience (CE)
* Automated tests hosted on top of Sculpt
* Sculpt-like scenario for network appliances
* Virtualization support for the base-hw kernel on x86

