Hi Everybody,
   As a hobbyist who's been following Genode for about a year now (I was running Sculpt on my home computer for a few months), I thought I would offer a few thoughts. Since I mostly do stuff for fun and at a slow pace, I don't expect to be influential in any serious way, but perhaps the perspective of hobby users is valuable nonetheless? Overall I'm very impressed with Genode/Sculpt - the philosophy and approach is pretty cool, and I have some successes with it. For example, I was able to port the Qt version of the "2048" game, and recently I have been trying to port the HelenOS driver for AR9271 usb wifi dongle - it is work in progress and non-functional currently. I also appreciate the level of active development going on - each new update brings cool stuff, so I think the past year of Genode updates was interesting to see.

If there's one wish I have it would be better hardware support and resiliency. Currently, unless I misunderstand, the hardware support list mostly reflects the hardware that Genode Labs uses, and there doesn't see to be much dynamic handling of identifying and loading drivers. Example 1 - Sculpt will try to load a PS2 driver even on my Apple hardware that doesn't have any, leading to system crash. Example 2 - Sculpt uses pretty simple hard-coded logic to select which framebuffer driver to use, when I was expecting an XML file somewhere to allow more fine-grained control of which vendor/product IDs to assign to which driver (and also to identify and match other drivers, I guess). Example 3 - When the FB driver crashes, the rest of the system is resilient and continues to run. But, of course this is nearly useless because there is no way to reset the driver. Given my understanding of the component-based architecture, it seems like these things shouldn't be insurmountable issues. It should be possible to identify a failed component, kill it, and replace with a new instance, I think? It would be fun, in non-embedded applications, to be able to compile an experimental driver within a VM, push the result back to the running system, test it, tweak and recompile, etc. With that kind of workflow, maybe we could hope for more experimental/community drivers, at least on PC hardware?

Anyhow, those are my thoughts, thanks for making Genode!

Regards,
Colin

On Fri, Dec 18, 2020 at 9:00 AM Norman Feske <norman.feske@genode-labs.com> wrote:
Dear Genode community,

the end of the strange year 2020 comes in sight. So now it is time
to kick off our annual road-map discussion. I'll keep up with our
tradition of reviewing the past 12 months from my personal
perspective, dropping my ideas for the upcoming year, and inviting
you to share your ideas and plans.


Review of 2020
--------------

The overarching theme of our road map for 2020 was "Dwarfing the
barrier of entry", which expressed the ambition to reach a wider
audience. On that account, we identified four promising directions:
First, making Sculpt OS palatable for a wider circle. Second,
fostering the public perception of the high quality of Genode to
reinforce the confidence of people who are sceptical towards novel
operating-system technology. Third, lowering the barrier of entry by
providing frictionless tooling. And fourth, publicly presenting use
cases that prove the fitness and flexibility of Genode.

These directions certainly did a good job of motivating the working
topics of this year's four releases [1,2,3,4].

[1] https://genode.org/documentation/release-notes/20.02
[2] https://genode.org/documentation/release-notes/20.05
[3] https://genode.org/documentation/release-notes/20.08
[4] https://genode.org/documentation/release-notes/20.11

The UI improvements of Sculpt OS in version 20.02 largely eliminated
the need to use the command line, as shown in my live demo [5].
But the work on the user-visible side of Sculpt has admittedly dried
up a bit since spring time. Software quality has been a continuous
topic. Personally, I dedicated a lot of energy to the improvement
and consolidation of our POSIX support (Noux vs. libc) and the
related infrastructure like the VFS server.

[5] https://www.youtube.com/watch?v=vmgWgzeKAjU

That said, despite the many technical advances, the stated soft goal
of reaching a broader audience remains fairly distant. Genode has
not seen a significantly wider adoption by the open-source community
at large compared to one year ago.

On the other hand, regarding our stated commitment to 64-bit ARM
hardware, in particular supporting the NXP i.MX8 SoC, there is a
strong sense of accomplishment, which makes me proud. The depth and
breadth of this line of work has been fantastic. I'm speaking of
64-bit multi-core virtualization, HDMI, touch input, OLED,
networking, LTE, USB, clock and power management, VirtIO, up to
running Sculpt OS on this platform. It is a huge success story on a
technical account.

Regarding our reach to a broader community, we are super excited
about the prospect of combining Genode with the MNT-Reform laptop
that is based on the i.MX8 SoC. When speaking of i.MX8 one year ago,
I also had the Librem5 in mind - envisioning Genode on a smart-phone
form factor. But that hope remained abstract as we did not succeed
to establish a correspondence with the makers of the Librem5. The
vision of a Genode-based smart phone, however, has become stronger
than ever (see below).

While reading the paragraphs above, you may sense my ambiguous
feelings about the past year's road map. I think we missed the
stated goal. I also think that we excelled at technological
progress. For us developers, the road map serves primarily as
orientation for our technical work. But since the past year's goal
of increasing adoption hasn't been a technical one, no level of
technical excellence will magically bring us there. So the goal was
a bit delusionally to begin with. Let us lift this pressure for the
next year and concentrate on the technical level.


My personal ambitions for 2021
------------------------------

* By the end of the year, I want to use a Genode-based mobile phone,
  replacing my current Nokia 3720. I'll focus on the _Pinephone_.
  In fact, I have already taken the first baby steps and will
  continue to thoroughly document this line of work at
  https://genodians.org.

* I see plenty of opportunities for optimization throughout Genode
  and would like to make _optimization_ the motto of the year.
  The following ideas are spontaneously crossing my mind:

  - Profiling and tuning of Unix-like workloads, in particular
    by looking at file-system access patterns.
  - Fostering the batching of async I/O, e.g., increasing the
    chance for the batching of network packets.
  - Let our ARM tool chain use the hard-float calling convention.
  - Replace the allocator of our C runtime by jemalloc.
  - Reducing the overhead of our POSIX TLS mechanism.
  - Taking XML parsing off the critical path for the dynamic
    reconfiguration of init.
  - Removing indirections, in particular the old libc plugin interface.
  - Reducing the inflation of binaries by C++ templates.
  - Improving compilation times by reducing header interdependencies.
  - Merging core's CPU and PD service into one.

* I'm convinced that we have to dramatically reduce the engineering
  effort needed to port device drivers from the Linux kernel to
  Genode. Backed by our practical DDE-Linux experience, a few ideas
  have formed in the back of my head. They want out. So I see my
  work with the Pinephone as a welcome opportunity for experimenting
  in this direction.


What's your perspective?
------------------------

For drafting the road map of next year, I'm eagerly interested in
the perspective of my fellow developers and of course users of
Genode.

How do you perceive the outcome of the year?

What areas would you wish to concentrate on?

Where do you see untapped potential of Genode?

How do you envision Genode in December 2021?


I would very much appreciate your input for forming a rough picture
of next year. Of course, not all ideas will make it to the road map.
Economic constraints and the willingness of pro-active participation
play a major role. Regarding the timeline, I plan to announce the
official road map for 2021 in mid of January.

Cheers
Norman

--
Dr.-Ing. Norman Feske
Genode Labs

https://www.genode-labs.com · https://genode.org

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth

_______________________________________________
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users