Road map for 2013

This commit is contained in:
Norman Feske 2013-01-15 10:53:22 +01:00
parent bf6636a987
commit 2d7342a074
1 changed files with 138 additions and 80 deletions

View File

@ -15,106 +15,164 @@ pushing the Genode technology to a certain direction, we are willing
to revisit our plans.
2012
2013
####
"Eating our own dog food"
=========================
Before detailing the work planned for 2013, let's have a look at the last
year's road map. In 2012, we labeled our activities as "Eating our own dog
food". Our goal was to bring Genode into a shape that makes it usable as
working environment for conducting Genode development. Just to name a few
achievements of 2012, there is the new ability to build Genode on Genode, SSH,
lighttpd, the new file-system infrastructure, the new DDE linux and DDE OSS.
But even though the puzzle pieces are nicely coming together, we are not quite
there yet to realistically make the switch to Genode as development
environment. Two major missing points are a solid UI concept that leverages
Genode's unique architecture and a "real" file system.
To emphasize our conviction in the maturity and flexibility of
Genode, we dedicate the year 2012 to the transition of the framework
from a toolkit for building special-purpose operating systems to a
fully functional general-purpose OS. The ambitioned goal of the
Genode developers is to switch to Genode as everyday OS environment
for carrying out productive work. In addition to bringing forward
Genode as general purpose OS, we plan to use it to serve the
genode.org web site.
Even though we missed our ambitious main goal for 2012, there is no cause for
despair. There are many achievements in addition to our road-map items to be
proud of. The most visible addition is the thorough support for ARM-based
platforms reaching from versatile express, over freescale i.MX, to OMAP4.
Another amazing development is the added base-hw platform that enables Genode
to be executed without a 3rd-party kernel on a variety of ARM-based platforms.
Furthermore, the largely revised support for the Linux base platform makes
Genode fit to be used as component framework on Linux.
So what is coming next?
We see four major construction sites that we should address this year:
framework infrastructure, self-hosting, tooling and optimizations, and hardware
support.
Ingredients
===========
Framework infrastructure
========================
As developers of low-level system software, we have very specific
expectations from our everyday OS. While we can live happily without
graphical effects and rich multimedia applications, an efficient
Unix-like command-line interface, the presence of development tools,
and system stability are crucial.
The primary group of people Genode tries to cater well are developers
and integrators of systems. Genode is meant as a tool box to empower
those people to build real-world component-based system solutions. From
this audience, we receive requests for improvements in the following areas:
We identified the following features as fundamental to our computing
needs:
* Multi-processor support: On some base platforms, SMP support is
available but the framework still misses a holistic concept to
manage and configure the use of multiple CPUs.
* VIM
* Shell
* Tool chain (coreutils, gcc, binutils, make, findutils, tar, Tcl,
expect)
* Persistent file system
* Block-device encryption
* SSH client
* RSync
* Git client
* GNUPG
* Web browser (also used for email, don't need multi-media stuff)
* PDF viewer
* A way to run a just-compiled Genode sub system
* Interactive Python shell (to be used as a calculator)
* Screen lock
* A fall-back virtual machine running Linux for carrying out sporadic
work with images (Gimp, Povray, ImageMagick, etc.) and LaTeX, and
for testing the Linux version of Genode
* Tiled window manager (similar to the wonderful ion3)
* IM client for Jabber
* Improving scalability: On multi-core systems, and systems with a
non-uniform memory architecture (NUMA) in particular, we face scalability
challenges that we haven't thoroughly addresses so far. On NUMA systems,
memory locality is an important consideration. So the framework should
provide means to tailor the allocation of RAM for different subsystems.
Furthermore, core could be largely improved to process service requests and
page faults in a concurrent fashion.
With those fundamentals in place, we will be ready to get started
using the system. This will be the right time to address add-ons
that make the devloper's life more efficient and enjoyable:
* Storage: Block-device access is a general concern. Even though we
laid the foundations for Genode's storage infrastructure, several
pieces are still missing, in particular a "real" (non-FAT) file
system, block/file/directory caching, and I/O scheduling. Without
those pieces, there is no way to achieve the application performance
that we desire.
* EMACS (for all those that cannot live with VIM)
* Intel wireless driver
* Media player (at least for playing music)
* Thinkpad ACPI support, fan daemon
* Qemu
* Tuxpaint
* High-performance graphics, e.g., via the Wayland display server
* Native mail-user agent (e.g., mutt)
* Additional command-line tools (e.g., mc)
* Networking: The current TCP/IP performance using lwIP has room
for improvement. So I'd like to find a solution to bring TCP/IP
performance on Genode on par with Linux. Maybe this means to find
the bottlenecks in our lwIP port, or even going for another TCP/IP
stack?
The work on enabling these functionalities on top of Genode will be
scattered over the year. However, for each of the four releases in
2012, we define a particular focus.
* Qt5: Now that Qt5 is officially released, we should consider to
switch from Qt4 to Qt5.
* Low-latency audio: The current audio_out-session interface was
our first shot into the direction of audio processing. To enable
use cases where streaming audio and sporadic sounds must be
accommodated at the same time, we need to revise our approach.
* Cryptography
* Random numbers
* Block-device encryption
Self-hosting
============
The second major topic is redeeming the promise stated for the past year
- using Genode as a real-world OS. The following pieces are missing.
* UI concept for pleasant working environment
* Tiled window manager
* Terminal improvements (e.g., scroll buffer)
* Noux improvements (e.g., signals)
* Tools
* Git (work is already in progress)
* Mail user agent
* Instant-messaging software
* Support for 'make prepare' (e.g., SVN, wget, mawk)
* Support for run tool: expect, Qemu
Tooling and optimization
========================
Now that Genode's work loads become ever more complex, we feel the
drastically increased need to understand its inner behavior and detect
possible black holes where the performance goes.
When the system scenarios were rather small, printf-debugging was quite
feasible. But now, with multiple instances of Noux running concurrently
with several drivers, we need better tools for understanding, debugging,
and tracing the system. In a component-based system like Genode, the
creation of such tooling support of especially challenging because we
need to walk on new grounds. But good tooling is key to direct our efforts
spent with performance optimizations. The goal should be to ultimately debunk
the slow performance of microkernel-based systems as a myth.
Hardware support
================
The attractiveness of our framework corresponds to the degree of
hardware support. Since we want to make Genode more attractive, we need
to continue our efforts with creating custom drivers, porting drivers,
and enabling platforms. The following points are considered as the most
interesting ones for this year:
* Intel architecture
* IOMMU support
* Improved virtualization support (Vancouver on NOVA)
* Intel wireless
* ARM architecture
* Extending support for SoC platforms
* TrustZone
Milestones
==========
:February - Release 12.02:
* File and directory-service interfaces
* Offline Unix tools (vim, shell, tool chain)
* PDF viewer
In the following, there is a rough schedule about the planned work. As always,
it is not set in stone. If you are interested in a particular line of work,
please get in touch.
:May - Release 12.05:
* Revisiting the support for Linux drivers (USB, sound)
* Network-based Unix tools (e.g., ssh, Git, rsync), IM client
* Media player
:February - Release 13.02:
* Low-latency audio support
* IOMMU support on NOVA
* First steps of user-interface concept
* Improved x86 virtualization support
:July - Live CD 12.03:
* Presenting usage scenarios of Genode as development platform
:May - Release 13.05:
* SMP support
* Qt5
* Cryptography
* Refined user-interface concept
:August - Release 12.08:
* Tiled window manager and user-interface concept
* Intel wireless driver
* Persistent file system
* Hosting genode.org website on Genode
* Multi-processor support on NOVA, Pistachio, and Fiasco.OC
:August - Release 13.08:
* TCP/IP optimization
* RPC tracing facility
* Real (non-FAT-based) file system
:November - Release 12.11:
* Extended support for Lenovo Thinkpad
* Cryptography (block-device encryption, GNUPG)
* Additional tools (emacs, mc)
:November - Release 13.11:
* Intel wireless
* MP scalability improvements
Additional topics
=================
In addition to the main theme for 2012 described above, Genode will
continue to improve its support for ARM-based platforms.
Live system
===========
In addition to the milestones outlined above, we are planning to release
a new live system in 2013.