Current Status
Development in 2022 and 2023 included:
- App Framework
- Reworking the applaunchd application enumeration and management daemon to use systemd units for applications instead of direct spawning. This enabled the original goal of using systemd sandboxing features for applications. As well, applaunchd was changed to start as unique user separate from root and agl-driver to improve security.
- Adding a gRPC API to applaunchd in addition to the original D-Bus API, with an eye to removing the D-Bus API as soon as all demo applications are converted to using it. At present, only the HTML5 demo applications remain to be converted.
- Adding a gRPC API version of the legacy application framework's radio binding.
- Reworking the legacy application framework's agl-service-hvac binding into a demo VIS client that uses the VSS HVAC signals instead of an AGL specific HVAC API.
- Reworking the legacy application framework's agl-service-audiomixer binding into a demo VIS client that uses the VSS master volume signal instead of an AGL specific mixer API. This is viewed as a stopgap until support for a gRPC version of the previous audiomixer API can be added.
- Adding SELinux support, but in non-enforcing mode in the demo builds.
Converted the HTML5 demo homescreen and launcher to using the applaunchd gRPC API and removing the D-Bus API from the applaunchd codebase
Updated the Flutter and HTML5 demo homescreen applications to use the latest agl-shell v4 features with respect to application start up and surface activation, matching the Qt demo homescreen features.
- Connectivity
- Upgrading KUKSA.val to 0.4.0 and upgraded to VSS 4.0
- Initial implementation of a gRPC version of the agl-compositor's agl-shell API.
- Upgraded to the KUKSA.val databroker. Created a Yocto mix-in layer to support the latest version of Rust on kirkstone.
Proposed Development Tasks
Development in 2024 is likely to be incremental. Proposed tasks:
(Updated May 1, 2024 with status)
- Create a repository to hold the shared AGL gRPC API definitions so that server and client implementations can source them from a common location. Some investigation will be required with respect to the most straightforward way of integrating this with the server and client implementations already in hand (e.g. integration with Meson) - Repo name agl-grpc-protos. Debating whether this is needed yet since we only have two protobuf files at this time. If we expand the number of protobuf files later we will re-assess.
- Investigate the effort required to define and implement gRPC APIs for the previous agl-service-bluetooth and agl-service-network bindings, with an eye to following through with implementing them if the effort seems reasonable. The end goal of this would be to enable development of a Flutter demo settings application and potentially enhancing the HTML5 demo settings application - Not started
- Investigate solutions for managing authorization tokens and potentially SSL certificates for VIS and/or gRPC. One option that needs to be considered is integrating use of systemd-auth to pass things to daemons and applications. - Not started
- Investigate enabling SELinux enforcing mode in the demo builds. - Not started
Related Connectivity EG tasks:
- Keep following upstream KUKSA.val development and upgrading AGL to the latest releases. - Quillback updated to KUKSA 0.4.2
- Update recipes for the split of upstream KUKSA git repos for Ricefish and bump to latest KUKSA (0.4.5 or later)