diff --git a/doc/news.txt b/doc/news.txt index 6ff9b2a259..bc51118a7c 100644 --- a/doc/news.txt +++ b/doc/news.txt @@ -4,6 +4,39 @@ =========== +Road Map for 2021 | 2021-01-15 +############################## + +| In 2021, we plan to bring Genode to the Pinephone, advance the framework's +| GPU support, and focus on development workflows. + +During the annual road-map discussion on Genode's public +[https://genode.org/community/mailing-lists - mailing list], +the following hot topics for this year emerged. + +First and most inspiring for many Genode developers, we aspire to have +Genode running on the Pinephone with basic feature-phone functionality by the +end of the year. Since this will involve substantial device-driver-related +developments, the team will take this line of work as an opportunity to +advance the tooling and workflows for carrying out such tasks. This, in turn, +will hopefully ease the on-boarding of new driver developers in the future. + +Closely related to the Pinephone scenario, the project will make optimizations +a top priority this year. The opportunities are plenty, ranging from +micro-optimizations, over API refinements, to architectural changes if +needed. + +Another recurring topic is the request for GPU support, which is required +by many modern workloads such as video conferencing or streaming on mobile +device. Therefore, we will revamp our past developments of GPU multiplexing +on Intel hardware while also starting the investigation of GPUs on ARM-based +devices. + +More information about our review of the past year, this year's focus, and a +rough schedule are presented at our official +[https:/about/road-map - road-map page]. + + Genode OS Framework release 20.11 | 2020-11-27 ############################################## @@ -211,7 +244,7 @@ please consult the Road Map for 2020 | 2020-01-20 ############################## -| In 2019, we will be concerned about dwarfing the barrier of entry into +| In 2020, we will be concerned about dwarfing the barrier of entry into | the Genode world. Following the last year's leitmotif of "bridging worlds", we turn our diff --git a/doc/road_map.txt b/doc/road_map.txt index d0cb007d83..9e01d81da8 100644 --- a/doc/road_map.txt +++ b/doc/road_map.txt @@ -14,121 +14,92 @@ 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 +Review of 2020 ############## -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. +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]. -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. +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. -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. +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. -2020 - Dwarfing the barrier of entry -#################################### +2021 - Optimization and Platform diversity +########################################## -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. +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. -:User friendliness of Sculpt OS: +: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. - 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. +: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. -:Perception of high quality: +: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. - 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. +: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). -: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. +: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. -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 +Milestones for 2021 ################### In the following, we present a rough schedule of the planned work. As usual, @@ -136,64 +107,65 @@ it is not set in stone. If you are interested in a particular line of work, please get in touch. -February - Release 20.02 +February - Release 21.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 +* 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 20.05 +May - Release 21.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 +* 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 20.08 +August - Release 21.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 +* 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 20.11 +November - Release 21.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 +* 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