======== Road Map ======== Herein, we lay out our 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 further 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. Review of the past year ####################### In 2013, we worked on four construction sites: Framework infrastructure, self-hosting, tooling and optimization, and hardware support. When reviewing the road map for 2013, it is great to see that we largely lived up to our planning. The framework infrastructure was enhanced with concepts for managing CPUs on multi-processor systems and for dynamically balancing memory resources, it received new audio and file-system capabilities, and, with the addition of Qt5 and the lxIP stack, we could enable highly sophisticated workloads natively on Genode. On our endeavour of self-hosting Genode on Genode, we could eliminate long-standing show stoppers for several base platforms. We were able to improve them to the point where we can routinely execute Genode's tool chain across several base platforms such as NOVA and Fiasco.OC as part of our nightly automated tests. On the user-facing side, a new command-line interface has seen the light of the day. Two highlights when it comes to tooling were the new event tracing facilities, and profound support for automated testing. Thanks to the latter, we expose Genode to over 500 test runs including automated performance benchmarks. By executing those tests each night, we have become able to resolve regressions before they enter the master branch. So the master branch remains always in a good shape. As expected for an operating-system project, most of our work was spent on hardware support. On x86, we added IOMMU support, and the virtualization capabilities on NOVA have seen a major upgrade. On ARM, we enabled or vastly enhanced the device drivers for Samsung Exynos 5, Freescale i.MX, and Raspberry Pi. We also explored the possibilities of combining Genode with ARM TrustZone. Only two topics, namely Intel wireless and a new user interface concept had been deferred. We decided to postpone the Intel wireless topic to address gigabit networking instead. Even though the new user-interface concept served as a strong motivation behind many improvements of the base system such as dynamic reconfiguration and dynamic resource balancing, the work on those fundamentals left little room to bring forward the actual UI concept. Now that those pieces are in place, we can go full steam ahead. The most surprising topic that was not clearly laid out in our last year's road map is the advancement of the base-hw platform. Started as a mere experiment, it received so much love and attention that it unexpectedly became able to host the whole universe of Genode's software stack. 2014 #### In 2014, we will put the emphasis on the base-hw kernel, 3rd-party software, storage, and the user-facing side of Genode. The experience with base-hw in 2013 ignited our ambitions to develop this kernel not just into a complete base platform for Genode, but also to explore new grounds. To fully accommodate Genode, we will complement base-hw with multi-processor support, kernel-protected capability-based security, and real-time scheduling. Beyond supporting Genode's software stack, we will explore the use of ARM's virtualization extensions to turn base-hw into a microhypervisor, similar to NOVA but focusing on ARM. With Genode becoming more and more flexible, the role of 3rd-party software in both source-code and binary form grows. Even though Genode offers a pretty convenient mechanism to automatically download and integrate 3rd-party source codes, the burden to resolve inter-dependencies between such source packages is still left to the user of the framework. Many new users stumble over the installation of 3rd-party code as it is not obvious to see which packages are required for a particular system scenario. To make Genode better approachable and more convenient to use, we plan to consolidate the current mechanisms into a solid source-code package management solution. The improved 3rd-party software support will hopefully allow us to realize sophisticated and popular usage scenarios more easily. As security is one of Genode's major benefits compared to commodity operating systems, we consider supporting TOR, either as server, or client side, or even both. One possibility would be to provide a ready-to-use live image containing a TOR client and a configured browser, which would enable users to browse anonymously. Besides the use of ported 3rd-party software on top of Genode, we see clear demand for hosting 3rd-party binary software, particularly virtualized OSes. The Seoul VMM (on NOVA) and L4Linux (on Fiasco.OC) already allow for the use of Linux guest OSes as Genode sub systems. However, both solutions fall short in different ways. Whereas L4Linux requires the maintenance of a patched Linux kernel, Seoul can execute unpatched Linux kernels but requires a fine-tuned kernel configuration. Because we long for a product-quality virtualization solution that works just out of the box with most existing guest OSes, we will make VirtualBox available on Genode/NOVA. The move to employing Genode for day-to-day computing requires reliable, secure, and fast storage. Hence, we will build and optimize components that operate on file-system and block level. This includes work on device drivers, file-system stacks, caching mechanisms, block-level encryption, as well as improved per-process virtual file systems. Finally, we plan to complement Genode with an entirely capability-based user interface, which will present the user with a unique model of how to interact with the system. With user interface, we actually refer to three different things: System configuration (the user interface a system integrator has to deal with), text-based user interface, and a graphical desktop environment. We hope to cover those with one single holistic concept. Milestones ========== In the following, there is a rough schedule of the planned work. As usual, it is not set in stone. If you are interested in a particular line of work, please get in touch. :February - Release 14.02: * First version of VirtualBox on NOVA * Base-hw: multi-processor support * Block cache * Component composition tool kit :May - Release 14.05: * Base-hw: real-time scheduling * 3rd-party source-code package management * Block-level encryption :August - Release 14.08: * Desktop environment * Base-hw: kernel-protected capability-based security * TOR on Genode :November - Release 14.11: * Base-hw: virtualization on ARM, support for Cortex-A7 * Intel wireless * NOVA kernel resource management