mirror of
https://github.com/mmueller41/genode.git
synced 2026-01-21 12:32:56 +01:00
Road map for 2021
This commit is contained in:
35
doc/news.txt
35
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
|
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
|
||||||
|
|||||||
266
doc/road_map.txt
266
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.
|
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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user