Architecturally, the decoupling works as follows:
Event -> Bus -> UI Subscriber -> Dialog (table)
Event -> Bus -> Log Subscriber -> Console (text)
Event -> Bus -> D-Bus Subscriber -> Relay -> D-Bus -> Publish (TCP/IP)
With D-Bus, published messages are versioned, allowing for API changes without breaking third-party consumers. The D-Bus Subscriber provides a layer of isolation between the application and the published messages so that the two can vary independently.