Hello everyone,
according to our road map, we intend to release another Genode Live CD in the not-too-distant future. The live CD should not be just an update of the current one - that would be rather boring. Instead, the goal behind the new live system is to provide a glimpse of our vision to use Genode as OS for doing productive work. Even though it will still have the character of a tech demo rather than a productive system, its presentation and content will be mainly focused on topics important to (at least our personal notion of) general-purpose computing. The previous live CD was designed to be easily approachable and relatively simple. The new system should be attractive to people who enjoy tinkering with a command-line interface.
I propose the following demo setups to be included on the live system:
1. Self hosting - running the GNU tool chain on Genode
The setup should showcase the use of Noux to run the GNU userland natively to accomplish everyday tasks such as editing and compiling source code. The most distinctive concept of Noux compared to traditional Unix systems is that each working topic can be executed in a specially tailored instance. So I would like to present one Noux instance with only VIM and coreutils (read-only) and the Genode source code (read/writable). This is for doing editing work. A second instance includes coreutils, make, GCC, binutils, findutils, the Genode source code (all read-only), and the build directory (read/writable). This is for compiling. By separating the editing from compiling, we can make sure that no bug in the build system or tool chain may affect the source code. A third Noux instance should allow us to execute the resulting binary and look at its output. This instance won't be able to access anything besides the actual binary.
2. On-target debugging - use GDB to debug a subsystem
With GDB monitor, we are able to debug Genode processes over a serial line or a TCP connection. Using Noux, we could principally run GDB on the system as well and simply connect it via the terminal-session interface to GDB monitor. This would allow us to execute most steps of our GDB tutorial directly on the machine. As a nice side effect, people who explore this setup will learn how to use GDB. .-)
3. L4Android
Running L4Android on Genode is merely a feature demo but flavoured with a bit of hackability. Besides showing the Android framebuffer output, I would like to show the Linux kernel output and the Genode LOG output side-by-side (using small fonts). The remaining part of the screen should be used for a console with access to the Android debugger. This way, users can dive right inside the running Android OS.
4. Media replay
This setup should present how Qt4, audio output, and video decoding are running together. In addition, I'd like to enhance the setup with (some kind of) a real-time demonstration that facilitates Nitpicker and our Qt4 plugin mechanism. Using this mechanism it is possible to provide a data path for pixels originating from the video component to the screen but bypassing Qt4. Thereby, we can run the real-time critical video processing at a higher static priority than Qt4, yet still present Qt4 and the video component tightly integrated in one GUI.
Overall presentation
I propose to let the user run each of the setups exclusively by selecting a menu entry from a small area at the top of the screen (similar to how tabs work). By not allowing the concurrent use of multiple setups, we simplify the UI and guide the attention of the user to only one topic at a time. The main part of the screen will be used by fixed-positioned windows (maybe except for the media setup). The left side (maybe 25% of the screen width) will always present a PDF file (MuPDF in action!) with a brief description of what to see and what to do (e.g., explaining the GDB commands to use in the GDB demo). The middle and right portions of the screen will be used for displaying the actual demo and, depending on the demo, will be further subdivided.
Technical qualities and limitations
The previous live CD could only be started from CD-ROM, which is kind of old-fashioned. The new system should be bootable from both CD-ROM and USB stick. For the latter, we need to work on the USB stack because our existing USB driver (on linux_drivers) is outdated to a point where it does not work with most current-generation hardware.
For the screen output, we will still use our VESA driver with a fixed video mode of 1024x768. Obviously, this is quite behind the times but there are several reasons to have it this way. First, it works nicely - no additional work is needed. Second, most people will try out the live CD on VirtualBox or a similar VM. Here, a lower resolution than the host system does not hurt. Third, when giving presentations, 1024x768 have proven to work well with most data projectors. Last but not least, fixing the resolution allows us to design the graphical presentation pretty easily. In contrast, if we supported varying resolutions, static placement and sizing of screen portions would no longer be feasible. This screams for a tiled window manager, which we don't have yet.
The live CD will use the Fiasco.OC kernel as this is the only kernel where L4Android and GDB are featured.
Working topics
I am current busy with getting Noux into shape for realizing the self-hosting and GDB setups. Once this is finished I will take care of the graphical touches, editing, and overall conceptual work. Stefan will take care of the Android setup, which comes mostly down to integrating existing components. The media setup is mainly worked on by Christian Prochaska. Sebastian is looking into the new USB stack.
Of course, we will need to do comprehensive stability testing before releasing the live CD. Fortunately, each of the setups can be developed and tested independently. This enables us to pre-release each setup as a different ISO image for everyone to test. I will certainly do so for my work. This way, we can start testing way before the final integration phase.
Release date?
There is no definitive release date yet. Given the rather ambitioned plan outlined above and our past experiences with the substantial testing effort needed for such an undertaking, I think that the release in the first half of May is feasible. But that is just a rough estimation from my side.
Do you have further ideas for setups to feature on the live CD or remarks on the current plan? Please don't hesitate to share them with us. Or maybe you interested in lending a helping hand for any of the topics?
Cheers Norman