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