======== 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 2020 ############## The overarching theme of our road map for 2020 was "Dwarfing the barrier of entry", which expressed the ambition to reach a wider audience. On that account, we identified four promising directions: First, making Sculpt OS palatable for a wider circle. Second, fostering the public perception of the high quality of Genode to reinforce the confidence of people who are sceptical towards novel operating-system technology. Third, lowering the barrier of entry by providing frictionless tooling. And fourth, publicly presenting use cases that prove the fitness and flexibility of Genode. These directions certainly did a good job of motivating the working topics of last year's four releases [https://genode.org/documentation/release-notes/20.02 - 20.02], [https://genode.org/documentation/release-notes/20.05 - 20.05], [https://genode.org/documentation/release-notes/20.08 - 20.08], and [https://genode.org/documentation/release-notes/20.11 - 20.11]. The UI improvements of Sculpt OS in version 20.02 largely eliminated the need to use the command line as presented [https://www.youtube.com/watch?v=vmgWgzeKAjU - here]. The second direction - software quality - motivated the steady improvements of our POSIX runtime, ultimately enabling highly sophisticated workloads like the Chromium web engine on Genode. Regarding our stated commitment to 64-bit ARM hardware, in particular supporting the NXP i.MX8 SoC, we covered 64-bit multi-core virtualization, HDMI, touch input, OLED, networking, LTE, USB, clock and power management, VirtIO, up to running Sculpt OS on this platform. Granted, Genode's audience hasn't increased by a large margin as a direct result of these efforts. But as illustrated by the fruitful road-map discussion for 2021 on the [https://genode.org/community/mailing-lists - mailing list], our community is more engaged and enthusiastic than ever before. 2021 - Optimization and Platform diversity ########################################## For the initial conquering of 64-bit ARM territory, restraining our focus to one particular SoC - namely NXP i.MX8 - was a healthy approach. Now it is the right time to optimize and to branch out the development to further platforms. The following key aspects of our road map for 2021 reflect that. :Pinephone: By the end of the year, we want be able to use Genode on the [https://pine64.com/product-category/pinephone/ - Pinephone] as a feature phone, covering basic web-browsing needs, placing calls, and SMS. :Linux-device-driver environment re-imagined: We are convinced that we have to dramatically reduce the engineering effort needed to port device drivers from the Linux kernel to Genode. With many years of driver-porting experience under our belts, we plan to condense the lessons learned in the form of new tooling and documentation. This, in turn, will hopefully pave the ground for more and more developers contributing to Genode's device-driver coverage in the future. :Developer experience: Speaking of new developers, we see Genode's existing tool set as a barrier because it requires a rather steep learning curve. Hence, this year, we will have a fresh take on tooling and workflows. The starting point will be the experimental [https://github.com/nfeske/goa - Goa] tool, which in principle allows developers to use familiar build systems for Genode development. We plan to extend Goa to cover more build systems, and shape the tool towards system-integration tasks and quick compile-test cycles targeting embedded devices. :Optimization: Motivated by usage scenarios like the Pinephone, we are eager to tap into plenty of opportunities for optimization. Based on data gathered by improved system tracing, we consider interface refinements to improve the batching of I/O (file-system access, networking), micro-optimizations of hot code paths (like TLS lookup, parsers, and allocators), as well as structural changes (like the consolidation of low-level services). :GPU support: Distantly related to optimization, GPU support is an increasingly requested feature. We already [https://genode.org/documentation/release-notes/17.08#Hardware-accelerated_graphics_for_Intel_Gen-8_GPUs - wetted our toes] in the past. But GPU support has not yet become routinely supported in system scenarios like Sculpt OS. In 2021, we want to change that, making GPU support a feature that can be relied on. We will primarily address Intel graphics first but also explore GPUs on ARM-based devices. Milestones for 2021 ################### 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 21.02 ======================== * Pluggable device drivers (NIC, WLAN, framebuffer, input) * VirtualBox 6 * Sculpt: basic UI for the consistent block encrypter (CBE) * 64-bit ARM * VirtIO block-device support for virtual machines * Base platform support for the Pine A64 board (kernel base framework) May - Release 21.05 =================== * Annual documentation update, including the "Genode Foundations" book * GPU support * MESA update * Experiments on ARM (e.g., Vivante on i.MX8, or Mali-400 on A64) * Sculpt OS on Pine A64 (USB, input, framebuffer, SD-card, networking) * 64-bit ARM * Platform-driver consolidation between ARM and x86 * PCI-express support for MNT Reform (i.MX8) * Tool-chain update (e.g., switching to hard-float on ARM) * Modernized client-side NIC and uplink APIs * Goa * Broadened architecture support and testing workflow * API projects * Inter-project dependencies August - Release 21.08 ====================== * Linux DDE re-imagined * Improved tooling * Exploring Goa-based development workflow * GPU support * GPU multiplexer for Intel Gen9 graphics * Harmonization of GPU driver with Intel framebuffer driver * Initial version of a custom kernel (Spunky) implemented in Ada/SPARK * System-level tracing infrastructure for guiding and validating optimizations * Pinephone * Touchscreen and display * Mobile web browser * Goa * CMake-based Qt5 applications * QML-based applications November - Release 21.11 ======================== * Pinephone * Mobile data connectivity (LTE) * Phone calls (audio) * SMS * seL4 * Update to current kernel version, MCS scheduling * Combining CAmkES with Genode * SMMU (I/O-MMU for ARM) support for our custom (base-hw) kernel * Multi-monitor support