======== 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 2016 ############## We originally started the year 2016 with the ambition to expand the Genode community by improving the project's appeal towards system builders and privacy cautious users. Hence, we started the year with the resolution to increase our engagement with the wider community, i.e., in the form of publishing tutorial-like articles. Over the course of the year, however, we increasingly shifted our focus to architectural and deeply technical topics instead. We ultimately prioritized the concerns of the existing Genode users over extending our user base. The existing users - ourself included - are primarily interested in API stability and maturity. So we made it our priority to free Genode from legacies and known architectural limitations. Over the year, we introduced and cultivated the new framework API that is designed for safety, achieved cross-kernel binary compatibility, and revised the framework's most fundamental protocols. Now that the time of sweeping architectural changes lies behind us, we feel much more confident to approach new users. Apart from the architectural foundations, among the many other construction sites of 2016 were the support for the RISC-V architecture, hosting Genode on top of the Muen separation kernel and the seL4 microkernel, huge device driver improvements (wifi, graphics, USB, ACPI), VirtualBox 5, virtual networking, TOR, Rust and many others. Even though we largely deviated from our original ambition, we are proud of the outcome of the past year. Big picture for 2017 #################### Our principle direction as declared at he beginning of 2016 remains unchanged for 2017: Making Genode accessible to the world outside the inner circle of us enthusiasts. But rather than making this direction the top priority for now, let us first push the bounds of what the current users and developers can do with Genode. Hence, for the overall theme of 2017, we picked: *stability and scalability*. Once Genode reaches the point where it is routinely used and stressed for various purposes by the "inner circle", a growing user base will follow naturally and organically. During our seasonal road-map discussion on our mailing list, we identified the following topics to address in 2017: :Application binary interfaces and package management: By mid 2016, we attained binary compatibility across the various OS kernels supported by Genode, which cleared the way to introduce the notion of a Genode application binary interface (ABI). This, in turn, is a prerequisite for a scalable handling of binary packages. In 2017, we will leverage these foundations in two ways: Allowing the easy creation of Genode systems out of packages, and realizing a system-update mechanism that allows us to automatically use (and thereby test) the latest versions of Genode components on our machines. :Dynamically reconfigurable subsystems: Until now, Genode subsystems were either static (using the init component to define them) or relied on a scenario-specific dynamic runtime environment (like CLI monitor). By enhancing init to dynamically apply configuration changes, the need for special-purpose runtime environments will disappear. Scenarios like multi-stage booting, boot-medium detection, or a dynamic desktop environment will become dramatically easier to realize. :Pruning the boot chain: Today, Genode on x86 machines still relies on the legacy BIOS boot mechanism. We will explore alternatives such as UEFI boot and coreboot. :Asynchronous I/O: With Genode 16.11, we successfully removed the last blocking inter-component interfaces from the base framework. Still, other parts of the user-level infrastructure, in particular the libc still relies on blocking operations. Even though we have to offer blocking I/O to user applications for POSIX compatibility, the mechanisms used behind the scenes will be changed to leverage Genode's asynchronous I/O primitives. :VirtualBox 5: Currently, we maintain a fully-featured version of VirtualBox 4 (including USB pass-through, audio, shared folders, clipboard, dynamic desktop resizing) and a pretty basic version of VirtualBox 5 (without those integration features). In 2017, we will replace VirtualBox 4 by a fully featured version of VirtualBox 5. :Updated tool chain and Qt5: With version 17.05, we want to experiment with the idea of providing a long-term supportable version of the framework in addition to the quarterly releases. Consequently, at the time of its release, this version should use a modern tool chain that will remain current for the foreseeable future of Genode's regular development. The same holds true for Qt5. :Hardware-accelerated graphics on Intel: Graphics is an important element for many use cases for Genode on x86-based platforms. Even though we experimented with hardware-accelerated 3D graphics [http://genode.org/documentation/release-notes/10.08#Gallium3D_and_Intel_s_Graphics_Execution_Manager - many years ago], the current GUI stack is still based on software-based rendering. We want to overcome this limitation this year. :Native work flows: In the regularly used "Turmvilla" scenarios, most work flows require the use of Linux in a virtual machine. Over the course of the year, we want to move the most important work flows (namely software development and the work with emails) to Genode natively. As a precondition, we need to improve the usability of our GUI infrastructure by adding support for tiled and tabbed windows, and virtual desktops. :Storage: There are several storage-related topics that need our attention to realize the goals stated above to our satisfaction. This includes the performance and stability of the used file-system stack, and the provision of file-based backup and cryptographic functionality. :Genode-based cloud appliances: We want to widen the application scope of Genode by enabling users to easily deploy Genode scenarios on Xen-based cloud platforms. Milestones for 2017 ################### In the following, we present 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 17.02 ======================== * Application binary interfaces (ABI) * Dynamic init * VFS: asynchronous I/O May - Release 17.05 =================== * Removal of deprecated APIs * Updated tool chain * Updated Qt5 * Easy creation of Genode systems out of packages * Feature-complete VirtualBox 5 * Update of the Genode Foundations book August - Release 17.08 ====================== * Hardware-accelerated graphics on Intel-based platforms * Support for the seL4 kernel on x86_64 and ARM * Use of Genode for cloud-computing appliances (deployment, virtio) * GUI: tiled and tabbed window management, virtual desktops November - Release 17.11 ======================== * Revised boot concept (UEFI, trimming the boot chain) * Storage: backup, improved file-system support * Native work flows for email and development work * Test automation for interactive system scenarios