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
##############################################

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.
Review of 2017
Review of 2018
##############
The technical topics of 2017 ranged from hardware-accelerated graphics, over
UEFI, greatly improved seL4 support, user-level networking, file-system
infrastructure, to an consolidated framework API. However, one topic stood out
the most, which is the practical use of Genode as day-to-day OS.
Sculpt is our take on creating a Genode-based general-purpose operating
system. When we declared 2018 as Genode's Year of Sculpt one year ago, our
vision of how Sculpt OS would shape up was still vague. We were convinced that
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
work on a Genode-based system since mid of 2015, the scenario was quite rigid
and required significant manual labour for any customization. Although it was
not really inviting for potential users, it illustrated well that all the
basic building blocks - in particular the driver stacks - were in place. But
it would have been be quite a stretch to call Turmvilla a general-purpose OS
at that point. The year 2017 introduced two pivotal features that allowed us to
break free from the limitations of Turmvilla-like scenarios, namely the new
[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].
The Year of Sculpt was more than anything a design-space exploration, not
an up-front planned activity. The process was driven by intensive
brainstorming, experimentation, and the continuous practical evaluation
through the day-to-day use of the system by its developers. For us, this ride
was certainly the most rewarding period in Genode's history so far. Now, when
looking at the result, we are proud about what we have achieved together.
Whenever having the chance to showing off Sculpt running on our laptops,
the system doesn't fail to impress.
Inspired by these new features, a new system scenario called "Sculpt" emerged
in Autumn 2017. The combination of Genode's recursive architecture with the
dynamic reconfigurability of the init component allows the user to
interactively shape the running Genode system including any subsystem or even
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
same time, the new package management greatly helps to keep the complexity at
a manageable level. Whereas Turmvilla users rarely updated their installation
out of hesitance to break their work environment, Sculpt is routinely updated
on a weekly basis. The switch of the entire Genode-Labs team to Genode full
time by the end of year was certainly our biggest milestone so far.
Unsurprisingly, many topics of the past year had a direct connection to
Sculpt, e.g., the NIC router, the huge device-driver efforts, the GUI-stack
improvements, our custom microcode update mechanism, the software packaging
and deployment, and the work on the file-system and networking stacks.
The bottom line of the Year of Sculpt is that Sculpt OS has become a
surprisingly versatile and robust system. It can be deployed in a few seconds
by booting from USB, runs as day-to-day OS on almost all of our laptops, its
mechanisms for installing and updating software from packages have become a
second nature, and it continues to inspire us to explore new application
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
system scenario available to a larger audience. In 2018, we will take four
steps:
# In order to capture the interest of new Genode users, we have to
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.
# 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
that explains the concept and use. It is intended for people who are
already familiar with Genode, in particular users that experimented with
Turmvilla-like scenarios in the past. Sculpt EA expects basic Vim skills
from the user.
# Since an operating system is only valuable with applications, we have
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.
# Sculpt for The Curious (TC)
A polished version of Sculpt that is more welcoming to the user and
accompanied with example subsystems that loosely resemble a traditional
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.
# Because an operating system does not exist in isolation, we must foster
Genode's *interoperability* with other systems and applications by speaking
widely used protocols and supporting universally expected
software-integration features.
Milestones for 2018
Milestones for 2019
###################
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.
February - Release 18.02
February - Release 19.02
========================
* Sculpt for Early Adopters (EA)
* Dynamic on-target package installation and deployment
* i.MX6 networking
* OpenJDK with JIT on ARM and x86
* Sculpt with support for online package discovery
* 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)
* Update of the Genode Foundations book
* Consistent use of the depot tools for automated tests
* Qt5-based applications based on packages
* SMP support for the base-hw kernel on x86
* Updated "Genode Foundations" book
* Tool-chain update and SDK (C++-17, enabling O3 by default, considering GDC)
* Headless Sculpt
* Pluggable network drivers
* 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)
* Ability to (cleanly) restart device drivers
* Updated PC hardware support
* i.MX6 USB
* Multi-component user mail agent
* IOMMU support for the base-hw kernel on x86
* Interactive tracing tool
* Virtualization support for the base-hw kernel on x86
* Library version of the init component
* Sculpt
* Fine-grained USB-device policies
* 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)
* Automated tests hosted on top of Sculpt
* Sculpt-like scenario for network appliances
* Virtualization support for the base-hw kernel on x86
* Building Genode packages directly on Sculpt
* VNC server support
* Sculpt
* On-target debugging of components
* Shutdown protocol
* Block-level encrypted storage
* Drag-and-drop protocol