introducing a radically componentized gui architecture
play

Introducing a radically componentized GUI architecture Norman Feske - PowerPoint PPT Presentation

Introducing a radically componentized GUI architecture Norman Feske < norman.feske@genode-labs.com > Outline 1. Starting point 2. Ingredients 3. Challenges and solutions 4. Next steps Introducing a radically componentized GUI


  1. Introducing a radically componentized GUI architecture Norman Feske < norman.feske@genode-labs.com >

  2. Outline 1. Starting point 2. Ingredients 3. Challenges and solutions 4. Next steps Introducing a radically componentized GUI architecture 2

  3. Outline 1. Starting point 2. Ingredients 3. Challenges and solutions 4. Next steps Introducing a radically componentized GUI architecture 3

  4. Starting point - Genode → Application-specific TCB Introducing a radically componentized GUI architecture 4

  5. Starting point - Nitpicker Introducing a radically componentized GUI architecture 5

  6. Starting point - Nitpicker Introducing a radically componentized GUI architecture 6

  7. Starting point Starting point Low-complexity GUI server (nitpicker) Toolkits ◮ Qt5 ◮ DOpE ◮ Custom widget set Hard-wired policy Goal → Desktop environment Retain low TCB complexity Accommodate a great variety of use cases Introducing a radically componentized GUI architecture 7

  8. Outline 1. Starting point 2. Ingredients 3. Challenges and solutions 4. Next steps Introducing a radically componentized GUI architecture 8

  9. ROM session interface ROM client session ROM ROM server module Introducing a radically componentized GUI architecture 9

  10. ROM session interface (2) ROM client session signal ROM ROM server new module version update Transactional update of a ROM session Introducing a radically componentized GUI architecture 10

  11. ROM session interface (3) Editor Noux Backdrop FS-ROM RAM FS Runtime config file file ROM system system Init Introducing a radically componentized GUI architecture 11

  12. ROM session interface (4) Demo Introducing a radically componentized GUI architecture 12

  13. Report session interface Existing mechanisms for propagating information Configuration defined at startup Policy defined at session-creation time Session interfaces Dynamic configuration changes What is needed in addition? Components need to publish internal state, e. g., ◮ Driver: Report available device resources ◮ Component: Report feature set ◮ Applications: User notifications ◮ Propagating error conditions Introducing a radically componentized GUI architecture 13

  14. Report session interface (2) � Report client report session Report server RAM Introducing a radically componentized GUI architecture 14

  15. Publisher-subscriber mechanism Combining “Report” and “ROM” session interfaces The report rom server provides ◮ “Report” service ◮ “ROM” service Stores reports using report-session labels as keys Controls access using ROM-session labels as selectors Triggers ROM-changed signals on incoming reports → Generic publisher-subscriber mechansism Composeable with existing ROM-using components Can be instantiated many times Introducing a radically componentized GUI architecture 15

  16. Outline 1. Starting point 2. Ingredients 3. Challenges and solutions 4. Next steps Introducing a radically componentized GUI architecture 16

  17. Flexibility of Nitpicker Nitpicker’s built-in policy stands in the way New configuration concept Domains Layering → Separation of policy from the nitpicker server Pointer Status bar Introducing a radically componentized GUI architecture 17

  18. Nitpicker with built-in policies Launchpad Nitpicker Browser Backdrop GUI Init Introducing a radically componentized GUI architecture 18

  19. Policy as external components Launchpad Panel Nitpicker Browser Pointer GUI Backdrop Init Introducing a radically componentized GUI architecture 19

  20. Domains example Demo Introducing a radically componentized GUI architecture 20

  21. Transitions How to smoothly toggle the visibility of the windows? Adding fading feature to the application? → Increase application complexity → Modifications needed per application Adding fading feature to nitpicker? → Increase complexity of nitpicker Solution → Move fading feature to separate component Introducing a radically componentized GUI architecture 21

  22. Transitions (2) Nitpicker Scout Fader Scout Init Introducing a radically componentized GUI architecture 22

  23. Transitions (2) Demo Introducing a radically componentized GUI architecture 23

  24. Launcher Starting point Demo menu (monolithic application) Based on pre-rendered PNG images Customization is labour intensive Customizable launcher Runtime-generated widgets → complex (e. g., relies on libc, libpng, zlib) Introducing a radically componentized GUI architecture 24

  25. Launcher (2) How to keep the complexity of the launcher low? Launcher is parent of all started subsystems → belongs to the trusted computing base Appealing presentation comes with complexity Solution 1. Turn launcher into a multi-component application 2. Sandboxed widget-rendering component Introducing a radically componentized GUI architecture 25

  26. Launcher (3) Menu view Report Fader Report ROM <hover > ROM ... Nitpicker Report ROM </hover > <dialog > ... </dialog > Nitpicker Launcher Nitpicker Init Introducing a radically componentized GUI architecture 26

  27. Launcher (4) Demo Introducing a radically componentized GUI architecture 27

  28. Window management Starting point Genode lacked a coherent window manager Application-specific window management Problem Diversity of tastes and expectations by users There is no a single solution for everyone Introducing a radically componentized GUI architecture 28

  29. Window management (2) Launchpad Panel Nitpicker Window Browser Pointer Manager GUI Backdrop Init Introducing a radically componentized GUI architecture 29

  30. Window management (3) De-componentized window manager Provides “Nitpicker” interface (compatibility) Layouter (defines behavior) Decorator (defines look) Layouter and decorator are sandboxed Introducing a radically componentized GUI architecture 30

  31. Window management (4) Report ROM Layouter Decorator Report ROM t u p n i Report ROM ROM ROM Report <window -layout > <hover > <window -list > <window -layout > <hover > ... ... ... ... ... </window -layout > </hover > </window -list > </window -layout > </hover > Nitpicker Window manager Nitpicker App Nitpicker Init Introducing a radically componentized GUI architecture 31

  32. Decorator Demo Introducing a radically componentized GUI architecture 32

  33. TCB complexity of window management TCB footprint of the window manager No libc dependency Adds less than 3,500 SLOC Further TCB reduction Multiple window-manager instances Each instance assigned to a different nitpicker domain Introducing a radically componentized GUI architecture 33

  34. Screen resolutions How to support different screen resolutions? The screen resolution used to be hard-wired at build time ◮ VESA driver configuration ◮ Background image of the matching size Solution 1. Detection heuristics in the VESA driver 2. Resolution-independent backdrop 3. Dynamic framebuffer mode updates Introducing a radically componentized GUI architecture 34

  35. Screen resolutions Demo Introducing a radically componentized GUI architecture 35

  36. Outline 1. Starting point 2. Ingredients 3. Challenges and solutions 4. Next steps Introducing a radically componentized GUI architecture 36

  37. Next steps Alternative window layouters and decorators Capability-based desktop environment Using Genode for day-to-day computing Introducing a radically componentized GUI architecture 37

  38. Thank you Genode OS Framework http://genode.org Genode Labs GmbH http://www.genode-labs.com Source code at GitHub http://github.com/genodelabs/genode Introducing a radically componentized GUI architecture 38

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend