Deweloperzy OpenBSD: Brandon Mercer

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

Dziewiąty Brandon Mercer

On October 18th 20 years ago the first commits to the OpenBSD project landed in the CVS repository. On the anniversary the team invited all readers to a series of interviews that our staff conducted with the project developers.

We continue with our ninth interview – Brandon Mercer.


1. For the readers who don’t know you, can you shortly introduce yourself?

I’m a software developer by trade, mostly working in the backend application space though I have done a ton of web application development as well. I’ve been a part of the OpenBSD project for a few years now and I usually work on arm hardware support.

2. Why did you choose to run OpenBSD? How long have you been using it?

I really enjoyed the experience when I first tried OpenBSD. Someone suggested it to me because I said I was concerned about security. The installation was painless and what was being advertised in the documentation is what was there. I really have grown to appreciate accurate documentation. It’s a very good indicator of a projects overall health. If their guides are wrong, you can imaging how terrible the rest is. My first install was around 1999 when I was in college. At the time I was studying engineering, but my roommate was a computer science major so I had a ton of exposure to other stuff.
3. For those readers that still haven’t joined the OpenBSD community, why should they try OpenBSD?

OpenBSD is a great platform. Anyone not using it is doing themselves and injustice. I love that things just work as you’d expect and there aren’t a bunch of crazy things that need to be configured to get a system up and running. The defaults work and they make sense.

4. Is OpenBSD your daily driver at home & at work?

Yes, OpenBSD is the only thing I use at home with the exception of some android and chromeos things. I use it for normal end user stuff like browsing the web, watching youtube, or playing games. And it also makes the absolute best development platform.

At work we do use OpenBSD for some of our services, and I use it as my primary workstation. Oddly enough the other two developers have asked for shells on my workstation because they love the tools that are available to them that they don’t have in windows.
5. How did you become an OpenBSD developer? What do you think is required in order to join the OpenBSD project as a developer?

I was working on making OpenBSD run on a pandaboard, which is a small arm platform. At the time there was work being done to bring some other arm architectures up, so I collaborated a bit with the folks who were doing that. I spent a lot of time reading code to understand how things worked, and eventually got the pandaboard to boot far enough to print the copyright. A while after that I was invited to come to a general hackathon.

As far as becoming a developer, I think the biggest thing is that you need to listen to feedback carefully. Silence does not mean you’ve done something wrong, it just means people are very busy. Generally feedback will tell you if you’re close, or if you are way off the mark. Find something that interests you and work on it. It is also important to remain objective about things during communication. If someone challenges your idea, it’s not an attack. You need to defend your standpoint on the issue. Change for the sake of change is silly, but change that improves something is often worthwhile.

6. Can you tell us about some OpenBSD-related areas you work on?

Most of what I’ve done has been in the kernel for arm hardware support. The hardware for arm is very splintered in that you cannot build one single platform that supports „arm.” At the very best you might be able to support a single SoC family, and at the very least it might be a chip per port. Obviously this doesn’t scale well and it’s one of the reasons our arm support is lacking.

There are a few ports that I enjoy making use of that I try to maintain. Some teensy flashing tools and a font that allows my eyes to be at ease while I’m doing development.

7. Do you have an idea of the time you spend working on the OpenBSD project?

Not nearly enough. I might have an hour a night that I can spend testing something, or taking a look at a new thing. At work very little of my time can be spent on OpenBSD related work because the workload is high. Generally when I do sit down to write code or get something working it happens in a small 2 hour window.
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 do think OpenBSD is a leader in software development. I don’t see us doing anything revolutionary. It’s just a matter of doing what is right. There isn’t a scrum master, lounging underneath the waterfall however there are rules and guidelines that are adhered to. Sticking to the rules is important. Shooting from the hip gets too many people in trouble. The shortcut is the process.

9. It’s been a long 20 years of amazing releases. What are you most proud of and what would you like to revisit/redo?

It’s really hard to pin down just a single thing that I’m most proud of. The project has a lot of strengths that I benefit from daily. Perhaps if I were to pick a few they would be (in no particular order) OpenSSH, Documentation, and libressl. As far as revisiting things I’m not sure what I would change. Hindsight is always 20/20 so it’s not really fair to go back and say you’d never do that again.

10. As a conclusion, can you tell us how you forecast OpenBSD’s future? What’s the next big challenge?

OpenBSD has a great future. It will continue to be useful and solve problems for those who are wise enough to download a release and give it a shot.

As for the future, there are some really exciting things in the works for virtualization so that OpenBSD will have its own first class hypervisor. Generally I’m not too excited about virtualization from the standpoint of competing with commercial solutions. In this case the tools that are out there now are very complex. The amount of tooling around them is mind boggling. When you look at all the other things software vendors don’t get right about an operating system, how you can they be trusted to build a virtualization layer on top of it? Anyhow, it will be really nice to be able to fire up some virtual machines on my laptop that I can test builds or experimental designs on, or setup a cluster of things to test some networking configuration.

Speaking of networking, there are some other really exciting things in the works for the network stack. I’m excited to see what unfolds with pf, and with wireless. We’ve already seen some great benefits on various network drivers from getting fine grained locking.

As for challenges, I think we all hope that funding for the project will continue to grow and be more predictable. We all need to be supporting OpenBSD financially on a recurring basis. The project needs money to keep working, and money helps fund big advancements.


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

Zawodowo rozwijam oprogramowanie. Pracuję głównie w obszarze backendu, wykonawałem też sporo pracy przy tworzeniu stron internetowych. Jestem częścią projektu OpenBSD już od kilku lat, zasadniczo zajmuję się nad wsparciem dla platformy ARM.

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

Pierwsze doświadczenia z OpenBSD wspominam naprawdę dobrze. Ktoś polecił mi ten system, ponieważ powiedziałem, że martwię się o bezpieczeństwo. Instalacja była bezbolesna, a to co było reklamowane w dokumentacji faktycznie istniało w systemie. Naprawdę zacząłem doceniać dokładną dokumentację. Jest ona bardzo dobrym wskaźnikiem ogólnego stanu zdrowia danego projektu. Jeśli przewodnik jest błędny, to możesz sobie wyobrazić, jak okropna musi być reszta. Pierwszy raz zainstalowałem ten system w 1999 roku, jeszcze w college’u. Wtedy studiowałem inżynierię, ale mój współlokator kończył informatykę, więc miałem sporo styczności z tymi tematami.

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

OpenBSD jest świetną platformą. Każdy, kto jej nie używa, sam robi sobie krzywdę. Uwielbiam to, że wszystko działa zgodnie z oczekiwaniami i nie trzeba wykonywać jakiejś szalonej konfiguracji, aby system zwyczajnie działał. Domyślne ustawienia zdają egzamin i mają sens.

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

Tak. OpenBSD jest jedynym systemem, którego używam w domu, za wyjątkiem urządzeń z Androidem i ChromeOS. Używam go do normalnych zadań, takich jak przeglądanie stron w sieci web, oglądanie YouTube lub granie w gry. Jest to także absolutnie najlepsza platforma do rozwoju oprogramowania.

W pracy niektóre z naszych usług używają OpenBSD, a ja używam go jako mojej stacji roboczej. Śmieszne, ale dwóch innych deweloperów poprosiło mnie o konta shell na mojej stacji, ponieważ uwielbiają dostępne na niej narzędzia, których oni nie mają na Windowsie.

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

Pracowałem nad uruchomieniem OpenBSD na pandaboard, takiej małej platformie ARM. Trwały wówczas prace nad dodaniem wsparcia dla kilku innych architektur ARM, współpracowałem zatem z osobami, które to robiły. Spędzałem sporo czasu przy czytaniu kodu celem zrozumienia jego działania i w końcu poprowadziłem wsparcie dla pandaboard na tyle, by system się uruchomił i wyświetlił informacje o licencji. Chwilę potem zostałem zaproszony na generalny hackathon.

Jeżeli chodzi o samo zostanie deweloperem – myślę, że najważniejsze jest uważne wsłuchiwanie się w informację zwrotną. Cisza nie oznacza, że zrobiłeś coś źle; sygnalizuje tylko, że ludzie są mocno zajęci. Ogólnie – informacja zwrotna podpowie ci czy jesteś blisko celu czy daleko. Znajdź coś, co cię interesuje i popracuj nad tym. Ważne jest również, by pozostać obiektywnym w trakcie komunikacji. Jeżeli ktoś kwestionuje twój pomysł, to nie jest atak. Musisz nauczyć się argumentować swoje decyzje. Sama w sobie zmiana jest głupia, lecz zmiana, która cokolwiek poprawi – przeważnie jest warta zachodu.

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

Większość mojej pracy dotyczyła wsparcia dla sprzętu ARM w kernelu. Sprzęt dla ARM jest tak zróżnicowany, że nie można zbudować w systemie jednej platformy, która wspiera wszystkie „ARM”. W najlepszym wypadku, uda ci się wspierać jedną rodzinę SoC, co może dotyczyć również specyficznego czipu i portu. Taka sytuacja nie skaluje się zbyt dobrze, co sprawia, że nasze wsparcie dla ARM nie jest najlepsze.

Jest kilka portów, których lubię używać, więc staram się je serwisować. Kilka narzędzi do flashowania płytek teensy oraz czcionka, która pozwala moim oczom odpoczywać w trakcie programowania.

7. Ile czasu zajmuje Ci praca przy projekcie OpenBSD?

Za mało. W nocy jestem w stanie znaleźć godzinę, którą uda mi się spędzić na przetestowaniu czegoś lub zapoznania się z czymś nowym. W pracy niewiele mojego czasu mogę poświęcić OpenBSD, ponieważ jesteśmy dość zajęci. Generalnie, jeżeli siadam do pisania odrobiny kodu lub zachcę sprawić by cokolwiek zaczęło działać, to pracę tę wykonywanuję w małych 2 godzinnych okienkach.

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?

Uważam, że OpenBSD wiedzie w rozwoju oprogramowania. Nie uważam, że robimy coś rewolucyjnego. To po prostu kwestia wykonywania tego, co słuszne. Nie mamy scrum mastera wypoczywającego nad wodospadem, jednak są zasady i wskazówki, których się mocno trzymamy. Postępowanie według tych zasad jest bardzo ważne. Strzelanie z biodra wpędza zbyt wiele osób w tarapaty. Skrót jest procesem.

9. To już długie 20 lat wspaniałych wydań. Z czego jesteś najbardziej dumny oraz do czego chciałbyś ponownie zajrzeć/zrobić inaczej?

Ciężko wskazać dokładnie jedną rzecz, z której jestem najbardziej dumny. Projekt ma wiele silnych stron, a ja czerpię z tego korzyści każdego dnia. Jeżeli miałbym wybrać kilka, to (w losowej kolejności) OpenSSH, dokumentacja i LibreSSL. Trudno powiedzieć, co chciałbym ponownie odwiedzić lub zmienić. Znając przyszłość nie fair jest mówić, że nie zrobiło by się czegoś w ten sam sposób.

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

OpenBSD ma wspaniałą przyszłość. Pozostanie użytecznym systemem do rozwiązywania problemów, dla tych na tyle mądrych, aby pobrać wydanie i go spróbować.

Jeśli chodzi o przyszłość, obecnie jestw toku kilka bardzo ekscytujących rzeczy związanych z wirtualizacją, OpenBSD też będzie miał niedługo swojego własnego hipernadrządzcę pierwszej klasy. Generalnie nie jestem zbyt podeksctowany wirtualizacją jako sposobem konkurowania z komercjalnymi rozwiązaniami. W tym zakresie, narzędzia dostępne obecnie na rynku są bardzo złożone. Ilość narzędzi zbudowanych wokół tych rozwiązań jest powalająca. Jeżeli popatrzymy na ilość problemów, które są niepoprawnie rozwiązywane przez dostawców oprogramowania, czy można ślepo ufać warstwie wirtualizacji zbudowanej na nim? W każdym razie, przyjemnie będzie odpalić kilka wirtualnych maszyn na moim laptopie, gdy będę chciał przetestować kilka kompilacji lub eksperymentalnych zmian, albo skonfigurować klaster sieciowy, aby testować różne konfiguracje sieciowe.

Skoro już mówimy o sieciach, jest kilka innych bardzo interesujących zmian w stosie sieciowym. Jestem podekscytowany tym, co pokaże się w pf oraz  w sieciach bezprzewodowych, już zanotowaliśmy spore zyski z drobiazgowego blokowania zasobów w różnych sterownikach sieciowych.

Skoro mówimy o wyzwaniach – myślę, że każdy z nas ma nadzieję na stały wzrost finansów projektu oraz na to, że staną się one bardziej przewidywalne. Potrzebujemy regularnego wsparcia finansowego dla projektu OpenBSD. Projekt potrzebuje pieniędzy, aby funkcjonować, a pieniądze pomagają osiągać wyższe cele.


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