======== 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 [https://genode.org/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 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 [https://genode.org/documentation/release-notes/19.11#New_tooling_for_bridging_existing_build_systems_with_Genode - 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 [https://genode.org/documentation/release-notes/19.05#Broadened_CPU_architecture_support_and_updated_tool_chain - switched to C++17] by default, fostered the use of [https://genodians.org/ssumpf/2019-02-27-java-19-02 - Java], updated Qt5, and put [https://genode.org/documentation/release-notes/19.11#C_runtime_with_improved_POSIX_compatibility - 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 [https://genode.org/documentation/release-notes/19.08#64-bit_ARM_and_NXP_i.MX8 - multi-core AARCH64], hardware-based [https://genode.org/documentation/release-notes/19.11#Virtualization_of_64-bit_ARM_platforms - 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, [https://genode.org/documentation/release-notes/19.11#Preliminary_block-device_encrypter - block encryption]) and [https://genode.org/documentation/release-notes/19.08#Flexible_keyboard_layouts - 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 [https://genodians.org/nfeske/2019-11-25-goa - 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 [https://genode.org/documentation/release-notes/19.11#Preliminary_block-device_encrypter - 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