mirror of
https://github.com/genodelabs/genode.git
synced 2025-01-18 10:46:25 +00:00
Road map for 2019
This commit is contained in:
parent
3bd4197951
commit
2f9da1c7c8
20
doc/news.txt
20
doc/news.txt
@ -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
|
||||
##############################################
|
||||
|
||||
|
277
doc/road_map.txt
277
doc/road_map.txt
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user