Happy New Year everybody!
Leaving the year 2013 behind us, it's time to recapture what we achieved in the past 12 months and to lay out the activities for this year. I am planning to update our official road map by mid of January and seek your input for doing so.
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 GUI 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.
What are we up to? ------------------
Well, the answer to this question is not set in stone. Here are my suggestions:
* Improved handling of 3rd-party code: Many new users of Genode stumble over the installation of 3rd-party code. It is not obvious to see which packages are required for a particular run script. Instead, users have to deal with confusing error messages when a needed package is not installed. We should definitely fix this inconvenience.
* The base-hw platform * Multi-processor support * Kernel-protected capability-based security * Exploring ARM's virtualization extensions
* C runtime: * Revisit libc plugin concept to make the configuration of per- process virtual file systems as easy as it is for Noux. By making Noux' VFS implementation reusable for the libc, normal Genode programs could leverage stacked file systems in very flexible ways. * Abandon helper threads in favour for asynchronous I/O handling, improving performance and the simplicity of the libc-internal code.
* Storage: The work on the file-system stack is in full swing. Personally, I desire a journaling file system as well as a block cache.
* Device drivers: * Intel wireless * Merged SATA drivers: Right now, the high-performance SATA 3.0 driver for the Exynos-5 SoC does not share any code with the older SATA driver for x86. We should consolidate both implementations to get good disk performance on x86.
* Virtualization on NOVA/x86: Port of a "mainstream" VMM to Genode/NOVA. I am a fan of the Seoul (ex Vanvouver) VMM. However, I get repeatedly asked for features that people universally expect but that are unavailable on Seoul, i.e., Windows guest support. In the future, I'd like to pull a positive answer to such questions out of my sleeve.
* User-interface concept: This topic must look like a running gag, but it is not. :-)
* Hardware-accelerated graphics: Even though we looked into this topic some years ago with the experimental port of Gallium3D and the Intel GPU driver, we left the code almost unattended since then. However, with more and more software relying on OpenGL ES2.0 (I am looking at QML in particular), we definitely need to re-address the problem. In the meantime, the Intel Linux graphics stack and Mesa have advanced a lot. So we might even start looking at the problem from scratch.
* Noux performance optimizations: The Noux runtime has reached a state where it runs Unix tools including GCC reliably. But it is not very fast in doing so. To make it more pleasant to use Noux for day-to-day work, we should start to optimize.
The points above are merely my personal preferences.
What are topics that you wish to see in Genode throughout the year 2014? Or are you working on a particular feature that you plan to integrate into Genode?
Cheers Norman