KernelTrap has spoken with guru Jordan Hubbard, one of the creators of FreeBSD and currently a manager of Apple's Darwin project. With just a high school education, Jordan has offered some impressive contributions to the world of computing.
In this interview, Jordan talks about his current involvement with Darwin, as well as his past efforts with FreeBSD and 386BSD. He also reflects on his recent decision to step down from the core FreeBSD team. Read on for the full interview.
Jeremy Andrews: Please share a little about yourself and your background...
Jordan Hubbard: Well, I currently live in California's Santa Cruz mountains, but I'm originally from San Francisco, if you define where I'm "from" as where I grew up. I was actually born in Hawaii and I've also lived in various parts of the world at different times, so I've been pretty mobile throughout my life and am not particularly attached to any one area. I like it that way. :)
I'm 39 years old and have just a high school education since I worked after school as a programmer and eventually took my high school graduation test early so I could go into the industry full-time. I got my first "real job" writing accounting software in BASIC when I was 14, and once I got out of high school and had more hours available, I went on to doing inventory management software and word processing applications as well as system admin work and operations for the kinds of big computers which needed their own rooms.
Being hooked on Unix and various more esoteric operating systems, I was mostly a minicomputer and mainframe hacker who didn't actually touch a "PC" until the 486 came out and I could decently run BSD on it!
JA: What is your involvement with Apple's Darwin?
Jordan Hubbard: I manage the group at Apple which does all the official releases of Darwin and maintains the "Darwin piece" of Mac OS X, which is actually quite a bit of stuff. In addition to doing releases, we also work more or less constantly on converging common technologies in Darwin, FreeBSD and other reference open-source code bases and on making Darwin be as good a "Unix" as we possibly can.
JA: What comprises the "Darwin piece" of Mac OS X?
Jordan Hubbard: Pretty much everything you'd consider part of the "command line" environment, e.g. commands like ls(1) and groff(1), as well as the kernel and quite a number of the device drivers. Think of it as "everything below the GUI" and you have a pretty good handle on Darwin.
JA: How usable is Darwin without the rest of Mac OS X?
Jordan Hubbard: It can be used completely stand-alone on both the Power PC and x86 architectures. Just add the XFree86 package and whatever creature comforts you prefer (like KDE or fvwm) and you've got an OS which is reasonably equivalent to the other open source "Unix desktop" solutions out there.
JA: How similar is Darwin to FreeBSD?
Jordan Hubbard: From certain perspectives, they're quite similar. Not just on the "userland" side, as most people are aware, but also a lot of the networking code, the filesystem support code and several of the filesystems are shared with FreeBSD. From a device driver, microkernel vs macrokernel and power management standpoint, however, they're quite different. The security and authentication models are also significantly different. In some ways they're easy to compare and in others, very difficult.
JA: Does the Darwin project have some advantages over FreeBSD?
Jordan Hubbard: Well, frankly, I think Darwin actually has more freedom to innovate in certain respects since it's still fairly "young" as operating systems go, even though it's based on a lot of solid and well-proven technology, and it's going after a segment of the user community which FreeBSD has never really tried to address. This gives it a lot of drive to solve certain "hard problems" which I really don't think it would even be practical for FreeBSD to put resources into and also having a lot of full-time, paid staffers working on the code certainly helps when it comes to objectives which require a lot of highly skilled and focused attention for long periods of time. I really like both operating systems, however, so it's hard to talk about advantages and disadvantages when I see more of a unified BSD front which spans both the desktop and server spaces. :)
JA: Darwin was firsted released as open source in early 1999. How active has the non-Apple community been in developing and contributing to the Darwin code base?
Jordan Hubbard: It's been something of a ramp. It took a little time to convince people that Apple was serious about open-sourcing all that stuff and would continue to play in the open source space, something which it most definitely has done. There have also been some recent improvements to the open source development infrastructure, most recently seen with the launch of the OpenDarwin project, which will allow more people to contribute more easily. I can say that there have been a number of substantial contributions so far and that interest in both Darwin in Mac OS X has been really high in the Open Source and Unix communities, with both KDE and OpenOffice being recently ported, so things look really good.
JA: You were one of the founders of the FreeBSD project in 1993. I read a little about the early beginnings in the FreeBSD handbook, where you talk about FreeBSD starting as a patchkit to Bill Jolitz's 386BSD. How did you get involved with this project?
Jordan Hubbard: Well, at the time that 386BSD 0.0 came out, I was actually already running 4.3 BSD on my 486 as a "single server" personality on top of Mach 3.0 in the "true microkernel" mode, where messages are passed between the BSD server piece and the Mach piece and the address spaces were truly separate. I liked the architecture of this design quite a bit, but there were a number of performance issues with that approach too and the code I had was still AT&T licensed, I being one of those few people fortunate enough to work for a company which had an OS license and could run AT&T's stuff legally. That put a real damper on collaborating more openly with various folks on improving the bits, however, and when 386BSD 0.1 came out and I saw that it was actually both sort of vaguely usable and FREE, I jumped on it and never looked back. Naturally, now that we COULD collaborate, a number of us started doing so and we immediately began addressing all the problems we found, an effort which led to the 386BSD patchkit and the rest is basically history. I was one of the last couple of maintainers of the patchkit at the time when it became clear that we weren't going to be able to keep working with Bill, so we formed FreeBSD.
JA: In the FreeBSD handbook you say, "Bill Jolitz suddenly decided to
withdraw his sanction from the project without any clear indication of what would be done instead." Why did he do this?
Jordan Hubbard: Well, to be frank, I don't think any of us really understood Bill or how his somewhat byzantine mental processes worked. He was definitely a smart guy who was capable of banging out some difficult code, but he was also one of those people who, if he worked for your company, would be kept locked in a room with a workstation and fed on flat food like pizza and pita bread, anything which could be shoved under the door without having to unlock it. This was a real shame, actually, because I think between that and the silly lawsuit which BSDi managed to get into with AT&T over an 800 number, it effectively ceded the territory to Linux during a critical period in which there was a leadership vacuum and lots of Fear, Uncertainty and Doubt in the BSD community. We had all the right technical pieces and a terrific head-start, but we didn't have a sense of legal security or the kind of effective, universally-respected leadership which could have united the various BSD tribes during those difficult times and enabled them to ride out the storm without suffering too much damage to their morale or sense of purpose. A number of us emerged to pick up the pieces and move on to some pretty impressive achievements, but we also lost at least 2 very important and strategic years in trying to work with Bill and trying to convince people that AT&T wasn't about to squash BSD like a bug.
JA: What happened to 386BSD?
Jordan Hubbard: Frankly, I don't really know, it just seems to have died off without so much as a whimper. Perhaps Bill simply managed to chase off the last of his more ardent supporters and the project lost all of its momentum and sank. No man is an island, as they say, and that's never more true than it is with a really big software project which one perhaps cannot hope to develop or even manage alone. People skills are an essential ingredient in managing engineers and 386BSD's "leadership" just didn't have any to speak of, so it went the way of the Dodo.
JA: What led up to the choice of the FreeBSD license? Was there ever any consideration of using the GPL?
Jordan Hubbard: There was never any consideration of using the GPL. We liked the BSD license specifically because it's flexible, simple and short. It's easy for both engineers and lawyers to read and it achieves our ends, which is to limit our liability but still make the code available to as many people as possible and for any purpose. The GPL is not something we really considered to be a license so much as a political manifesto, and speaking purely for myself, I prefer to keep my license agreements and my politics separate. I feel that code which isn't being used in a situation where it COULD be used is code which isn't achieving its full potential and the GPL scares a lot of potential users away, which is simply counter-productive in my opinion. I don't care whether or not the users give their changes back to me, that's just an added bonus if it happens and nothing I'd want to try and enforce at the point of a gun.
JA: What have your rolls been in the FreeBSD project over the years?
Jordan Hubbard: Oh, lesse, I'm obviously one of the founders, but I've also been everything from a spokesperson, release engineer, programmer, system administrator (during a brief period when I slept next to the machine room), corporate evangelist and delivery boy (hauling around CDs) for the project. My philosophy has basically been to jump in wherever I've seen the greatest need, whether that was calling companies on the phone and pleading for driver support, evangelizing it at trade shows or writing an installation program to ease FreeBSD's adoption. I've pretty much done a little bit of everything over the last 9 years.
JA: How has FreeBSD development changed in the past decade?
Jordan Hubbard: Well, it's certainly gotten a lot bigger and more difficult to manage! I used to know everyone in the project more or less personally and we had fairly regular conference calls where all the key players could talk on the phone and hash things out. That's been more or less impossible to do for years now, and at this point we see one another largely at trade shows and other special events where there's a huge amount of administrative overhead just in putting together developer summits. I think the various folks who've worked on those have done an absolutely amazing job the last few years, but it's definitely a much bigger family now and I'm lucky if I know even 10% of the people involved at this point. That's just the price of progress, I guess!
JA: You recently announced that you are stepping down from the FreeBSD
core team. What led up to this decision?
Jordan Hubbard: I think my resignation letter pretty much said it all, but I think I can say that if there was anything which stands out above all else, it was simply a lack of time and energy. I've been working at Apple for about a year now and it's a very demanding job, though certainly a rewarding one, and I just don't have the kind of time to devote to FreeBSD that I once did. I also think that there's always a time and place to move on from something before it becomes stale and drained of all its joy, rather than sticking around and just becoming a nuisance, and I could feel myself starting to get a lot more short-tempered and impatient with people, which is never a good sign. FreeBSD's been doing great lately and I figured it was better to leave on a high note, and I also have a general feeling that us "old timers" do, in some ways, hold the FreeBSD project back from forging a new identity and adapting to the rather rapid changes that have occurred in the industry these last couple of years. It's the younger folks, with their fresh perspective, energy and enthusiasm that are FreeBSD's future so I say "rah rah!" to them and will do my part by getting the heck out of the way.
JA: Do you still plan to be involved in FreeBSD development?
Jordan Hubbard: I certainly hope so. I haven't found a new pet project yet, but I'm keeping my eyes open for something which gives me warm fuzzy feelings and, once I find something, will certainly get back into the kind of fiddling with code that I've always enjoyed the most as an engineer.
JA: What would it take for you to consider being part of the FreeBSD core
Jordan Hubbard: Woodoggies, that's a tough one. I guess I'd consider it again if several things happened, one being a general redefinition of what core is and is expected to be, and another being the general disintegration of core and another leadership vacuum. I'd feel pretty compelled to be part of an "interim government" in such a case if I were asked to play some kind of role in it, but I think I'd much rather simply hope that nothing like that happens and the new blood in core instead inspires FreeBSD to explore new directions and bring back a lot of the fun in working on it.
JA: Can you offer any insight into the future of FreeBSD?
Jordan Hubbard: Well, I think this is an interesting time for FreeBSD and pretty much all the other operating systems in its class. We've pretty much scaled all the smaller and more well-known mountains like "portability" and "security" and are now left with some of the taller and more foreboding peaks, like "clustering", "distributed filesystems" and "ubiquitous computing". That's not to say those mountains are particularly new, just that the existing solutions tend to leave a lot to be desired and I think that this is something where the BSD community could make a real difference if it wanted to, populated as it is with a lot of older and more experienced hackers who've seen all the traditional mistakes made over the last few decades and might be ready to take another stab at it. God knows we're all ready to have something better than NFS, for example, or that all those server farms out there could use better ways of managing, deploying and scaling applications across the various machines. I sometimes think that a lot of the best examples of how to solve these problems are in our own past, the 60's and 70's being something of a golden age for OS research, and we just need to go back and study some of those examples and figure out how to bring them up to date and complete that "last 10%" they never managed (because it would have taken 90% of the time, as the adage goes).
JA: Have you worked much with Linux?
Jordan Hubbard: To be frank, I can't say I have. This is honestly not due to prejudice, and I'm sure that any Linux distribution I might have installed in the last 10 years has made great strides since I last looked at it, I just haven't had the time.
JA: What do you enjoy doing when you're not working on your computer?
Jordan Hubbard: I'd have to say reading science fiction, browsing the net in search of interesting and/or esoteric information (google is my new best friend), driving my little sports car dangerously fast on the local mountain roads and, though not nearly often enough, going scuba diving and target shooting. I'm also really into aviation but I ran out of time and money before I got my single-engine certification and it's on my list of things to go back and finish, perhaps this year.
JA: I'm also a fan of science fiction. Have you any favorite authors or books?
Jordan Hubbard: I have a lot of favorites, but some of my favorite science fiction authors are Ray Bradbury (who's a god), Ian M Banks, David Brin and Vernor Vinge. I'm also partial to a lot of the works by Orson Scott Card, Poul Anderson, John Varley and Piers Anthony. I'm sure I've left a number of really good authors off this list too, those are just off the top of my head. On the non-science fiction front, I'm consistently amused by Terry Pratchett and Dave Barry, of course, and for a good alternative-history novel you can't beat Harry Turtledove.
JA: What tips and inspiration can you offer aspiring kernel hackers?
Jordan Hubbard: I would say Be Persistent and practice, practice, practice. Like playing music or repairing car engines, I'm afraid there's just no substitute for getting your hands dirty at every opportunity and practicing whenever you get the chance. There are no short-cuts, magic bullets or "dummies books" which can take the place of spending many many long hours staring at code or battering your sleepy mind senseless against a problem until it finally gives up and reveals the answer to you. I wish there were, especially when I've run out of coffee, but I'm afraid that's the only "inspiration" I can give which is also 100% true and honest.
JA: Is there anything else you'd like to add?
Jordan Hubbard: Yeah, always remember to have fun while you're doing it, too. There's really no other reason to sacrifice this kind of time and energy to anything in your life. :)
JA: What is it about your new job that's fun?
Jordan Hubbard: The work environment and the people I get to work with are certainly a real high point, but I think the coolest thing is being able to work on a really NICE desktop OS which doesn't make a bunch of horrible compromises to achieve user friendliness, like welding the hood shut as programmers like to describe working with Windows. There's a real Unix under there and on the desktop, I can blast Wintel PC users over the net in Return to Castle Wolfenstein! How much better than that does it get? :)
JA: Thank's for taking time out of your busy schedule to answer my questions. Your long-standing contributions are an inspiration!