[RFC] `embedded-services v0.2.0 refactor`
I maintainer di solito rispondono entro 1 giorno
@tullom ci sta già lavorando.
Dal 27/1/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
RFC: embedded-services v0.2.0 refactor
Iterating on the lessons learned of our current architecture to refine bugs, reduce data races, and alleviate pain points within our current service architecture
Change Log
- 2026-01-27: Initial RFC created
Motivation
The current design of some of the services are tightly coupled, and this makes feature extension and testing expensive and brittle:
- Race conditions + deadlocks: Late‑subscribing patterns, static lists, and mutual service calls can drop messages or deadlock during boot or reset
- Overlapping command paths and implicit API design: Services can have multiple ways of advancing a state machine or enabling a feature, such as message passing via our comms layer IPC. These mechanisms solving the same problem differently, which can lead to duplication of logic and confusion on concretely what is advancing state
- Tight coupling via public statics: Static registries (intrusive lists and channels) block dependency injection, mocking, and unit tests. These should exist at the app level and our services should be generic upon them.
- Type-c/Power policy ID indirection: The type-c service has a concept of “controller/global/local port IDs”, which other subsystems (mainly power policy) must reason about that are not part of their domain
- Hardware variance baked into the subsystem: Supporting multiple PD hardware devices in embedded-services increases crate‑level complexity.
Goals
- Eliminate init race conditions and deadlocks by creating all Channel/Signal receivers before any sender is exposed, and removing late subscriptions.
- Replace static APIs & intrusive lists with explicit handles and trait‑based dependencies for extensibility and unit tests.
- Replace static intrusive lists in the service layer with statics constructed by the app layer and handed into service
init().
- Replace static intrusive lists in the service layer with statics constructed by the app layer and handed into service
- Unify calling paths for controller/port actions; reduce to one coherent API surface.
- Eliminate implicit API design by replacing messaging passing via IPC with direct async calls.
- Maintain feature parity
- Lingua principale
- Rust
- Stelle
- 23
- Fork
- 54
- Merge medio
- 6h 56m
- PR unite (30g)
- 8
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di OpenDevicePartnership/embedded-services
-
[mctp-rs] SmbusEspiMedium::serialize: bounds-check body_wire_len before truncating to byte_count: u8Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
OpenDevicePartnership/embedded-services#846 ·
I maintainer di solito rispondono entro 1 giorno
-
EC HidDevice implementation: ThermalForse già presa @williampMSFT l’ha presa 16 giorni fa. Aperta
OpenDevicePartnership/embedded-services#970 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
EC HidDevice implementation: BatteryForse già presa @williampMSFT l’ha presa 16 giorni fa. Aperta
OpenDevicePartnership/embedded-services#969 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
investigate proptest for hidForse di nuovo libera @williampMSFT l’ha presa 73 giorni fa e non c’è nessuna pull request aperta. Aperta
OpenDevicePartnership/embedded-services#937 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Investigate options for const implementation of HID relabelingForse di nuovo libera @williampMSFT l’ha presa 74 giorni fa e non c’è nessuna pull request aperta. Aperta
OpenDevicePartnership/embedded-services#934 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di OpenDevicePartnership/embedded-services
Issue simili
-
The book has a Nix install section that chelis.ch lacks, and it names two of the three systemsApertaarea:ecosystem documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
Chelis-Lang/chelis#3866 ·
I maintainer di solito rispondono entro 1 giorno
-
[安卓Feature]: 数字键盘左侧符号区域大小优化Apertaenhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
metasequoiaime/msime#8620 ·
I maintainer di solito rispondono entro 1 giorno
-
agent-detection macos p2 triaged
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
I maintainer di solito rispondono entro 1 giorno
-
bug documentation sev-0
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 1 giorno