This page compiles ideas to pursue in the context of Genode. It is meant as source of inspiration for individuals who are interested in getting involved with the project and for students who want to base their student research projects on Genode.
Applications and library infrastructure
- POSIX Environment
- POSIX is universally regarded as standard programming environment supported by all major operating systems. Providing a POSIX environment on Genode would facilitate the port of existing applications from POSIX-compliant platforms to Genode.
- Python runtime
- High-level languages such as Python or Lua are not just ideal for scripting purposes but also facilitate the development of complex applications at a great developer efficiency. With a native python runtime operating at a low level on the Genode process tree, classical system services could be implemented in a higer-level language than C or C++.
- Port of libSDL
- There exists a wealth of applications that use libSDL as hardware-abstraction layer. Porting libSDL to Genode would make these applications available to all platforms Genode is running on.
- Qemu or Virtual Box on Genode
- Using Genode as hosting platform for virtual machines running in Qemu or Virtual Box would enable the execution of security-sensitive functions (for example cryptography) with a minimally-complex trusted computing base beside running Windows on the same machine.
Architectural topics
- QNX/Neutrino as kernel for Genode
- At present, Genode relies on Linux or L4 as underlying kernel. Since the source code of Neutrino became publicly available, the port of Genode to this microkernel poses in interesting challenge.
- Xen as kernel for Genode
- Using Xen as kernel for Genode would clear the way to remove the overly complex Linux OS from the trusted computing base of Xen guests OSes?.
- Linux process containers for supporting Genode`s resource trading new
- Even though, the Linux version of Genode is primarily meant as a development platform, there exist interesting opportunities to explore when combining Genode with Linux, in particular Linux' process containers.
- Genode's core as kernel on the Microblaze CPU architecture
- Microblaze is the CPU architecture prominently used as soft core on Xilinx FPGAs?. The current Microblaze version features a MMU and thereby has become a viable hardware platform for Genode. Genode on the Microblaze soft core would open up exciting opportunities for software-hardware co-design.
Optimizations
- De-privileging the VESA graphics driver
- The VESA graphics driver executes the graphics initialization code provided by the graphics card via an x86 emulator. To initialize a graphics mode, this code needs to access device hardware. Currently, we permit access to all device registers requested by the graphics-card's code. These devices include the system timer, the PCI configuration registers, and the interrupt controller, which are critical for the proper operating of the kernel. The goal of this work is to restrict the permissions of the VESA driver to a minimum by virtualizing all devices but the actual graphics card.
- Using kernel locks for the L4/Fiasco version of Genode
- The L4/Fiasco version of Genode relies on a overly simple sleeping spinlock implementation for thread synchronization, which introduces bad scheduling latencies in the case of lock contention. With the recent addition of kernel-supported locking to the L4/Fiasco kernel, a more efficient alternative has become available. The goal is improve Genode to use L4/Fiasco's locking primitives and measure the gained performance improvement.

