Date: 2015-10-26

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