MidnightBSD with Lucas Holt


MidnightBSD is around for more than 10 years, but still, the most of BSD users are not familiar with it. That's why we decided to have a quick chat with Lucas Holt, MidnightBSD's founder and lead developer. We will talk about how he got started and what he is working on right now. 

 
Lucas Holt is currently a Senior Application/Programmer Analyst - Team Lead at the University of Michigan. In his own words, MidnightBSD is a heavily modified version of FreeBSD 9.1 with a custom package manager, the sensors framework, ZFS, utilities from NetBSD, OpenBSD, DragonFly and MirBSD, and a good start on a desktop system.

Q: MidnightBSD is 10 years old. On your Google+ page you've written that the initial import to the src repo was on Sat Feb 25 02:29:52 2006 UTC, but that it actually started around December 2005. Do you remember details about those patches and what were the first things you did in your repo?

The initial patchset was around changing some behavior with rc.d to allow for fancier output, rebranding the operating system, and quite a few changes to the default kernel configuration.  At the time, I was trying to understand system startup from the loader to the end of the rc.d startup to understand where performance could be improved. I started bringing in some patches from DragonFly for rcorder and OpenBSD’s patched pdksh variant. Later, this was replaced with MirBSD Korn Shell. I was also trying to figure out what to do with the installer. sysinstall was very rough and hard to work on. I made modifications to enable powerd, ntpd and to enable ipfw by default.  

Most of the more recent BSD forks were started by experienced developers from other projects. In my case, I was just taking operating systems in college and had been tinkering quite a bit on my own. There was a lot to learn about the system and how everything worked.

Q: Did you have specific goals in mind that time?

The initial goal of the project was to create a desktop system with a similar look and feel to Mac OS X using GNUstep and related projects. The OS should be usable by casual computer users.

Q: How long did it take to learn stuff needed to create own distribution? Do you have any recommendations for people thinking about going similar way?

Learning how to work on MidnightBSD has been the most rewarding project I’ve ever done. It’s a constant process though. I am always learning about new things.  I think it took the most time to learn about the compiler setup and how to actually setup CVS at the time. A simple CVS repository is just a branch or two but setting up the project required learning about how vendor branches work, branch and tag creation, handling merges, etc. I didn’t know much about version control when I started. It was the first problem I had to concur. I think it took a month just to figure out how I wanted to setup the repository and how CVS worked. A better metric might be how long it took to create a first release from the time I started. Including time before I created the repo it was 21 months. 

You’re never going to be completely ready to start a project this size and it’s a lot more work than you think it will be, but there are benefits. My skills with BSD have helped me get jobs.  I’ve learned so much working with ports about how software builds and operates that I’ve been able to debug strange problems at work. Don’t be afraid to try building an open source project.  Even if you fail to gain widespread use of your software, you’ll still learn a great deal from the process.


Q: Right now you are putting a lot of effort towards mlogind (the login manager) and mport-manager (graphical package manager). What is their status and why should people look at them?

The project has shifted to focus on more user friendly desktop components. mlogind is relatively new and started as a fork of SLiM.  It’s under modest development and more to get it patched up better for multiple BSD systems. After trying recent versions of GDM, I couldn’t believe how resource hungry it has become and decided that a more customized login manager would help.  I hope to get other BSD projects interested in this project as there aren’t many BSD friendly login systems. It is currently available in mports for testing or via the github page. 


mport-manager is under active development. It’s our solution for graphical, user friendly, package management.  The long term plan for mport-manager is to combine the best ideas from traditional package management apps on Linux and App Stores.  Users can manage their installed packages and retrieve them from the central repository, but there would also be an opt-in login and user component that would let you rate applications, leave feedback and find apps based on other items you’ve rated or installed. Currently, the application supports the latest development version of MidnightBSD and allows users to install and uninstall applications, upgrade all packages on their system, and view a small bit of information about each package. The social features of the system are still in planning stages.

Q: I've noticed that you shared survey of graduate students in the Computer Science department at UM-Flint connected with software managers. Is this connected to mport-manager?  

Yes, I’m in grad school part time and have been working on a group project in a HCI course related to mport-manager. We’re trying to study the features folks use both in package management systems as well as app stores such as feedback systems, how users prefer to find software to install, and preferred user interface features.  

There are a few papers on system administration interfaces as well as app stores form mobile devices that were presented at SIGCHI in the past. A compelling argument was made in one paper about the confusing interface found in disk management for RAID systems. The author pointed out that these systems are often written with poor usability on the assumption that all system administrators will be able to figure it out, but that often leads to mistakes.  Reading the article got me thinking about how poor administrative interfaces are for installing and uninstalling software. Sometimes it’s just subtle terminology differences.  For example, in mport the upgrade command will update every package installed whereas update is used on a single package. Conversely, in FreeBSD’s pkg the update command will download a new index from remote repositories and upgrade can be used on a single package. Understanding what most users will look for both in terminology and functionality could make these systems easier to use.

Q: Are any of those students also working on code? And in general, what is the structure of MidnightBSD? Is there a core team? 

One of the students, Trey, has been helping with design decisions and with some testing. He’s still learning BSD.

MidnightBSD does not have a core team. Early in the project, we tried having developers vote on big issues.  It worked to some degree and influenced bringing in code from OpenBSD as well as some of the changes to our ports tree.  However, it also caused a lot of confrontation among developers and ultimately some left. I think the core team model works well when a project has matured and has a lot of developers. Despite the age of the project, we just don’t have enough staying power yet for that model.  What’s worked best for us is letting a developer own a subset of the system. We’ve had developers focus on mports, package manager, device drivers, and so on.  I run the project and individual developers make decisions on components of the system.  


Q: Are there any 'open positions'? I mean, some specific areas are that you are looking for help? 

Yes, like most open source projects we always could use more help.  Specifically, we’d love to see some kernel developers focusing on driver support or improving the linux emulation layer. Port maintainers are always welcome. 

Q: What is the best place for people to get in touch with you and the project?

Using the mailing lists, Twitter or Google+ MidnightBSD accounts. We also have a #midnightbsd chat room on Freenode, but it can be difficult for users in a different time zone to catch me.  

Thanks for the interview!
SHARE

Jan Hovancik

software developer - guitar player - poetry lover