From 2d7342a07447b75729f15f76430d6ea5c2db28ef Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Tue, 15 Jan 2013 10:53:22 +0100 Subject: [PATCH] Road map for 2013 --- doc/road_map.txt | 218 ++++++++++++++++++++++++++++++----------------- 1 file changed, 138 insertions(+), 80 deletions(-) diff --git a/doc/road_map.txt b/doc/road_map.txt index 3d8b8a2c8..1468dcd33 100644 --- a/doc/road_map.txt +++ b/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.