Date: 2015-10-29
On October 18th 20 years ago the first commits to the OpenBSD project landed in the CVS repository. Today on the anniversary the beastie.pl team invites all readers to a series of interviews that our staff conducted with the project developers.
We continue with our twelfth interview - Stefan Sperling.
1. For the readers who don't know you, can you shortly introduce yourself?
I'm a software developer from Berlin. I'm 33 years old.
I'm currently self-employed, with a focus on open source development and consulting for companies interacting with open source projects.
Besides OpenBSD, I have been contributing to Apache Subversion since 2007. One of my main jobs is to provide support, workshops, and consulting for Subversion, plus fixing bugs and working on new features. I am somewhat involved in the Apache Software Foundation as a whole, but at this point in time my contributions there are more symbolic in nature, mostly because of lack of time and focus.
2. Why did you choose to run OpenBSD? How long have you been using it?
Back when I was in high school, a friend of mine, Uwe Stuehler from Berlin (uwe@) was already an OpenBSD developer. He made me vaguely aware of what OpenBSD was. At that time I was not doing any software development. I was making music with computers running Linux and happy enough with what I had.
Some years later an open culture conference (Wizard of OS) came to town. I volunteered to help out, and by chance got assigned to the cloak room together with someone who turned out to be Alexander von Gernler (grunk@). At the time grunk was running an official OpenBSD FTP mirror. While we were pushing coats and jackets of conference attendees around, grunk convinced me to give OpenBSD a try on my laptop, and walked me through my first install, using his FTP mirror.
Some time later the 3.9 release came out, with the "no binary blobs" scheme. This clicked with me, as I had been using binary blobs in Linux and FreeBSD but never felt comfortable doing so. I chose to use open source software because of the ideals it represents, so a system which draws a clear line by refusing binary blobs was a logical choice.
3. For those readers that still haven't joined the OpenBSD community, why should they try OpenBSD?
If you're curious, try it. Otherwise don't.
Being curious means that there is something about the project that attracts you. But a decision to use a particular OS is always about trade-offs, and as with any OS you might find aspects you don't like very much. In any case, you might learn something new, even if you don't end up using the system for a long time.
4. Is OpenBSD your daily driver at home & at work?
Yes. I use OpenBSD on all my daily driver machines. Most of the professional work I do does not require me to use anything else.
I do use Linux on some wireless routers that OpenBSD doesn't run on to provide public wireless access as part of Berlin's Freifunk project. But I don't trust them, and they're firewalled off like anything on the internet. My private wireless access points run OpenBSD, too.
5. How did you become an OpenBSD developer? What do you think is required in order to join the OpenBSD project as a developer?
The first patch of mine which got committed (by gwk@) added the piixpcb(4) driver for SpeedStep support with the Pentium 2 CPU in the Thinkpad X21. This was based on code from the same driver in NetBSD, and our own ichpcib(4) driver.
Two years later,during my final year as a student in Cork, Ireland, we were asked to pick from a list of projects or come up with a project of our own. The course was about computer networking, so I mailed a few OpenBSD developers involved in this area and proposed a couple of project ideas that looked interesting to me.
I ended up settling on ospf6d(8), which was already in the tree but not hooked to the build because it was in very early stages of development. claudio@ kindly agreed to mentor my work on this, and my professor Simon N. Foley (who was teaching IT security) liked the idea and gave me access to a lab full of old i386 and sparc machines. I built a test network out of those, studied OSPF RFCs, and spent a lot of time in the lab trying to get ospf6d working. During this time, Claudio asked Theo to give me an account so he would not have to commit many diffs for me. The project was a success, and ospfd6 was enabled in the OpenBSD 4.7 release.
6. Can you tell us about some OpenBSD-related areas you work on?
I've been involved in IPv6, locale support (especially UTF-8), and the wireless subsystem.
I've added support for some devices that came in machines I use, for instance Elantech touchpads in pms(4), the Realtek card reader driver rtsx(4), and some wireless devices, most recently rtwn(4). I am happily using my devices without relying on binary blobs in the kernel!
I also added the iwm(4) driver, based on code which was given to the OpenBSD project by the German company genua gmbh under a dual GPL/ISC licence. genua had hired Antii Kantee of NetBSD to develop the initial version of this driver for a product using OpenBSD 5.4. This is a bit of a bizarre story, because Antii developed the driver on NetBSD based on the iwlwifi driver in Linux, then ported it to OpenBSD 5.4, and later ported our forward-ported version from OpenBSD-current to NetBSD-current. Sounds confusing? It's confusing me, too :)
7. Do you have an idea of the time you spend working on the OpenBSD project?
Not as much as I would like to. But then, there are only so many hours in a day, and I am also involved in other projects, with Subversion taking another huge chunk of my time. And I also have some hobbies that don't involve computers, some of which keep me healthy which is rather important.
8. OpenBSD tends to lead in development best practices does it work the other way around? Is there a process improvement the project started or aims to adapt from the oustide world?
I think OpenBSD is getting by just fine using email and CVS. Note that the real action happens in email, not in CVS.
There are no development branches of the main line. Instead, the main line switches into release mode for a few weeks every 6 months.
This works for us because we're a fairly small team and don't need to scale up to large numbers like Linux kernel development. I don't think a code base with a strong focus on consistency like OpenBSD's could be maintained at that scale. If you don't believe me, go read some Linux wireless drivers, and then some OpenBSD ones, and you will see what I mean. Linux accepts device driver code written by vendors in styles entirely inconsistent with the rest of the code base. It seems Linux developers either don't care about that, or they have given up on consistency in favour of a high rate of development.
Some of our developers maintain private branches in git, and some of them would like better integration of their work flow with the project's main repository. Their needs could be supported much better, e.g. by having a canonical CVS to git conversion. But I don't believe it's a bad idea to force these developers to mail patches against the current CVS mainline just like everyone else does.
10. As a conclusion, can you tell us how you forecast OpenBSD's future? What's the next big challenge?
There's so many things going on it's hard to pin it all down to just one big challenge.
We are going to try to improve UTF-8 support this week at the u2k15 hackathon in Berlin. I'm excited to see how this will turn out. I expect that we'll be learning more about the problem rather than creating solutions, though. The details are tricky.
Like everyone, I am excited by the hypervisor mlarkin@ is cooking.
I also enjoy reading about all the work going into pledge(2) (formerly known as tame). But I did not have enough time yet to follow it in detail.
I am currently working on another wireless project, which is supported by genua gmbh. If everything goes as planned, it might make wireless go faster...