Road map for 2022

This commit is contained in:
Norman Feske 2022-01-18 16:03:09 +01:00 committed by Christian Helmuth
parent f16c1b5ea8
commit 388a29b299
2 changed files with 121 additions and 122 deletions

View File

@ -4,6 +4,35 @@
=========== ===========
Road Map for 2022 | 2022-01-18
##############################
| Our plans for 2022 envision the use of Genode for advanced mobile
| use cases such as video chat.
Following Genode's major technical breakthroughs in the areas of reusing Linux
drivers, hardware-accelerated graphics, and the native execution of Chromium
during 2021, we will pursue _mobile usability_ as overarching theme in 2022.
Specifically, we aspire the routine use of Genode on the Pinephone as a
platform for video chat, using WireGuard to protect the communications.
This vision motivates a large variety of challenging technical topics.
To name a few, we have to squeeze good performance out of the
resource-constrained Pinephone hardware, focus on UI latency and the quality
of service of audio streaming, come up with a somewhat usable touch-based
user interface, and get to the guts of power management.
Aside this guiding theme, we put a broad update of our PC drivers on our
agenda so that Sculpt OS remains a suitable basis for our day-to-day
computing needs on recent generations of Intel hardware.
As an additional line of development, we are excited to intensify the
combination of Genode with reconfigurable hardware.
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 21.11 | 2021-11-30 Genode OS Framework release 21.11 | 2021-11-30
############################################## ##############################################

View File

@ -7,99 +7,89 @@
Herein, we lay out our plans for evolving Genode. Progress in addition to this 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 planning will very much depend on the degree of community support the project
will receive. The will receive. The
[https://genode.org/about/challenges - Challenges] page collects some of our ideas to [https://genode.org/about/challenges - Challenges] page collects some of our
advance Genode in various further directions. ideas to advance Genode in various further directions.
The road map is not fixed. If there is commercial interest of pushing the 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 2020 Review of 2021
############## ##############
The overarching theme of our road map for 2020 was "Dwarfing the barrier of Genode's year 2021 was defined by three extremely challenging lines of work.
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 First, we conquered the territory of GPU support that was ridden with
to use the command line as presented uncertainties and seemed almost impenetrable when we started. But at the end
[https://www.youtube.com/watch?v=vmgWgzeKAjU - here]. of the year, our custom Intel-GPU multiplexer has landed in Sculpt OS like it
The second direction - software quality - motivated the steady improvements of always belonged there. In tandem with the Intel-GPU work, we explored the
our POSIX runtime, ultimately enabling highly sophisticated workloads like the Vivante GPU as a representative of an ARM platform. The work required a deep
Chromium web engine on Genode. Regarding our stated commitment to 64-bit ARM dive into the respective GPU architectures and the Mesa software stack. It
hardware, in particular supporting the NXP i.MX8 SoC, we covered 64-bit eventually led us to the design of Genode's device-agnostic GPU interfaces.
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 The second line of work was concerned with the reuse of Linux drivers as
result of these efforts. But as illustrated by the fruitful road-map Genode components. Over the year, the puzzle pieces of our new Linux
discussion for 2021 on the device-driver environment come together, replacing former confusion and chaos
[https://genode.org/community/mailing-lists - mailing list], with knowledge and order, ultimately uncovering the treasure of Linux drivers
our community is more engaged and enthusiastic than ever before. for Genode with very little friction. On the way, we created new methodology
and tooling, as well as extensive documentation in the form of the "Genode
Platforms" document. Thanks to the new drivers ported from the Linux kernel,
we were able to witness interactive Genode scenarios becoming alive on the
Pinephone by the end of the year.
The third major topic was the growing sophistication of Genode-native
workloads, with the media features of the Chromium-based browser on 64-bit ARM
being the most impressive example. Apart from the apparent functional benefits
for Genode and Sculpt OS, this is the long outstanding validation of some bold
design decisions we took years ago, in particular the role and architecture of
the VFS and its interplay with the libc.
When reviewing the road map for 2021, some items remained uncovered. In
particular the seL4-related topics became stale. At the end of 2020 - when we
assembled the road map for the past year - there was a tangible prospect of
pursuing this topic as funded work. However, those plans were repeatedly
deferred and remained uncertain. Also, there are some items that have seen
healthy doses of progress - like the topics related to Ada/SPARK or Goa - but
received less attention than anticipated. On the other hand, the four releases
([https://genode.org/documentation/release-notes/21.02 - 21.02],
[https://genode.org/documentation/release-notes/21.05 - 21.05],
[https://genode.org/documentation/release-notes/21.08 - 21.08],
[https://genode.org/documentation/release-notes/21.11 - 21.11])
of 2021 covered quite a few topics not advertised at the road
map, e.g., webcam support, Xilinx Zynq, or RISC-V.
It is fair to say that the level of technical risks we took in 2021 had been
unprecedented in Genode's development history. We are more than proud of the
outcome, which will hopefully propel Genode to new heights in 2022.
2021 - Optimization and Platform diversity 2022 - Mobile Usability
########################################## #######################
For the initial conquering of 64-bit ARM territory, restraining our focus to After having enabled the first interactive Genode scenarios on the Pinephone
one particular SoC - namely NXP i.MX8 - was a healthy approach. Now it is the last year, we plan to take Genode on the Pinephone to a level where we can
right time to optimize and to branch out the development to further routinely use it for advanced applications, in particular video chat. This
platforms. The following key aspects of our road map for 2021 reflect that. vision confronts us with a multitude of hard technical nuts to crack such as
power efficiency, UI latency, quality-of-service of audio processing, drivers
for multi-media devices, WebRTC performance, and usability. This grand theme
will not only address the Pinephone specifically. The efficiency gains will
benefit all Genode use cases large and small.
:Pinephone: Our theme of the Genode-based video chat on the Pinephone fuels several
By the end of the year, we want be able to use Genode on the ambitions in closely related areas. In particular, we aspire using WireGuard
[https://pine64.com/product-category/pinephone/ - Pinephone] to secure private communication, and experiment with the operation of
as a feature phone, covering basic web-browsing needs, placing calls, and hardware-based trust anchors as the basis for encrypted storage and
SMS. communication.
:Linux-device-driver environment re-imagined: Besides the Pinephone, we will steadily nurture the quality and scope of
We are convinced that we have to dramatically reduce the engineering driver support on PC hardware, which remains the primary platform for the
effort needed to port device drivers from the Linux kernel to Genode. With day-to-day use of Sculpt OS. So you can expect us to keep up with recent
many years of driver-porting experience under our belts, we plan to condense generations of Intel-based hardware. In this area, we plan to make IOMMU
the lessons learned in the form of new tooling and documentation. This, in support available with kernels beyond NOVA, and explore the use of
turn, will hopefully pave the ground for more and more developers power-management features like suspend-resume with Sculpt OS.
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 Milestones for 2022
################### ###################
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,
@ -107,65 +97,45 @@ 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 21.02 February - Release 22.02
======================== ========================
* Pluggable device drivers (NIC, WLAN, framebuffer, input) * OpenGL in VirtualBox 6
* VirtualBox 6 * Sculpt OS as tool kit for special-purpose OS images
* Sculpt: basic UI for the consistent block encrypter (CBE) * Pinephone
* 64-bit ARM * Modem access
* VirtIO block-device support for virtual machines * Touch-screen compatibility of Sculpt OS
* Base platform support for the Pine A64 board (kernel base framework)
May - Release 21.05 May - Release 22.05
=================== ===================
* Annual documentation update, including the "Genode Foundations" book * Annual update of the "Genode Foundations" book
* GPU support * Second edition of the "Genode Platforms" documentation
* MESA update * WireGuard VPN
* Experiments on ARM (e.g., Vivante on i.MX8, or Mali-400 on A64) * Updated drivers for PC hardware (Wifi, Intel framebuffer, USB)
* Sculpt OS on Pine A64 (USB, input, framebuffer, SD-card, networking) * New tracing tool with support for CTF and PCAP
* 64-bit ARM * Pinephone telephony
* 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 August - Release 22.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 * Pinephone
* Touchscreen and display * Morph browser
* Mobile web browser * Media record and playback capabilities
* Goa * FPGA-powered DMA protection for the Zynq-7000 SoC
* CMake-based Qt5 applications * Kernel-agnostic IOMMU support for PC hardware
* QML-based applications * Optimized GUI latency and synchronization
November - Release 21.11 November - Release 22.11
======================== ========================
* Pinephone * Pinephone
* Mobile data connectivity (LTE) * WebRTC-based video chat
* Phone calls (audio) * Power management
* SMS * Base mechanism for suspend-resume on PC hardware
* seL4 * Support for hardware-based trust anchor for CBE and WireGuard
* Update to current kernel version, MCS scheduling * Software-hardware co-design example for the Zynq-7000 SoC
* Combining CAmkES with Genode
* SMMU (I/O-MMU for ARM) support for our custom (base-hw) kernel
* Multi-monitor support