Systemd is a de-facto standard process manager in all mainstream Linux distributions for almost a decade.
D-Bus is most widely used inter-process communication on a local host. It's used in many core apps on Linux Desktop.
Yet both systemd and D-Bus are undervalued.
Very often, programs that are only intended to run on Linux attempt to re-implement (with bugs) what systemd and D-Bus already provide
(for example: watchdog function, reliable process termination, notifying another program about some event, coordination between multiple processes).
The goal of this talk is to shift perspective on systemd and D-Bus (using concrete practical examples in Go),
and show how basic building block these systems provide can be re-used in software you write for modern Linux system.
This is an exploratory talk. Then intent is to look at systemd and D-Bus from a different angle.
Most of current tutorials about systemd focused on operating a service like apache, nginx or redis.
D-Bus tutorials are very abstract, basic and lack any concrete useful use-cases.
I plan to present few recent additions to systemd, such as portable services and resource control.
As well as re-introduce few existing concepts, like sd-notify, watchdogs and transient units.
On D-Bus I plan to show how to use bus abstraction and few neat features,
like passing file descriptors and receiving notifications.
The focus is on how to not re-invent things that systemd and D-Bus do much better.
Examples are given as a few simple Golang programs, with full source available on github.
The indented audience is anyone who write and operate Go code on Linux.
Preferred experience of the audience: basic knowledge of Linux and Golang, familiarity with systemd and D-Bus concepts would be useful as well.