Dear Genode Community,
hereby, I'd like to kick off our yearly brainstorming about Genode's road map for the upcoming year. Please feel invited to chime in, sharing your personal observations and plans. By mid of January, I will update Genode's official road map, trying to weave one reasonable plan out of our individual interests.
Let me start with my personal reflection of the past year and the topics that I find tempting for 2023.
Review of the past year -----------------------
My Genode year revolved all around the PinePhone, which was an extremely challenging and rewarding experience.
Driven by the vision of a Genode-based smartphone, I had to tackle topics ranging from the schematics of the device, over plenty of peripheral drivers, up to the user-interface level. Along the way, I found myself entrenched in a staggering variety of topics. To name a few: A custom Forth interpreter for our firmware for the PinePhone's system-control processor, programmed in OpenRISC assembler. Implementing a low-complexity AT-protocol stack talking to the modem, enabling voice telephony and mobile-data connectivity. Coming up with a suitable user-interface concept for the mobile variant of Sculpt OS, and implementing it. The exploration and implementation of power-management features like voltage and frequency scaling. Reducing the time from cold start to the user interface to only 5 seconds. Getting the application performance up to an acceptable level, grabbing all straws in reach.
This was of course not a one-man show but a team effort. I found myself very happy being strongly supported by Christian, Sebastian, Josef, and Stefan who played huge roles in wrestling with the hardware and ultimately enabling scenarios like media playback in the Morph browser on the PinePhone.
The result makes me immensely proud. Moreover, we haven't just managed to get it to work, but we gained detailed guidance documentation [1] as a collateral effect. The main motivation behind my laborious writing effort was to lower the barrier of entry for others who wish to port Genode to further mobile platforms in the future. Let's see how this plays out.
[1] https://genode.org/documentation/genode-platforms-22-05.pdf
Interests for 2023 ------------------
Personally, there are four main interests, I'd like to focus on now.
1. Completing the support for the PinePhone
Genode on the PinePhone evidently works now. But I want to make it rock! I'm eager to implement a prolonged standby mode that will allow me to leave the phone unplugged for a week while staying receptive for calls. I want to make the installation and use of custom software an easy and enjoyable experience. Finally, by integrating privacy-protecting functions like the file vault or WireGuard VPN support, the mobile version of Sculpt OS will give me the assurance I'm seeking for my personal mobile companion device.
At the beginning of February, I'm going to present the current state at FOSDEM's "FOSS on Mobile" Devroom [2] and will invite the community for a field test. By May, I want to reach a state where we can offer a ready to use image for PinePhone for a broader user base.
[2] https://fosdem.org/2023/schedule/event/genode_on_the_pinephone/
2. Moving existing applications to Sculpt OS
With Goa [3], we already have a nice starting point for bridging the gap between existing software and Genode. I want to elevate Goa from a personal project to an official Genode project. One particular ambition is the use of Goa for re-targeting existing mobile apps to the mobile version of Sculpt OS (e.g., using the APIs of Sailfish or Ubuntu touch UI). I'm thinking of an Open-Street-Map client and a messenger as particular examples. Should we manage to achieve a frictionless way to bringing existing apps to Sculpt OS, we may have a chance of spawning a broader active community.
[3] https://github.com/nfeske/goa
3. Improved support for Intel GEN12
This month, I swapped out my trusty Lenovo x260 by a GEN12 Frame.work laptop as Genode development machine. It is a very nice laptop. Still, there are quite a few rough edges that need attention. The fan can get very noisy, which we can presumably fix by better driver support for CPU power and temperature settings. I know that Alexander has already done promising exploratory work, which I'd love to replicate and finally make it a regular feature. Closely related, I'm missing the battery-state applet on the new machine, and the of the PS/2-emulated touchpad is, well, an interim solution at best. I ultimately long for a proper touchpad driver with support for common gestures.
4. Distillation of Genode's base mechanisms
Whereas the first three points address practical concerns, I also want to turn my attention to the framework architecture. During the past two years, I discovered several ways for simplifying the base system, slimming down the framework API, and lowering Genode's footprint. Think of my ambition to reduce the reliance on the C++ exception mechanism, consolidating core's PD and CPU services into one, streamlining the signalling mechanism, or re-implementing the page-fault handling across the various kernels. There is a lot of potential, which will ultimately open up new optimization opportunities. I restrained myself from exploring those ideas to retain my focus on the PinePhone. But they want out. The second half of 2023 would be a good time.
What about you? ---------------
Even though I hope that the thoughts above resonate with you, I'm pretty sure you have different perspectives. Please share them!
How did you perceive the Genode year 2022?
What directions are you most excited about?
Which topics do you deem as interesting to explore yourself?
Do you already happen to have rough plans about 2023?
Cheers Norman