My Small Contribution to a Large Community Effort: Real-Time Linux

Peter Wurmsdobler
4 min readDec 7, 2024

--

Over the past decades GNU/Linux has evolved into a ubiquitous operating system used in many applications and industries, from embedded systems to cloud clusters; its real-time variant evolved alongside over more than 25 years. On the 20th September 2024, during an anniversary celebration in Vienna, the last and most important change, the Preempt-RT patch, was submitted to Linus Torvalds by Thomas Gleixner with a pull request in paper form, as a ball in gold foil and with a bow. The next day this pull request was submitted formally, and, as of the release of version 6.12 on the 25th November 2024, Linux became a real-time operating system. This story is about my small contribution to the effort of a large, international community in free an open source software development: my journey towards Real-Time Linux — first published in It is really time to celebrate!

Linus Torvalds receiving the gold-foil wrapped pull request by Thomas Gleixner. Photo by Pavel Pisa

While I was working on my PhD in control theory, MATLAB used to be the preferred tool for all my numerical issues; I even did my accounting in MATLAB. At that time I merely had a peak into C and proclaimed: I will never ever write software in such a language; I prefer the pristine world of simulation where deterministic timing of discrete time control systems is not a worry and always perfect. And if not, then The Mathwork’s Real-Time Workshop will oblige, or Nicholas McGuire who would implement my algorithms on a DSP. Soon I had to revisit my position.

After my PhD I moved to France where I had to build a machine controlled by a computer running MS-DOS, an Intel 486 based PC with a DAQ card. The machine’s system design was not an issue, nor the mechanical or the electronic design, but the control software was. Since there was no budget for The Mathwork’s fancy tools, I needed to find an alternative solution. Nicholas helped me exploring options, Linux, in particular Real-Time Linux; so I joined the RTL mailing list where I found people to be very helpful. Paolo Montegazza for instance engaged in a productive discussion on the software design using real-time threads, interrupt handlers and what not. At some point, however, he said: “Peter, I think now it is time to stop talking and start getting your hands into C programming.”

So I went to Paris, bought a book on C-programming, as well as books on operating systems, then installed SuSE and tried to understand more about Linux. To further my understanding, I travelled to Basel to see Tomek Motylewski and received a crash course on kernels, interrupt handlers and all the gory details of the PC architecture. After that I was ready to write some C programmes and kernel modules for my DAQ card; following a work visit from Tomek, I had a working solution with a user space program, a kernel module with a couple of RTLinux threads, some shared memory and an interrupt handler to churn out and record digital signals at a few kHz. this was the result of cooperation, support from a community and Nicholas (who remained my lifeline all along).

For me, having become a C programmer despite my initial reticence, there was only one snag: if my product depends on a flavour of real-time Linux, I need some sort of guarantee that the interface remains stable and supported as well as its performance deterministic. Yet, on the RTL mailing list there was so much division, and eternal discussion about the details which I neither understood nor cared much about. Therefore, Nicholas and I started talking about the urgent need for some kind of gathering that brings people together to reach some consensus and to define some stable programming interface. The only problem was the reservation in participation by potential candidates from the mailing list upon asking them in direct messages about their interest.

An incentive was needed and some seed money. I borrowed $10k from my father and offered some compensation for participant’s travel expenditure on a first-come-first-served basis. With a few people having taken the bait, names started to appear on the attendee’s list of the soon created web site; consequently more participants signed up for our first Real-Time Linux Workshop to be held in Vienna in 1999. Nicholas later got the money back through a government grant as his alter ego, Der.Herr@Hofr.at, a risky nod to Austrian’s imperial past (showing Austrian’s propensity for military, academic or aristocratic titles). We could repay my father in full after a successful seminal workshop.

Kick-off presentation of second RLTWS in Orlando, Floriada in 2000. Source: Linux Magazine

With all the support received from the real-time Linux community, I felt I would like to give something back. Since I was not able, or capable, to contribute much code to the kernel development myself, I have tried to help by organising workshops for a few years, the Real-Time Linux Workshop. I do hope that these workshops had an effect: first, it was lovely to meet people from the mailing list in person. Second, meeting in person helps deepening the sense of community and making the building of consensus easier. Last but not least, these workshops were at the beginning of the wider free and open source movement, the revenge of the nerds.

--

--

Peter Wurmsdobler
Peter Wurmsdobler

Written by Peter Wurmsdobler

Interested in sustainable mobility, renewable energy and regenerative agriculture as well as music and audio.

No responses yet