2021 March F2F
- 1.1 IVI EG and Production Ready Discussion
- 1.1.1 App Framework in IVI EG
- 1.1.1.1 Current App Framework in IVI
- 1.1.1.2 App framework: the good
- 1.1.1.3 App framework: the bad
- 1.1.1.4 App framework: the ugly
- 1.1.1.5 App framework: the ... good, again?
- 1.1.1.6 App framework: getting to good?
- 1.1.1.7 App framework: when will we be good?
- 1.1.1 App Framework in IVI EG
- 1.1 IVI EG and Production Ready Discussion
- 2 Virt-EG
IVI EG and Production Ready Discussion
App Framework in IVI EG
Automotive Grade Linux / Collabora
Daniel Stone <daniels@collabora.com>
What is the App Framework?
Why is the App Framework?
Current App Framework in IVI
App Framework developed by IoT.bzh
Developed for AGL IVI applications
Based on JSON + WebSockets
Communication separated between services in different
processes
Clients and services can be written in any language
Heavily integrated with SMACK
App framework: the good
Communication separated between services in different processes
Allows common authentication between security domains
Clients and services can be written in any language
Portable to multi-ECU solutions
App framework: the bad
Communication separated between services in different processes
... but is JSON + WebSockets the best transport mechanism?
IoT.bzh proposing to replace JSON with binary serialisation due to performance overhead
Not always the best signalling for every usecase
Allows common authentication between security domains
... but that authentication is heavily based on SMACK
Reliant on UNIX process model and privilege inheritance
Complex, difficult to get right
(to the point it’s a FAQ)
Still no support for WAM-like usecases
Clients and services can be written in any language
Few helpers and bindings for many languages
Lacks rich features compared to other IPC and RPC systems: deeper API integration (FFI, callbacks), service enumeration and discovery●
Portable to multi-ECU solutions
... but, SMACK
Enumeration and discovery also undefined
App framework: the ugly
Requires bespoke effort and binding for every language and app
No community support buy-in outside AGL-IVI & IoT.bzh
AGL app framework is not production ready (lacks features, performance, etc)
Toyota proposing to replace app framework (?) as part of PR effort
IC EG proposing to avoid IVI app framework
... a lot of effort for little help
App framework: the ... good, again?
AGL production-readiness model emphasises tier-1 needs
AGL IC effort has own clearly defined architecture
AGL IVI supposed to be ‘innovation’ area
New technology development
Emphasis on collaboration with upstream open community
Success stories: PipeWire, Wayland, etc
App framework: getting to good?
Restart from fundamentals, focus on base requirements
Activity, lifecycle, lifetime management of services
Authentication domains
Inter-service discovery, enumeration, connection (like Android intents and Binder, D-Bus, cloud services)
Restart from upstream OSS projects
Consider systemd sessions and scopes for lifecycle
Works with standard UNIX services
Works with modern container workloads e.g. CRI
Uses cgroups for isolation and separation
Monitoring process lifecycle, bidirectional notification
Reconsider authorization strategy
Investigate alternate authorization mechanisms not based on single LSM
Use of privileged sockets (as in Wayland privilege model), network namespaces, to differentiate different services
Alternate authorization mechanisms such as OAuth2/JWT or ephemeral certificates (as in Kubernetes) for remote services
Strongly reconsider IPC mechanisms
Most other IPC services (Binder, D-Bus, gRPC, others) already handle common problems
Authorization, performance, tracing: key considerations
Service enumeration and discovery: helpful addition on top of existing app FW
Investigate domain-specific solutions: like WirePlumber for audio, Wayland for window management, etc
Accept limitations of current resourcing and funding
We do not have enough engineering time to produce a complete app framework from scratch
AGL should be close to open upstream communities
Focus on the glue: reuse, improve, integrate, iterate!
App framework: when will we be good?
● Detailed time estimates for new app framework:
● ...
● Please discuss! :)
Virt-EG
Collaboration between Virt, IVI and IC EG's , gathering needs and requirements.