======== Road Map ======== This page contains our preliminary plans for evolving Genode. Progress in addition to this planning will very much depend on the degree of community support the project will receive. The [http:/about/challenges - Challenges] page collects some of our ideas to advance Genode in various directions. 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. 2013 #### 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. 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. Framework infrastructure ======================== 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: * 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. * 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. * 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. * 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? * 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 ========== 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. :February - Release 13.02: * Low-latency audio support * IOMMU support on NOVA * First steps of user-interface concept * Improved x86 virtualization support :May - Release 13.05: * SMP support * Qt5 * Cryptography * Refined user-interface concept :August - Release 13.08: * TCP/IP optimization * RPC tracing facility * Real (non-FAT-based) file system :November - Release 13.11: * Intel wireless * MP scalability improvements Live system =========== In addition to the milestones outlined above, we are planning to release a new live system in 2013.