Uplift your Linux systems programming skills with systemd and D-Bus Practical examples and best pra…
Channel: FOSDEM
Date: 2020-11-19

Uplift your Linux systems programming skills with systemd and D-Bus Practical examples and best practices on how to leverage systemd and D-Bus in Go
by Leonid Vasilyev

At: FOSDEM 2020
https://video.fosdem.org/2020/UB2.252A/golinux.webm

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 ❮a href="https://github.com/lvsl/fosdem-2020-go-dbus-systemd"❯github❮/a❯.


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.

Room: UB2.252A (Lameere)
Scheduled start: 2020-02-02 13:30:00