Road map for 2020

This commit is contained in:
Norman Feske 2020-01-20 16:44:55 +01:00 committed by Christian Helmuth
parent 7b964fa700
commit a2b303e95a
2 changed files with 166 additions and 136 deletions

View File

@ -3,6 +3,30 @@
Genode News Genode News
=========== ===========
Road Map for 2020 | 2020-01-20
##############################
| In 2019, 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
attention to the removal of the hurdles faced by aspiring developers and
users. During the annual road-map
[https://lists.genode.org/pipermail/users/2019-December/006987.html - discussion]
on our mailing list, we identified four tangible approaches towards that
goal. First, making Sculpt OS more user friendly. Second, reinforcing trust in
Genode by fostering the framework's high quality. Third, making the tooling
around Genode a joy to use. And finally, the illustration of Genode's
versatility in the form practical use cases.
Besides 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.
More background information about the new road map and a rough schedule are
presented at our official [https:/about/road-map - road-map page].
Genode OS Framework release 19.11 | 2019-11-28 Genode OS Framework release 19.11 | 2019-11-28
############################################## ##############################################

View File

@ -14,122 +14,121 @@ 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 2018 Review of 2019
############## ##############
Sculpt is our take on creating a Genode-based general-purpose operating For the road map 2019, we picked "bridging worlds" as our guiding theme:
system. When we declared 2018 as Genode's Year of Sculpt one year ago, our (1) Lowering the friction when combining existing software with Genode,
vision of how Sculpt OS would shape up was still vague. We were convinced that (2) Fostering interoperability with widely used protocols and APIs, and
we had - functionality-wise - all building blocks of a general-purpose OS in (3) Making Genode easier to approach and generally more practical.
place. But it was rather unclear how to best put them together to attain a
practical system. The unconquered design space seemed vast, which was both
exciting but also - at times - a bit paralyzing.
The Year of Sculpt was more than anything a design-space exploration, not With respect to (1), we identified Genode's custom tooling (build
an up-front planned activity. The process was driven by intensive system, run scripts, ports mechanism, depot tools) as a point of
brainstorming, experimentation, and the continuous practical evaluation friction. They are arguably powerful and flexible but require a lot of
through the day-to-day use of the system by its developers. For us, this ride up-front learning. This is certainly a burden unacceptable for a casual
was certainly the most rewarding period in Genode's history so far. Now, when developer without a black belt in Make and Expect/Tcl. The new
looking at the result, we are proud about what we have achieved together. [https://genode.org/documentation/release-notes/19.11#New_tooling_for_bridging_existing_build_systems_with_Genode - Goa]
Whenever having the chance to showing off Sculpt running on our laptops, tool rearranges the existing tools in a way that puts the concerns of casual
the system doesn't fail to impress. 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.
Unsurprisingly, many topics of the past year had a direct connection to On account of (2), we
Sculpt, e.g., the NIC router, the huge device-driver efforts, the GUI-stack [https://genode.org/documentation/release-notes/19.05#Broadened_CPU_architecture_support_and_updated_tool_chain - switched to C++17]
improvements, our custom microcode update mechanism, the software packaging by default, fostered the use of
and deployment, and the work on the file-system and networking stacks. [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.
The bottom line of the Year of Sculpt is that Sculpt OS has become a Our biggest step towards (3) is the [https://genodians.org] website we
surprisingly versatile and robust system. It can be deployed in a few seconds started in winter 2019, which gives individual members of our community
by booting from USB, runs as day-to-day OS on almost all of our laptops, its an easy way to present thoughts, projects, and experiences.
mechanisms for installing and updating software from packages have become a Complementing Genode's formal documentation, it also conserves practical
second nature, and it continues to inspire us to explore new application tips and tricks that were previously not covered in written form.
areas. Even outside of Genode Labs, there is a small and enthusiastic user
base.
Besides Sculpt, we set forth a number of other goals one year ago. 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.
:The transition from NOVA to our custom kernel and seL4: is ongoing but Over the course of 2019, we admittedly skipped a few topics originally
the topic received less attention than originally planned. This has mentioned on our road map. In particular, the user-visible side of
two reasons. First, Alexander Boettcher's excellent maintenance and gradual Sculpt OS received less attention than originally envisioned. We also
improvement of NOVA keeps us hooked. Over the past year, there has been not deferred several ideas we had in mind about reworking our GUI stack.
much incentive of actual Sculpt users to move away from NOVA. Second, there Instead, we expanded our work in the areas of storage (block-level APIs,
is renewed interest in NOVA beyond our use of the kernel. Most specifically, test infrastructure,
we started joining forces with [https://genode.org/documentation/release-notes/19.11#Preliminary_block-device_encrypter - block encryption])
[https://cyberus-technology.de - Cyberus Technology] to improve NOVA and
together. That's fantastic! [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'
This development notwithstanding, we still follow our ambition to bring the customers who fund our work.
support for the other kernels like seL4 on par with NOVA to give Genode
users the ultimate choice.
Speaking of seL4, throughout the year, we have continuously adapted Genode
to the kernel's upstream development and enjoy the informal collaboration
with seL4 developer community. That said, the seL4 version of Genode still
remains a side activity with no commercial backing.
:NXP i.MX: support has become much better, particularly with respect to
network support and performance. Our ongoing commitment to the i.MX
platform is also fueled by privacy-advocating projects like the Librem
phone that are based on the same SoC.
:Software quality and resilience: ultimately became the title story of the
[https://genode.org/documentation/release-notes/18.11#Raising_the_bar_of_quality_assurance - release 18.11].
We greatly intensified the amount and quality of testing, explored static
code analysis, and vastly scaled up the complexity of workloads carried
by Genode.
:System monitoring, tracing, profiling: remains a somewhat underdeveloped area
of Genode. As a step in the right direction, we introduced a simple
trace-logging tool. Also, Sculpt's introspection features like the ability
to inspect the runtime's state live on the machine make Genode's behavior
easier to capture and to understand. But that said, the use of these
features remains a black art mastered only by a few.
:Java: has found its way into Genode via our port of OpenJDK. Details such as
the enabling of the JIT engine on ARM took much more effort than anticipated.
We are happy to report that Tomcat works fine. But at the current state, it
is still too early to advertise Java as a stable feature.
2019 - Bridging Worlds 2020 - Dwarfing the barrier of entry
###################### ####################################
We dedicated the year 2018 to prove that Genode scales to general-purpose Genode as a technology is there. For more than one decade, we walked unfathomed
computing. [https://genode.org/download/sculpt - Sculpt OS] leaves no doubt territory, fought with countless deep rabbit holes, took risky decisions,
about that. The logical next step is to make Sculpt OS relevant and appealing tracked back, explored design spaces, developed taste and distaste, pruned
for a broader community. technical debt, and eventually found formulas of success. Today, there are no
During our public road-map (fundamental) unsolved questions. All the puzzle pieces are in place. There
[https://lists.genode.org/pipermail/users/2018-December/006517.html - discussion] could be no better proof than our daily use of Sculpt OS. The time is right
on our mailing list, we identified three ways towards that goal: to make Genode palatable for a wider circle. We identified four actionable
topics to achieve that.
# In order to capture the interest of new Genode users, we have to :User friendliness of Sculpt OS:
put *emphasis on the practical use* of Genode, not on its technical prowess.
With practical use, we refer to both desktop computing and headless
scenarios like network appliances and servers. Over the course of 2019,
we plan to establish (variations of) Sculpt as an attractive foundation for
those application areas, and advance Genode's protocol stacks (storage and
encryption come in mind) and hardware support (e.g., ARM 64-bit) accordingly.
This will go hand in hand with making Genode easier to discover and to use, Until now, Sculpt OS is not exactly friendly towards users who are
describing use cases at a digestible level of detail, and fostering the unfamiliar with the Unix command-line tools. Since Sculpt is not Unix
sense of one community that includes both users and developers. 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.
# Since an operating system is only valuable with applications, we have :Perception of high quality:
to make the *porting of existing software* and the use of popular
*programming languages* a frictionless experience. Besides supporting the
reuse of existing software, we should also cultivate the "Genode way" as
an option for designing native applications. Such applications can
leverage the unique capabilities of the framework, in particular the
sandboxing of code at a very fine granularity and the low footprint of raw
Genode components.
# Because an operating system does not exist in isolation, we must foster Compared to commodity operating systems who stood the test of time,
Genode's *interoperability* with other systems and applications by speaking Genode is a young and largely unproven technology. It understandably calls
widely used protocols and supporting universally expected for skepticism. All the more we must leave no doubts about our high
software-integration features. 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.
: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.
Milestones for 2019 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
################### ###################
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,
@ -137,57 +136,64 @@ 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 19.02 February - Release 20.02
======================== ========================
* OpenJDK with JIT on ARM and x86 * Consolidation: removal of the Noux runtime
* Sculpt with support for online package discovery * Library version of the init component
* Showcase of a Genode-based web appliance * Updated audio drivers
* Showcase of a multi-port network appliance * Sculpt
* 64-bit ARM (i.MX8)
* Revised administrative user interface
* System image without Unix tools
May - Release 19.05 May - Release 20.05
=================== ===================
* Updated "Genode Foundations" book * Updated "Genode Foundations" book
* Tool-chain update and SDK (C++-17, enabling O3 by default, considering GDC) * Consolidation
* Headless Sculpt * Block-level components (update to Genode's modern block APIs)
* Pluggable network drivers * ARM device drivers (introducing the notion of a platform driver)
* Native support for Let's Encrypt certificates * Improved STL support (e.g., threading and mutexes)
* Revisited GUI-related framework interfaces * 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 * Sculpt
* Improved interactive system composition * Interactive device management
* Passphrase handling * Keyboard-controlled administration
* Clipboard support * Support for BSPs maintained outside of Genode's mainline repository
* Kernel-agnostic virtual-machine monitors
* ARM 64-bit
August - Release 19.08 August - Release 20.08
====================== ======================
* Interactive tracing tool * Revisited GUI-related framework interfaces
* Virtualization support for the base-hw kernel on x86 * Extended tooling for performance monitoring
* Library version of the init component * Goa: Qt development workflow
* Desktop
* Native mail client
* Native web browser
* Sculpt * Sculpt
* Fine-grained USB-device policies * Configurable CPU resources
* Interactive depot manager (ability to add/remove software providers) * On-screen documentation
* Configuration of CPU affinities and scheduling priorities * Block encryption via our
* Audio [https://genode.org/documentation/release-notes/19.11#Preliminary_block-device_encrypter - consistent block encrypter]
* Showcase of a Sculpt-based network router implemented in Ada/SPARK
* VM-based desktop applications (enhanced VM integration features) * USB audio
* Updated Qt5 * Initial version of a kernel implemented in Ada/SPARK
* Consolidation of the Noux runtime (performance)
November - Release 19.11 November - Release 20.11
======================== ========================
* Building Genode packages directly on Sculpt * Consolidation of capability-space management across kernels
* VNC server support * CPU-load balancing
* Sculpt * Hardware-accelerated graphics on i.MX8 (experimental)
* On-target debugging of components * Reworked audio stack (interfaces, mixing)
* Shutdown protocol * Sculpt: component lifetime management, shutdown protocol
* Block-level encrypted storage * VFS plugins for lwext4 and FUSE-based file systems
* Drag-and-drop protocol