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 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 2019 For the road map 2019, we picked "bridging worlds" as our guiding theme: (1) Lowering the friction when combining existing software with Genode, (2) Fostering interoperability with widely used protocols and APIs, and (3) Making Genode easier to approach and generally more practical. With respect to (1), we identified Genode's custom tooling (build system, run scripts, ports mechanism, depot tools) as a point of friction. They are arguably powerful and flexible but require a lot of up-front learning. This is certainly a burden unacceptable for a casual developer without a black belt in Make and Expect/Tcl. The new Goa tool rearranges the existing tools in a way that puts the concerns of casual developers into focus, allowing for the use of commodity build systems, eliminating Tcl syntax from the equation, running sub-second test cycles, and streamlining the packaging of software. On account of (2), we switched to C++17 by default, fostered the use of Java, updated Qt5, and put POSIX compatibility into the spotlight. We were eventually able to dissolve the need for our custom Unix runtime (Noux) because all features of Noux are covered by our regular libc now. Our biggest step towards (3) is the https://genodians.org website we started in winter 2019, which gives individual members of our community an easy way to present thoughts, projects, and experiences. Complementing Genode's formal documentation, it also conserves practical tips and tricks that were previously not covered in written form. When speaking of "bridging worlds", we should not forget to mention the tremendous effort to bring Sculpt-OS-like workloads to the 64-bit ARM world. Thanks to the added support for multi-core AARCH64, hardware-based virtualization, and network/USB/graphics drivers for the i.MX8 SoC, the flexibility of Sculpt OS will eventually become available on PC hardware and ARM-based devices alike. Over the course of 2019, we admittedly skipped a few topics originally mentioned on our road map. In particular, the user-visible side of Sculpt OS received less attention than originally envisioned. We also deferred several ideas we had in mind about reworking our GUI stack. Instead, we expanded our work in the areas of storage (block-level APIs, test infrastructure, block encryption) and input processing. This shift of focus is mostly attributed to the priorities of Genode Labs' customers who fund our work. 2020 - Dwarfing the barrier of entry Genode as a technology is there. For more than one decade, we walked unfathomed territory, fought with countless deep rabbit holes, took risky decisions, tracked back, explored design spaces, developed taste and distaste, pruned technical debt, and eventually found formulas of success. Today, there are no (fundamental) unsolved questions. All the puzzle pieces are in place. There could be no better proof than our daily use of Sculpt OS. The time is right to make Genode palatable for a wider circle. We identified four actionable topics to achieve that. User friendliness of Sculpt OS Until now, Sculpt OS is not exactly friendly towards users who are unfamiliar with the Unix command-line tools. Since Sculpt is not Unix based, this is a bit paradoxical. 2020 will give Sculpt OS a friendlier and discoverable user experience. In this context, we will inevitably put our attention to Genode's GUI stack. Perception of high quality Compared to commodity operating systems who stood the test of time, Genode is a young and largely unproven technology. It understandably calls for skepticism. All the more we must leave no doubts about our high quality standards. There must be no room for uncertainty. Hence, during 2020, we will intensify the consolidation and optimization of the framework and its API, and talk about it. Enjoyable tooling Genode's success at large will depend on developers. As of today, software development for Genode requires a huge up-front learning curve. This is fine for people who are already convinced of Genode. But it unacceptable for casual developers who want to get their toes wet. We should aim for tooling that allows new developers to keep up their flow and beloved tools. The recently introduced Goa tooling is our first take in this respect. It is certainly too early to call Goa a success. In order to find out if we are on the right track, we want to expose Goa to as many problems as possible, primarily by the means of porting software. Also, things like IDE usage or adapters for a variety of build systems will certainly move into focus in 2020. Convincing use cases Use cases can give exemplary proof of the fitness of Genode. We already took a few baby steps to extend the range of documented use cases beyond Sculpt OS last year. The boot2java scenenario comes in mind. 2020 will hopefully see several more illustrations of Genode's versatility. Apart from this overall theme, we plan to continue our commitment to the NXP i.MX SoC family, revisit Genode's low-latency audio support, and extend the cultivation of Ada/SPARK within (and on top of) Genode. Milestones for 2020 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 20.02 Consolidation: removal of the Noux runtime

Library version of the init component

Updated audio drivers

Sculpt 64-bit ARM (i.MX8) Revised administrative user interface System image without Unix tools

May - Release 20.05 Updated "Genode Foundations" book

Consolidation Block-level components (update to Genode's modern block APIs) ARM device drivers (introducing the notion of a platform driver) Improved STL support (e.g., threading and mutexes) Continuous POSIX-compliance testing Systematic network-stack stress and performance tests

Desktop: panel and virtual desktops

Use case: Genode-based network router

Goa: broadened support for 3rd-party build systems

Native tool chain, including Git

Sculpt Interactive device management Keyboard-controlled administration

Support for BSPs maintained outside of Genode's mainline repository August - Release 20.08 Revisited GUI-related framework interfaces

Extended tooling for performance monitoring

Goa: Qt development workflow

Desktop Native mail client Native web browser

Sculpt Configurable CPU resources On-screen documentation Block encryption via our consistent block encrypter implemented in Ada/SPARK

USB audio

Initial version of a kernel implemented in Ada/SPARK November - Release 20.11 Consolidation of capability-space management across kernels

CPU-load balancing

Hardware-accelerated graphics on i.MX8 (experimental)

Reworked audio stack (interfaces, mixing)

Sculpt: component lifetime management, shutdown protocol

VFS plugins for lwext4 and FUSE-based file systems