mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-22 15:02:25 +00:00
172 lines
7.0 KiB
Plaintext
172 lines
7.0 KiB
Plaintext
|
|
========
|
|
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
|
|
|