Deweloperzy OpenBSD: Stefan Sperling

Osiemnastego października dwadzieścia lat temu pierwszy commit wylądował w repozytorium CVS projektu OpenBSD. W rocznicę tego wydarzenia zespół beastie.pl zaprosił wszystkich czytelników do serii wywiadów przeprowadzonych przez nasz zespół z deweloperami projektu.

Dwunasty Stefan Sperling


On October 18th 20 years ago the first commits to the OpenBSD project landed in the CVS repository. On the anniversary the beastie.pl team invited 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…


1. Czy mógłbyś powiedzieć parę słów o sobie czytelnikom, którzy jeszcze Cię nie znają?

Jestem deweloperem oprogramowania z Berlina. Mam 33 lata.

Prowadzę swoją własną działalność nastawioną na rozwój oprogramowania open source oraz konsulting dla firm wchodzących w interakcje z projektami open source.

Poza OpenBSD pomagam w rozwijaniu Apache Subversion od 2007 roku. Moimi głównymi zajęciami są warsztaty, wsparcie i konsulting dla Subversion, do tego naprawa błędów i implementacja nowych funkcjonalności. Jestem poniekąd zaangażowany w Apache Software Foundation, jednakże mój dotychczasowy wkład był raczej symboliczny, głównie ze powodu braku czasu i skupienia.

2. Dlaczego wybrałeś OpenBSD? Jak długo korzystasz z tego systemu?

Kiedy byłem jeszcze w liceum mój kolega Uwe Stuehler z Berlina (uwe@) był już deweloperem OpenBSD. To on wstępnie zapoznał mnie z OpenBSD. Wówczas nie zajmowałem się programowaniem, tworzyłem muzykę przy użyciu komputerów pracujących pod kontrolą Linuksa i byłem wystarczająco zadowolony z takiej konfiguracji.

Kilka lat później konferencja dotycząca otwartej kultury (Wizard of OS) trafiła do mojego miasta. Zgłosiłem się na ochotnika, aby pomóc w organizacji, zostałem przydzielony do szatni razem z kimś, kim jak się później okazało był Alexander von Gernler (grunk@). W tamtym czasach grunk prowadził oficjalny mirror FTP projektu OpenBSD. W trakcie przerzucania kurtek i płaszczy grunk przekonał mnie do wypróbowania OpenBSD na moim laptopie, po czym przeprowadził mnie przez pierwszą własną instalację używając jego mirrora FTP.

Trochę czasu później pojawiło się wydanie 3.9 pozbawione „binarnych blobów”, co mi bardzo przypasowało, bo używałem binarnych blobów na Linuksie i FreeBSD, choć nigdy nie czułem się z tym dobrze. Wybrałem oprogramowanie open source ze względu na reprezentowane idee, więc system stawiający jasną linię, odrzucający binarne bloby, był dla mnie oczywistym wyborem.

3. Dlaczego czytelnicy, którzy jeszcze nie przyłączyli się do społeczności OpenBSD powinni tego spróbować?

Jeżeli jesteś ciekaw, to go wypróbuj lub nie.

Jeżeli cię to ciekawi, to znaczy, że coś cię do tego rojektu przyciąga. Decyzja o używaniu danego systemu operacyjnego zawsze wiąże się jednak z pewnymi stratami w niektórych obszarach, a zyskami w innych. Jak w każdym innym systemie znajdziesz tu aspekty, które ci się zbytnio nie spodobają. W każdym razie, masz szansę nauczyć się czegoś nowego, nawet jeśli nie zostaniesz przy tym systemie na długo.

4. Czy używasz OpenBSD jako głównego systemu w domu oraz w pracy?

Tak. Używam OpenBSD na wszystkich swoich maszynach. Większość mojej zawodowej pracy nie wymaga używania niczego więcej.

Używam Linuksa na niektórych routerach, gdzie OpenBSD nie działa, do obsługi bezprzewodowych sieci udostępnianych w ramach projektu Freifunk w Berlinie. Jednak im nie ufam, są za ścianą ognia, jak wszystko w internecie. Mój prywatny access point wifi działa pod kontrolą OpenBSD.

5. W jaki sposób zostałeś deweloperem OpenBSD? Co – Twoim zdaniem – jest potrzebne by zostać członkiem projektu w roli dewelopera?

Pierwszą moją łatką, która została zacommitowana (przez gwk@) było dodanie sterownika piixpcb(4) potrzebnego do wsparcia SpeedStep w procesorach Pentium 2 używanych przez Thinkpad X21. Była to zmiana oparta o taki sam sterownik dla NetBSD oraz o nasz istniejący sterownik ichpcib(4).

Dwa lata później, na ostatnim roku moich studiów w Cork w Irlandii, poproszono nas o wybranie projektu z listy lub o opracowanie własnego. Studia dotyczyły sieci komputerowych, więc wysłałem maila do kilku deweloperów OpenBSD z tego obszaru systemu i zaproponowałem kilka pomysłów na projekt, które wydawały mi się interesujące.

Wybrałem w końcu ospf6d(8), które już znalazło się w drzewie CVS, ale nie było jeszcze podpięte do budowania, ponieważ było w bardzo wczesnej fazie rozwoju. claudio@ był tak miły, ze zgodził się na mentorowanie tego projektu, a mojemu profesorowi Simonowi N. Foley’owi (który uczył bezpieczeństwa w informatyce) tak spodobał s ię ten pomysł, że udostępnił mi całe laboratorium pełne starszych komputerów i386 i maszyn sparc. Zbudowałem sieć z udostępnionych maszyn, uczyłem się z OSPF RFC oraz spędziłem masę czasu w laboratorium próbując doprowadzić ospf6d do działającego stanu. W tym czasie Claudio poprosił Theo o utworzenie konta dla mnie, by nie musiał commitować tak wiele łatek za mnie. Projekt zakończył się sukcesem, a ospfd6 zostało włączone w wydaniu 4.7 projektu OpenBSD.

6. Czy mógłbyś powiedzieć parę słów o obszarach Twojego zaangażowania w OpenBSD?

Byłem zaangażowany w IPv6, wsparcie dla locale (w szczególności UTF-8) i podsystem sieci bezprzewodowej.

Dodałem obsługę pewnych urządzeń, które były zawarte w używanych przeze mnie maszynach. Przykładowo: touchpady Elantech w pms(4), sterownik rtsx(4) do czytników kart Realtek i kilka sterowników do kart wifi, ostatnio rtwn(4). Na szczęście używam swoich urządzeń beż żadnych binarnych blobów w kernelu!

Dodałem ponadto sterownik iwm(4), oparty na kodzie, który został przekazany projektowi OpenBSD przez Niemiecką firmę genua gmbh na podwójnej licencji GPL/ISC. genua zatrudniła Antii Kantee z projektu NetBSD,  żeby opracował wstępną wersję tego sterownika dla produktu korzystającego z OpenBSD 5.4. To trochę dziwaczna historia, ponieważ Antii opracował sterownik na NetBSD bazując na kodzie ze sterownika iwlwifi w Linuksie, potem przeportował go do OpenBSD 5.4, a następnie przeportował naszą przeportowaną wersję z OpenBSD-current do NetBSD-current. Brzmi zawile? Dla mnie nadal jest to zagmatwane :)

7. Ile czasu zajmuje Ci praca przy projekcie OpenBSD?

Mniej niż bym tego chciał. Niestety dzień ma tylko 24 godziny, a ja jestem zaangażowany w wiele projektów. Samo Subversion zabiera sporo mojego czasu. Mam też kilka hobby nie związanych z komputerami, niektóre z nich utrzymują mnie w dobrej kondycji, co jest ważne.

8. OpenBSD zwykle przoduje w najlepszych praktykach deweloperskich. Czy działa to również w drugą stronę? Czy istnieją nowe praktyki, które projekt właśnie rozpoczął lub planuje zaadaptować z innych zewnętrznych projektów?

Myślę, że OpenBSD radzi sobie świetnie, używając tylko poczty i CVS. Zwróć uwagę na to, że prawdziwa akcja dzieje się poprzez pocztę, a nie w CVS.

Brakuje gałęzi rozwojowych, jest tylko główny nurt. Główny nurt przełącza się w tryb wydania raz na pół roku, to wszystko.

Taki model u nas się sprawdza, ponieważ jesteśmy małym zespołem i nie musimy skalować się do rozmiarów, jakich wymaga rozwijanie jądra systemu Linux. Nie wydaje mi się, by kod z tak silnym naciskiem na spójność, który kładzie OpenBSD, mógł być rozwijany w takiej skali. Jeżeli mi nie wierzysz, przeczytaj kilka sterowników wifi dla Linuksa, a następnie kilka dla OpenBSD, a zrozumiesz, co mam na myśli. Linux akceptuje sterowniki pisane przez producentów w stylu, który kompletnie odbiega od reszty kodu. Deweloperom Linuksa albo to nie przeszkadza, albo im na tym nie zależy, lub po prostu poddali się w zakresie spójności na rzecz szybszego tempa rozwoju.

Niektórzy z naszych deweloperów utrzymują prywatne gałęzie w git, część z nich preferowałaby lepszą integrację ich trybu pracy z głównym repozytorium projektu. Ich wymagania byłyby znacznie lepiej wspierane, jeśli oferowalibyśmy kanoniczną konwersję CVS do git. W przeciwieństwie do większości osób nie uważam za zły pomysł zmuszania deweloperów do wysyłania łatek opartych o bieżące drzewo rozwojowe CVS.

10. W ramach podsumowania, jak kreślisz przyszłość dla OpenBSD? Co jest kolejnym największym wyzwaniem?

Tak wiele rzeczy jest w toku, że ciężko wybrać jeden temat jako największe wyzwanie.

W trakcie hackathonu u2k15 w Berlinie będziemy starać się ulepszyć wsparcie dla UTF-8. Jestem podekscytowany oczekiwaniem na jego wyniki. Oczekuję, że więcej nauczymy się o samym problemie, niż utworzymy rozwiązań. Diabeł tkwi w szczegółach.

Jak wszyscy, jestem też podekscytowany hipernadrządzcą, jakiego mlarkin@ obecnie gotuje.

Lubię czytać o pracach wykonywanych przy nowym pledge(2) (wcześniej znanym jako tame), nie miałem jednak wystarczająco dużo czasu, by dokładnie śledzić te prace.

Obecnie pracuję nad kolejnym projektem związanym z wifi, wspieranym przez genua gmbh. Jeżeli wszystko pójdzie zgodnie z planem, to wifi będzie szybsze…

Skomentuj

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *