Road map for 2019

This commit is contained in:
Norman Feske 2019-01-15 18:16:20 +01:00
parent 3bd4197951
commit 2f9da1c7c8
2 changed files with 162 additions and 135 deletions

View File

@ -4,6 +4,26 @@
=========== ===========
Road Map for 2019 | 2019-01-15
##############################
| In 2019, we will focus on practical use cases, on interoperability, and
| on harmonizing Genode with existing applications and programming languages.
The past Year of Sculpt was dedicated to bringing Genode to the desktop on
commodity PC hardware. Now is a good time to focus on making the Sculpt OS
relevant and appealing for a broader community. The road map for 2019 features
three major ambitions towards that goal. First, making Genode easier
approachable and usable by presenting practical use cases while fostering a
stronger sense of community among users and developers. Second, simplifying
the use of existing applications and programming languages in Genode-based
systems. And third, improving the interoperability of Genode with existing
protocols and systems.
The complete story behind the new road map is presented at the
[https:/about/road-map - road-map page].
Genode OS Framework release 18.11 | 2018-11-29 Genode OS Framework release 18.11 | 2018-11-29
############################################## ##############################################

View File

@ -14,132 +14,122 @@ 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 2017 Review of 2018
############## ##############
The technical topics of 2017 ranged from hardware-accelerated graphics, over Sculpt is our take on creating a Genode-based general-purpose operating
UEFI, greatly improved seL4 support, user-level networking, file-system system. When we declared 2018 as Genode's Year of Sculpt one year ago, our
infrastructure, to an consolidated framework API. However, one topic stood out vision of how Sculpt OS would shape up was still vague. We were convinced that
the most, which is the practical use of Genode as day-to-day OS. we had - functionality-wise - all building blocks of a general-purpose OS in
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.
Whereas the so-called "Turmvilla" system scenario enabled a few enthusiasts to The Year of Sculpt was more than anything a design-space exploration, not
work on a Genode-based system since mid of 2015, the scenario was quite rigid an up-front planned activity. The process was driven by intensive
and required significant manual labour for any customization. Although it was brainstorming, experimentation, and the continuous practical evaluation
not really inviting for potential users, it illustrated well that all the through the day-to-day use of the system by its developers. For us, this ride
basic building blocks - in particular the driver stacks - were in place. But was certainly the most rewarding period in Genode's history so far. Now, when
it would have been be quite a stretch to call Turmvilla a general-purpose OS looking at the result, we are proud about what we have achieved together.
at that point. The year 2017 introduced two pivotal features that allowed us to Whenever having the chance to showing off Sculpt running on our laptops,
break free from the limitations of Turmvilla-like scenarios, namely the new the system doesn't fail to impress.
[https://genode.org/documentation/release-notes/17.05#Package_management - package-management concept]
and the ability to
[https://genode.org/documentation/release-notes/17.02#Dynamically_reconfigurable_init_component - compose and modify subsystems dynamically].
Inspired by these new features, a new system scenario called "Sculpt" emerged Unsurprisingly, many topics of the past year had a direct connection to
in Autumn 2017. The combination of Genode's recursive architecture with the Sculpt, e.g., the NIC router, the huge device-driver efforts, the GUI-stack
dynamic reconfigurability of the init component allows the user to improvements, our custom microcode update mechanism, the software packaging
interactively shape the running Genode system including any subsystem or even and deployment, and the work on the file-system and networking stacks.
configurations of individual components. The system structure is always at the
user's fingertips and can by modified instantly using a text editor. At the The bottom line of the Year of Sculpt is that Sculpt OS has become a
same time, the new package management greatly helps to keep the complexity at surprisingly versatile and robust system. It can be deployed in a few seconds
a manageable level. Whereas Turmvilla users rarely updated their installation by booting from USB, runs as day-to-day OS on almost all of our laptops, its
out of hesitance to break their work environment, Sculpt is routinely updated mechanisms for installing and updating software from packages have become a
on a weekly basis. The switch of the entire Genode-Labs team to Genode full second nature, and it continues to inspire us to explore new application
time by the end of year was certainly our biggest milestone so far. 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.
:The transition from NOVA to our custom kernel and seL4: is ongoing but
the topic received less attention than originally planned. This has
two reasons. First, Alexander Boettcher's excellent maintenance and gradual
improvement of NOVA keeps us hooked. Over the past year, there has been not
much incentive of actual Sculpt users to move away from NOVA. Second, there
is renewed interest in NOVA beyond our use of the kernel. Most specifically,
we started joining forces with
[https://cyberus-technology.de - Cyberus Technology] to improve NOVA
together. That's fantastic!
This development notwithstanding, we still follow our ambition to bring the
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.
2018 - The year of Sculpt 2019 - Bridging Worlds
######################### ######################
The "Turmvilla" era lies behind us. So let the "Sculpt" era begin! We dedicated the year 2018 to prove that Genode scales to general-purpose
computing. [https://genode.org/download/sculpt - Sculpt OS] leaves no doubt
about that. The logical next step is to make Sculpt OS relevant and appealing
for a broader community.
During our public road-map
[https://lists.genode.org/pipermail/users/2018-December/006517.html - discussion]
on our mailing list, we identified three ways towards that goal:
Having used Sculpt over the past few months, we feel confident to make the # In order to capture the interest of new Genode users, we have to
system scenario available to a larger audience. In 2018, we will take four put *emphasis on the practical use* of Genode, not on its technical prowess.
steps: 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.
# Sculpt for Early Adopters (EA) This will go hand in hand with making Genode easier to discover and to use,
describing use cases at a digestible level of detail, and fostering the
sense of one community that includes both users and developers.
The current version of Sculpt accompanied with plain-text documentation # Since an operating system is only valuable with applications, we have
that explains the concept and use. It is intended for people who are to make the *porting of existing software* and the use of popular
already familiar with Genode, in particular users that experimented with *programming languages* a frictionless experience. Besides supporting the
Turmvilla-like scenarios in the past. Sculpt EA expects basic Vim skills reuse of existing software, we should also cultivate the "Genode way" as
from the user. 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.
# Sculpt for The Curious (TC) # Because an operating system does not exist in isolation, we must foster
Genode's *interoperability* with other systems and applications by speaking
A polished version of Sculpt that is more welcoming to the user and widely used protocols and supporting universally expected
accompanied with example subsystems that loosely resemble a traditional software-integration features.
notion of an operating system (like basic menus and window borders).
There will be a ready-to-use ISO image for Sculpt TC. So users won't need
to be familiar with Genode's source code and build system. As with Sculpt
EA, Sculpt TC will still rely on the user's ability to use Vim.
# Sculpt by Visual Composition (VC)
Whereas the earlier versions rely on text editing for sculpting the system,
Sculpt VC will feature an interactive graphical user interface, which will
hopefully make the system tangible for users who live outside the terminal.
# Sculpt as a Community Experience (CE)
Sculpt CE will allow anyone to play the role of a component provider.
Each user should be able to pick individual components or entire component
compositions provided by others while maintaining complete control over the
system.
In addition to working on Sculpt as the overall theme of the year, we will
focus on the following topics:
:Gentle transition from NOVA to our custom kernel and seL4:
NOVA used to be our kernel of choice on x86 platforms. However, since the
kernel is no longer actively developed, we had to take over the
responsibility to maintain it. Whereas we feel confident in developing the
kernel in an evolutionary way, the kernel has long-standing architectural
limitations (i.e. kernel-memory management) that would require invasive
changes. Instead of ramping up our engagement with NOVA, we'd like to focus
on our custom kernel (base-hw) and the seL4 kernel. In 2018, we set out to
enable Sculpt on base-hw. This involves the support for SMP, VT-x, and VT-d
on x86.
:Freescale i.MX:
Based on the feedback from our community, Freescale i.MX support is of
great interest, specifically i.MX6. Hence, we plan to improve the driver
support for this SoC.
:seL4:
We will try to apply all improvements of Genode on seL4 whenever feasible.
It also goes without saying that we will track seL4's upstream development.
:Software quality and resilience:
The modernized framework API introduced last year is an important stepping
stone. But there is much more we can (and should) do, I.e., learning from
the high-integrity computing community (e.g., implementing critical
components in SPARK), leveling-up the scope and intensity of our automated
tests, facilitating static code analysis, and employing software-hardening
techniques. Of course, this scope goes far beyond the time frame of one
year. The immediate prioritization of these topics will largely depend on
the focus of commercial users funding the work.
:System monitoring, tracing, profiling:
The interactive use of Sculpt along with the prospects enabled by Genode's
GPU support motivate us to optimize Genode towards low-latency multimedia
applications. We will ultimately need to gain a deep understanding on
inter-component interactions, in particular along time-critical data paths.
Therefore, we plan to improve the tooling and cultivate the use of our
existing but underused tracing support.
:Java:
By the end of 2018, we want to enable Genode to leverage the ecosystem
around Java, which is - according to the TIOBE index - the most popular
programming language.
Milestones for 2018 Milestones for 2019
################### ###################
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,
@ -147,40 +137,57 @@ 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 18.02 February - Release 19.02
======================== ========================
* Sculpt for Early Adopters (EA) * OpenJDK with JIT on ARM and x86
* Dynamic on-target package installation and deployment * Sculpt with support for online package discovery
* i.MX6 networking * Showcase of a Genode-based web appliance
* Showcase of a multi-port network appliance
May - Release 18.05 May - Release 19.05
=================== ===================
* Sculpt for The Curious (TC) * Updated "Genode Foundations" book
* Update of the Genode Foundations book * Tool-chain update and SDK (C++-17, enabling O3 by default, considering GDC)
* Consistent use of the depot tools for automated tests * Headless Sculpt
* Qt5-based applications based on packages * Pluggable network drivers
* SMP support for the base-hw kernel on x86 * Native support for Let's Encrypt certificates
* Revisited GUI-related framework interfaces
* Sculpt
* Improved interactive system composition
* Passphrase handling
* Clipboard support
* Kernel-agnostic virtual-machine monitors
* ARM 64-bit
August - Release 18.08 August - Release 19.08
====================== ======================
* Sculpt by Visual Composition (VC) * Interactive tracing tool
* Ability to (cleanly) restart device drivers * Virtualization support for the base-hw kernel on x86
* Updated PC hardware support * Library version of the init component
* i.MX6 USB * Sculpt
* Multi-component user mail agent * Fine-grained USB-device policies
* IOMMU support for the base-hw kernel on x86 * Interactive depot manager (ability to add/remove software providers)
* Configuration of CPU affinities and scheduling priorities
* Audio
* Showcase of a Sculpt-based network router
* VM-based desktop applications (enhanced VM integration features)
* Updated Qt5
* Consolidation of the Noux runtime (performance)
November - Release 18.11 November - Release 19.11
======================== ========================
* Sculpt as a Community Experience (CE) * Building Genode packages directly on Sculpt
* Automated tests hosted on top of Sculpt * VNC server support
* Sculpt-like scenario for network appliances * Sculpt
* Virtualization support for the base-hw kernel on x86 * On-target debugging of components
* Shutdown protocol
* Block-level encrypted storage
* Drag-and-drop protocol