Hi Cedric,

thank you for sharing your concerns and consulting us for the best course of action.

I'm in the process of integrating driver_manager into my h/o/g project, to give 
it basic dynamic drivers ability (it previously hardcoded Vesa video etc).
After peeking at ticket 5150, I looked into sculpt_manager, wondering if I could make a 
bigger "jump" and migrate directly to that component,
but that does not seem compatible with my goals (sculpt_manager embodies much of the 
SculptOS "feel" and would conflict with my h/o/g goals).
So it seems like I'll need to preserve a copy of driver_manager before it is 
deprecated/retired, make it an (ex)Genode component in the h/o/g repository.

The driver_manager was a pragmatic stepping stone for Sculpt OS that we introduced in Sculpt EA [1] before the first version of the sculpt_manager existed.

[1] https://genode.org/documentation/articles/sculpt-ea

It served us reasonably well over the years but Sculpt OS has evidently outgrown it by now. From Sculpt's perspective, the distinction between the driver_manager and sculpt_manager serves no longer a purpose but stands in the way.

For example, with the multi-head support planned for later this year, the RAM needed by Intel FB depends on the number of connected displays and their resolutions. To account for that, we would need to assign a huge amount of RAM quota to the drivers subsystem, planning for the worst case. Still, the static limit might not be enough. In contrast, by hosting Intel FB in the runtime subsystem controlled by the Sculpt manager, we can assign and upgrade the RAM quota of the driver on demand.

For USB handling, the sculpt_manager already did part of the job, but had to coordinate with the driver_manager. The merge removes this bureaucracy.

For suspend/resume, we need to orchestrate the starting, stopping, noticing, and monitoring of drivers depending on the various stages of the system. The Sculpt manager is in charge of driving these stages. So it is natural to let it manage the lifetime of the drivers directly.

In short, the merge of both management components is consequential from Sculpt's perspective, anticipating the items on our road map.

In your case where you don't want to inherit Sculpt's user experience, I see three possible routes to take.

1. You keep a custom version of the driver manager according to your
   needs. Given that we are speaking of a single file of less than
   500 SLOC, I think this is quite reasonable.

2. I try hard to organize the code of the sculpt_manager in a way
   that keeps concerns separate. The driver-managing code implementing
   the logic that formerly resided in the driver_manager will go into
   separate header files. You could try creating a new driver manager
   using these sculpt-manager internal headers. If this works out well,
   we could even think about moving these parts to some public include
   path in the future. A custom driver manager based on these utilities
   will automatically benefit from our future refinements.

   So you can make use of some guts of the sculpt_manager for
   implementing your driver manager that fits your needs best.

3. You could contemplate using Sculpt OS in a headless way. So your
   system would be a Sculpt system under the hood (using the concepts of
   the config fs and report fs as well as the sculpt_manager) but
   without any UI portions of Sculpt. Should you be interested in this
   direction, I could introduce a config attribute for operating the
   sculpt manager in headless mode.

   This direction has the appeal that the Sculpt system is already
   tuned in useful ways. For example, the new audio infrastructure
   will depend on good timing, which requires the careful assignment
   of scheduling parameters (i.e., priorities). Otherwise, one could
   end up with bad quality (like grinding artifacts). For Sculpt OS,
   we make it our mission to find parameters that work well for a
   variety of work loads. By basing your system on a bare-bones version
   of Sculpt, you would immediately benefit from this work. And Sculpt
   would benefit from your feedback. ;-)

For the start, I'd probably pick route (1). Once the new version of Sculpt is ready, you could give route (2) a try. Route (3) would make sense if you aspire to foster the interoperability between your system and Sculpt OS.

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

_______________________________________________
users mailing list -- users@lists.genode.org
To unsubscribe send an email to users-le...@lists.genode.org
Archived at 
https://lists.genode.org/mailman3/hyperkitty/list/users@lists.genode.org/message/O7CHBRXB6RH63ZBIXKDEL2ROQALPUXLT/

Reply via email to