BSD is dying, film at 10

If you read Slashdot on a regular basis, you'll know the troll who keeps claiming that BSD is dying. Admittedly he's rather quiet lately, and he doesn't even go to the trouble to update his claims: the text has been pretty much the same for a number of years. A better indication would be a survey like a recent Netcraft survey which showed that nearly two million active sites run FreeBSD.

Still, you'd think that the troll would have come up with something better recently, though: Matt Dillon, an ex-FreeBSD developer, announced a new BSD variant, DragonFly BSD.

Why? We already have so many BSDs: apart from the free FreeBSD, NetBSD and OpenBSD, there's Apple's Darwin, Wind River's BSD/OS, not to mention special purpose versions like PicoBSD, TinyBSD and TrustedBSD.

An obvious reason why Matt is starting his own project is that he is no longer on the FreeBSD project: he was expelled from it a few months ago. This is not the place to discuss the matter, but it should be clear that no such decision is clear-cut. Matt is a superb technician, and I have no doubt as to his technical ability.

Still, that sounds like a bad reason to start a “branch”. And it is. That's not Matt's intention, though. The FreeBSD project made some significant design decisions for release 5 of FreeBSD, and it's still not clear that the decisions are correct. Matt asserts that there are better solutions, and he may be right. What better way to find out than start a sub-project to address the issue? Whether he's right or wrong, the results will be beneficial.

What makes a project, anyway?

The birth of DragonFlyBSD gives us good reason to look at how the projects run. FreeBSD and NetBSD are now both over ten years old, and a lot of things have changed in that time. Initially it was just a group of people (“a cast of tens”) with the common objective of turning the code from the CSRG into a viable general purpose operating system. Even in those days, people had different objectives; as a result, not one but two projects came into being.

In the beginning, nobody thought of things like democracy or fairness: it was like a private club, where the most active people got together and decided the direction of the project. That's where the name “core team” or “core group” came from: they were simply the most active people.

I've already written about the early days of the free BSD projects. There were different things to do, things which were more obvious than they are now. It was easy for people to pick on a piece of work that needed to be done and do it. They could do it after work of a (presumably) less satisfying nature, and when it was done they could submit it back to the project. Little coordination was needed, little help was available, and almost by definition, if they finished the job, it was right.

As I mentioned in that article, times have changed. The result is that we need to spend more time coordinating what we're doing. We're doing so much of it that it's easy even for active project members to understand who does what, let alone why. In the FreeBSD core team recently we identified the need for describing the current state of the project, and the task fell to me. The rest of this article is a first attempt to make that definition. Don't take this version as definitive; in particular, it's my own take, and it hasn't been sanctioned by the FreeBSD core team. I'll update this article later with a pointer to the definitive URL.

The FreeBSD project

The FreeBSD project is currently run by seven distinct groups of people with overlapping membership: You'll notice that there are names like “Security Officer” which are really a team. This is an indication of the way things are growing. Many of these offices were once held by a single person; as things have grown, the single person hasn't been able to do the work by himself, and has become a team. You can expect this sort of thing to continue; for example, expect the Bugmeister to become a team.

Other groups

Apart from the groups mentioned above, a number of other groups of people influence the FreeBSD project:

Problems?

How well does this structure work? It's difficult to say, since it's changing all the time. Still, confusion is inevitable:

What should be fixed?

Many of the perceived problems with the organization of the FreeBSD project are due to misconceptions. Is there anything which isn't? An obvious case for discussion is the fact that the end users don't have any say in the running of the project. In fact, this puts them in a worse position than the customers of commercial software vendors, who (at least on paper) have rights based on their purchase of the software. Nobody purchases FreeBSD (the charges for CD-ROMs are for the media, not the software), so users don't have any rights worth mentioning.

Ethically, there is no problem with this approach. FreeBSD is developed by a group of people who do it for their own pleasure and give it away. The people who get it for free don't have any right to ask for special treatment. On the other hand, the success of FreeBSD is based on the success of the users, so it's in the project best interests to listen to the users. I suspect we're not doing enough of that, and it's not clear what mechanism would work best.

Then there's the question of employment. The FreeBSD project does not have any paid employees, but plenty of members of the project, including a large proportion of the members of the management groups, work on FreeBSD in their day job, and some are in a position to influence hiring decisions. These people might be thought to have a conflict of interest when in such decisions. In fact, I find it difficult to see any conflict of interest in such a case, but people who misunderstand the relationships might see things differently. This is one reason why it's very important to be clear about what authority such people are using. This article is a case in point: I'm a member of the FreeBSD core team, but this article is not an official FreeBSD core team statement. In a similar manner, people looking for employment shouldn't assume that membership of any FreeBSD group would change their chances in any way.

Back to the DragonFly

What does this have to do with DragonFlyBSD? One of the problems with the organization of the FreeBSD project is that it's not fun. The fun part is developing. When the projects get big, organization becomes more important. That's the part of the work that needs to be done so that people can have fun, but it's not fun in itself. DragonFlyBSD is small, so it doesn't need as much organization. Expect it to be more fun. Don't expect it to grow in size to become another FreeBSD, neither in its positive nor in its negative aspects.