Road map for 2018

This commit is contained in:
Norman Feske 2018-01-17 17:33:39 +01:00
parent c8c910a41b
commit 562325a28b
2 changed files with 132 additions and 116 deletions

View File

@ -4,6 +4,21 @@
===========
Road Map for 2018 | 2018-01-17
##############################
| 2018 will be the year of Sculpt.
In autumn last year, a new Genode system scenario called "Sculpt" emerged.
By the end of 2017, all members of the Genode-Labs team switched to this
operating system on their laptops. The planning of 2018 revolves around the
ambition to expand the user base of Sculpt in several steps. Additionally,
the year will be focused on software quality, device-driver support for
popular ARM boards, Genode's custom kernel, and seL4.
The new road map is available at the [https:/about/road-map - road-map page].
Genode at FOSDEM 2018 | 2017-01-16
##################################

View File

@ -14,132 +14,132 @@ 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 2016
Review of 2017
##############
We originally started the year 2016 with the ambition to expand the Genode
community by improving the project's appeal towards system builders and
privacy cautious users. Hence, we started the year with the resolution to
increase our engagement with the wider community, i.e., in the form of
publishing tutorial-like articles. Over the course of the year, however, we
increasingly shifted our focus to architectural and deeply technical topics
instead.
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.
We ultimately prioritized the concerns of the existing Genode users over
extending our user base. The existing users - ourself included - are primarily
interested in API stability and maturity. So we made it our priority to free
Genode from legacies and known architectural limitations. Over the year, we
introduced and cultivated the new framework API that is designed for safety,
achieved cross-kernel binary compatibility, and revised the framework's most
fundamental protocols. Now that the time of sweeping architectural changes
lies behind us, we feel much more confident to approach new users.
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].
Apart from the architectural foundations, among the many other construction
sites of 2016 were the support for the RISC-V architecture, hosting Genode on
top of the Muen separation kernel and the seL4 microkernel, huge device driver
improvements (wifi, graphics, USB, ACPI), VirtualBox 5, virtual networking,
TOR, Rust and many others. Even though we largely deviated from our original
ambition, we are proud of the outcome of the past year.
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.
Big picture for 2017
####################
2018 - The year of Sculpt
#########################
Our principle direction as declared at he beginning of 2016 remains unchanged
for 2017: Making Genode accessible to the world outside the inner circle
of us enthusiasts. But rather than making this direction the top priority for
now, let us first push the bounds of what the current users and
developers can do with Genode. Hence, for the overall theme of 2017, we
picked: *stability and scalability*. Once Genode reaches the point where it is
routinely used and stressed for various purposes by the "inner circle", a
growing user base will follow naturally and organically.
The "Turmvilla" era lies behind us. So let the "Sculpt" era begin!
During our seasonal road-map discussion on our mailing list, we identified the
following topics to address in 2017:
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:
:Application binary interfaces and package management:
# Sculpt for Early Adopters (EA)
By mid 2016, we attained binary compatibility across the various OS
kernels supported by Genode, which cleared the way to introduce the notion
of a Genode application binary interface (ABI). This, in turn, is a
prerequisite for a scalable handling of binary packages. In 2017, we
will leverage these foundations in two ways: Allowing the easy creation
of Genode systems out of packages, and realizing a system-update mechanism
that allows us to automatically use (and thereby test) the latest versions
of Genode components on our machines.
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.
:Dynamically reconfigurable subsystems:
# Sculpt for The Curious (TC)
Until now, Genode subsystems were either static (using the init component to
define them) or relied on a scenario-specific dynamic runtime environment
(like CLI monitor). By enhancing init to dynamically apply configuration
changes, the need for special-purpose runtime environments will
disappear. Scenarios like multi-stage booting, boot-medium detection, or
a dynamic desktop environment will become dramatically easier to realize.
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.
:Pruning the boot chain:
# Sculpt by Visual Composition (VC)
Today, Genode on x86 machines still relies on the legacy BIOS boot
mechanism. We will explore alternatives such as UEFI boot and
coreboot.
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.
:Asynchronous I/O:
# Sculpt as a Community Experience (CE)
With Genode 16.11, we successfully removed the last blocking inter-component
interfaces from the base framework. Still, other parts of the user-level
infrastructure, in particular the libc still relies on blocking operations. Even
though we have to offer blocking I/O to user applications for POSIX
compatibility, the mechanisms used behind the scenes will be changed to leverage
Genode's asynchronous I/O primitives.
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.
:VirtualBox 5:
In addition to working on Sculpt as the overall theme of the year, we will
focus on the following topics:
Currently, we maintain a fully-featured version of VirtualBox 4 (including
USB pass-through, audio, shared folders, clipboard, dynamic desktop resizing)
and a pretty basic version of VirtualBox 5 (without those integration
features). In 2017, we will replace VirtualBox 4 by a fully featured
version of VirtualBox 5.
:Gentle transition from NOVA to our custom kernel and seL4:
:Updated tool chain and Qt5:
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.
With version 17.05, we want to experiment with the idea of providing a
long-term supportable version of the framework in addition to the quarterly
releases. Consequently, at the time of its release, this version should use
a modern tool chain that will remain current for the foreseeable future of
Genode's regular development. The same holds true for Qt5.
:Freescale i.MX:
:Hardware-accelerated graphics on Intel:
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.
Graphics is an important element for many use cases for Genode on x86-based
platforms. Even though we experimented with hardware-accelerated 3D
graphics
[http://genode.org/documentation/release-notes/10.08#Gallium3D_and_Intel_s_Graphics_Execution_Manager - many years ago],
the current GUI stack is still based on software-based rendering.
We want to overcome this limitation this year.
:seL4:
:Native work flows:
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.
In the regularly used "Turmvilla" scenarios, most work flows require the
use of Linux in a virtual machine. Over the course of the year, we want
to move the most important work flows (namely software development and
the work with emails) to Genode natively. As a precondition,
we need to improve the usability of our GUI infrastructure by adding
support for tiled and tabbed windows, and virtual desktops.
:Software quality and resilience:
:Storage:
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.
There are several storage-related topics that need our attention to
realize the goals stated above to our satisfaction. This includes the
performance and stability of the used file-system stack, and the provision
of file-based backup and cryptographic functionality.
:System monitoring, tracing, profiling:
:Genode-based cloud appliances:
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.
We want to widen the application scope of Genode by enabling users to
easily deploy Genode scenarios on Xen-based cloud platforms.
: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 2017
Milestones for 2018
###################
In the following, we present a rough schedule of the planned work. As usual,
@ -147,39 +147,40 @@ it is not set in stone. If you are interested in a particular line of work,
please get in touch.
February - Release 17.02
February - Release 18.02
========================
* Application binary interfaces (ABI)
* Dynamic init
* VFS: asynchronous I/O
* Sculpt for Early Adopters (EA)
* Dynamic on-target package installation and deployment
* i.MX6 networking
May - Release 17.05
May - Release 18.05
===================
* Removal of deprecated APIs
* Updated tool chain
* Updated Qt5
* Easy creation of Genode systems out of packages
* Feature-complete VirtualBox 5
* 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
August - Release 17.08
August - Release 18.08
======================
* Hardware-accelerated graphics on Intel-based platforms
* Support for the seL4 kernel on x86_64 and ARM
* Use of Genode for cloud-computing appliances (deployment, virtio)
* GUI: tiled and tabbed window management, virtual desktops
* 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
November - Release 17.11
November - Release 18.11
========================
* Revised boot concept (UEFI, trimming the boot chain)
* Storage: backup, improved file-system support
* Native work flows for email and development work
* Test automation for interactive system scenarios
* 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