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

Sculpt is our take on creating a Genode-based general-purpose operating
system. When we declared 2018 as Genode's Year of Sculpt one year ago, our
vision of how Sculpt OS would shape up was still vague. We were convinced that
we had - functionality-wise - all building blocks of a general-purpose OS in
place. But it was rather unclear how to best put them together to attain a
practical system. The unconquered design space seemed vast, which was both
exciting but also - at times - a bit paralyzing.

The Year of Sculpt was more than anything a design-space exploration, not
an up-front planned activity. The process was driven by intensive
brainstorming, experimentation, and the continuous practical evaluation
through the day-to-day use of the system by its developers. For us, this ride
was certainly the most rewarding period in Genode's history so far. Now, when
looking at the result, we are proud about what we have achieved together.
Whenever having the chance to showing off Sculpt running on our laptops,
the system doesn't fail to impress.

Unsurprisingly, many topics of the past year had a direct connection to
Sculpt, e.g., the NIC router, the huge device-driver efforts, the GUI-stack
improvements, our custom microcode update mechanism, the software packaging
and deployment, and the work on the file-system and networking stacks.

The bottom line of the Year of Sculpt is that Sculpt OS has become a
surprisingly versatile and robust system. It can be deployed in a few seconds
by booting from USB, runs as day-to-day OS on almost all of our laptops, its
mechanisms for installing and updating software from packages have become a
second nature, and it continues to inspire us to explore new application
areas. Even outside of Genode Labs, there is a small and enthusiastic user
base.

Besides Sculpt, we set forth a number of other goals one year ago.

:The transition from NOVA to our custom kernel and seL4: is ongoing but
  the topic received less attention than originally planned. This has
  two reasons. First, Alexander Boettcher's excellent maintenance and gradual
  improvement of NOVA keeps us hooked. Over the past year, there has been not
  much incentive of actual Sculpt users to move away from NOVA. Second, there
  is renewed interest in NOVA beyond our use of the kernel. Most specifically,
  we started joining forces with
  [https://cyberus-technology.de - Cyberus Technology] to improve NOVA
  together. That's fantastic!

  This development notwithstanding, we still follow our ambition to bring the
  support for the other kernels like seL4 on par with NOVA to give Genode
  users the ultimate choice.
  Speaking of seL4, throughout the year, we have continuously adapted Genode
  to the kernel's upstream development and enjoy the informal collaboration
  with seL4 developer community. That said, the seL4 version of Genode still
  remains a side activity with no commercial backing.

:NXP i.MX: support has become much better, particularly with respect to
  network support and performance. Our ongoing commitment to the i.MX
  platform is also fueled by privacy-advocating projects like the Librem
  phone that are based on the same SoC.

:Software quality and resilience: ultimately became the title story of the
  [https://genode.org/documentation/release-notes/18.11#Raising_the_bar_of_quality_assurance - release 18.11].
  We greatly intensified the amount and quality of testing, explored static
  code analysis, and vastly scaled up the complexity of workloads carried
  by Genode.

:System monitoring, tracing, profiling: remains a somewhat underdeveloped area
  of Genode. As a step in the right direction, we introduced a simple
  trace-logging tool. Also, Sculpt's introspection features like the ability
  to inspect the runtime's state live on the machine make Genode's behavior
  easier to capture and to understand. But that said, the use of these
  features remains a black art mastered only by a few.

:Java: has found its way into Genode via our port of OpenJDK. Details such as
  the enabling of the JIT engine on ARM took much more effort than anticipated.
  We are happy to report that Tomcat works fine. But at the current state, it
  is still too early to advertise Java as a stable feature.


2019 - Bridging Worlds
######################

We dedicated the year 2018 to prove that Genode scales to general-purpose
computing. [https://genode.org/download/sculpt - Sculpt OS] leaves no doubt
about that. The logical next step is to make Sculpt OS relevant and appealing
for a broader community.
During our public road-map
[https://lists.genode.org/pipermail/users/2018-December/006517.html - discussion]
on our mailing list, we identified three ways towards that goal:

# In order to capture the interest of new Genode users, we have to
  put *emphasis on the practical use* of Genode, not on its technical prowess.
  With practical use, we refer to both desktop computing and headless
  scenarios like network appliances and servers. Over the course of 2019,
  we plan to establish (variations of) Sculpt as an attractive foundation for
  those application areas, and advance Genode's protocol stacks (storage and
  encryption come in mind) and hardware support (e.g., ARM 64-bit) accordingly.

  This will go hand in hand with making Genode easier to discover and to use,
  describing use cases at a digestible level of detail, and fostering the
  sense of one community that includes both users and developers.

# Since an operating system is only valuable with applications, we have
  to make the *porting of existing software* and the use of popular
  *programming languages* a frictionless experience. Besides supporting the
  reuse of existing software, we should also cultivate the "Genode way" as
  an option for designing native applications. Such applications can
  leverage the unique capabilities of the framework, in particular the
  sandboxing of code at a very fine granularity and the low footprint of raw
  Genode components.

# Because an operating system does not exist in isolation, we must foster
  Genode's *interoperability* with other systems and applications by speaking
  widely used protocols and supporting universally expected
  software-integration features.


Milestones for 2019
###################

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

* OpenJDK with JIT on ARM and x86
* Sculpt with support for online package discovery
* Showcase of a Genode-based web appliance
* Showcase of a multi-port network appliance


May - Release 19.05
===================

* Updated "Genode Foundations" book
* Tool-chain update and SDK (C++-17, enabling O3 by default, considering GDC)
* Headless Sculpt
  * Pluggable network drivers
  * Native support for Let's Encrypt certificates
* Revisited GUI-related framework interfaces
* Sculpt
  * Improved interactive system composition
  * Passphrase handling
  * Clipboard support
* Kernel-agnostic virtual-machine monitors
* ARM 64-bit


August - Release 19.08
======================

* Interactive tracing tool
* Virtualization support for the base-hw kernel on x86
* Library version of the init component
* Sculpt
  * Fine-grained USB-device policies
  * Interactive depot manager (ability to add/remove software providers)
  * Configuration of CPU affinities and scheduling priorities
  * Audio
* Showcase of a Sculpt-based network router
* VM-based desktop applications (enhanced VM integration features)
* Updated Qt5
* Consolidation of the Noux runtime (performance)


November - Release 19.11
========================

* Building Genode packages directly on Sculpt
* VNC server support
* Sculpt
  * On-target debugging of components
  * Shutdown protocol
* Block-level encrypted storage
* Drag-and-drop protocol

