D-Bus is powerful IPC Cockpit is heavily built around DBus. We send DBus over our WebSocket transport, and marshal them in JSON.
DBus is powerful, with lots of capabilities. Not all projects use all of these, but so many of these capabilities are what allow Cockpit to implement its UI.
- Method Call Transactions
- Object Oriented
- Efficient Signalling
- Properties and notifications
- Race free watching of entire Object trees for changes
- Broadcasting
- Discovery
- Introspection
- Policy
- Activation
- Synchronization
- Type-safe Marshalling
- Caller Credentials
- Security
- Debug Monitoring
- File Descriptor Passing
- Language agnostic
- Network transparency
- No trust required
- High-level error concept
- Adhoc type definitions
Lennart goes into these further in a kdbus talk, as well as some of the weaknesses of DBus.