Road map for 2021

This commit is contained in:
Norman Feske
2021-01-15 14:12:18 +01:00
parent d0ac8a6036
commit 5905e0a4a0
2 changed files with 153 additions and 148 deletions

View File

@@ -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 Genode OS Framework release 20.11 | 2020-11-27
############################################## ##############################################
@@ -211,7 +244,7 @@ please consult the
Road Map for 2020 | 2020-01-20 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. | the Genode world.
Following the last year's leitmotif of "bridging worlds", we turn our Following the last year's leitmotif of "bridging worlds", we turn our

View File

@@ -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. 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: The overarching theme of our road map for 2020 was "Dwarfing the barrier of
(1) Lowering the friction when combining existing software with Genode, entry", which expressed the ambition to reach a wider audience. On that
(2) Fostering interoperability with widely used protocols and APIs, and account, we identified four promising directions: First, making Sculpt OS
(3) Making Genode easier to approach and generally more practical. 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 The UI improvements of Sculpt OS in version 20.02 largely eliminated the need
system, run scripts, ports mechanism, depot tools) as a point of to use the command line as presented
friction. They are arguably powerful and flexible but require a lot of [https://www.youtube.com/watch?v=vmgWgzeKAjU - here].
up-front learning. This is certainly a burden unacceptable for a casual The second direction - software quality - motivated the steady improvements of
developer without a black belt in Make and Expect/Tcl. The new our POSIX runtime, ultimately enabling highly sophisticated workloads like the
[https://genode.org/documentation/release-notes/19.11#New_tooling_for_bridging_existing_build_systems_with_Genode - Goa] Chromium web engine on Genode. Regarding our stated commitment to 64-bit ARM
tool rearranges the existing tools in a way that puts the concerns of casual hardware, in particular supporting the NXP i.MX8 SoC, we covered 64-bit
developers into focus, allowing for the use of commodity build systems, multi-core virtualization, HDMI, touch input, OLED, networking, LTE, USB,
eliminating Tcl syntax from the equation, running sub-second test cycles, and clock and power management, VirtIO, up to running Sculpt OS on this platform.
streamlining the packaging of software.
On account of (2), we Granted, Genode's audience hasn't increased by a large margin as a direct
[https://genode.org/documentation/release-notes/19.05#Broadened_CPU_architecture_support_and_updated_tool_chain - switched to C++17] result of these efforts. But as illustrated by the fruitful road-map
by default, fostered the use of discussion for 2021 on the
[https://genodians.org/ssumpf/2019-02-27-java-19-02 - Java], [https://genode.org/community/mailing-lists - mailing list],
updated Qt5, and put our community is more engaged and enthusiastic than ever before.
[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 2021 - Optimization and Platform diversity
#################################### ##########################################
Genode as a technology is there. For more than one decade, we walked unfathomed For the initial conquering of 64-bit ARM territory, restraining our focus to
territory, fought with countless deep rabbit holes, took risky decisions, one particular SoC - namely NXP i.MX8 - was a healthy approach. Now it is the
tracked back, explored design spaces, developed taste and distaste, pruned right time to optimize and to branch out the development to further
technical debt, and eventually found formulas of success. Today, there are no platforms. The following key aspects of our road map for 2021 reflect that.
(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: :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 :Linux-device-driver environment re-imagined:
unfamiliar with the Unix command-line tools. Since Sculpt is not Unix We are convinced that we have to dramatically reduce the engineering
based, this is a bit paradoxical. 2020 will give Sculpt OS a friendlier effort needed to port device drivers from the Linux kernel to Genode. With
and discoverable user experience. In this context, we will inevitably many years of driver-porting experience under our belts, we plan to condense
put our attention to Genode's GUI stack. 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, :Optimization:
Genode is a young and largely unproven technology. It understandably calls Motivated by usage scenarios like the Pinephone, we are eager to tap into
for skepticism. All the more we must leave no doubts about our high plenty of opportunities for optimization. Based on data gathered by improved
quality standards. There must be no room for uncertainty. Hence, during system tracing, we consider interface refinements to improve the batching of
2020, we will intensify the consolidation and optimization of the framework I/O (file-system access, networking), micro-optimizations of hot code paths
and its API, and talk about it. (like TLS lookup, parsers, and allocators), as well as structural changes
(like the consolidation of low-level services).
:Enjoyable tooling: :GPU support:
Distantly related to optimization, GPU support is an increasingly requested
Genode's success at large will depend on developers. As of today, software feature. We already
development for Genode requires a huge up-front learning curve. This is [https://genode.org/documentation/release-notes/17.08#Hardware-accelerated_graphics_for_Intel_Gen-8_GPUs - wetted our toes]
fine for people who are already convinced of Genode. But it unacceptable in the past. But GPU support has not yet become routinely supported in
for casual developers who want to get their toes wet. We should aim for system scenarios like Sculpt OS. In 2021, we want to change that, making GPU
tooling that allows new developers to keep up their flow and beloved support a feature that can be relied on. We will primarily address Intel
tools. The recently introduced [https://genodians.org/nfeske/2019-11-25-goa - Goa] graphics first but also explore GPUs on ARM-based devices.
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 Milestones for 2021
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, 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. please get in touch.
February - Release 20.02 February - Release 21.02
======================== ========================
* Consolidation: removal of the Noux runtime * Pluggable device drivers (NIC, WLAN, framebuffer, input)
* Library version of the init component * VirtualBox 6
* Updated audio drivers * Sculpt: basic UI for the consistent block encrypter (CBE)
* Sculpt * 64-bit ARM
* 64-bit ARM (i.MX8) * VirtIO block-device support for virtual machines
* Revised administrative user interface * Base platform support for the Pine A64 board (kernel base framework)
* System image without Unix tools
May - Release 20.05 May - Release 21.05
=================== ===================
* Updated "Genode Foundations" book * Annual documentation update, including the "Genode Foundations" book
* Consolidation * GPU support
* Block-level components (update to Genode's modern block APIs) * MESA update
* ARM device drivers (introducing the notion of a platform driver) * Experiments on ARM (e.g., Vivante on i.MX8, or Mali-400 on A64)
* Improved STL support (e.g., threading and mutexes) * Sculpt OS on Pine A64 (USB, input, framebuffer, SD-card, networking)
* Continuous POSIX-compliance testing * 64-bit ARM
* Systematic network-stack stress and performance tests * Platform-driver consolidation between ARM and x86
* Desktop: panel and virtual desktops * PCI-express support for MNT Reform (i.MX8)
* Use case: Genode-based network router * Tool-chain update (e.g., switching to hard-float on ARM)
* Goa: broadened support for 3rd-party build systems * Modernized client-side NIC and uplink APIs
* Native tool chain, including Git * Goa
* Sculpt * Broadened architecture support and testing workflow
* Interactive device management * API projects
* Keyboard-controlled administration * Inter-project dependencies
* Support for BSPs maintained outside of Genode's mainline repository
August - Release 20.08 August - Release 21.08
====================== ======================
* Revisited GUI-related framework interfaces * Linux DDE re-imagined
* Extended tooling for performance monitoring * Improved tooling
* Goa: Qt development workflow * Exploring Goa-based development workflow
* Desktop * GPU support
* Native mail client * GPU multiplexer for Intel Gen9 graphics
* Native web browser * Harmonization of GPU driver with Intel framebuffer driver
* Sculpt * Initial version of a custom kernel (Spunky) implemented in Ada/SPARK
* Configurable CPU resources * System-level tracing infrastructure for guiding and validating optimizations
* On-screen documentation * Pinephone
* Block encryption via our * Touchscreen and display
[https://genode.org/documentation/release-notes/19.11#Preliminary_block-device_encrypter - consistent block encrypter] * Mobile web browser
implemented in Ada/SPARK * Goa
* USB audio * CMake-based Qt5 applications
* Initial version of a kernel implemented in Ada/SPARK * QML-based applications
November - Release 20.11 November - Release 21.11
======================== ========================
* Consolidation of capability-space management across kernels * Pinephone
* CPU-load balancing * Mobile data connectivity (LTE)
* Hardware-accelerated graphics on i.MX8 (experimental) * Phone calls (audio)
* Reworked audio stack (interfaces, mixing) * SMS
* Sculpt: component lifetime management, shutdown protocol * seL4
* VFS plugins for lwext4 and FUSE-based file systems * 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