In a commercial environment it's easy to designate someone as the lead developer in a project and this person can be guaranteed to work on the project full-time. Even though FreeBSD does have an ``authority'' in place (the core team), it remains problematic to assign someone with the responsibility for something that they are ultimately working on in their spare time and utilizing their limited spare energy.A mere arbitrator/coordinator (a typical ``project management'' role) is not helpful unless that person is actually capable of significant technical decisions and even a significant part of the implementation. IMO one good, motivated, full-time developer is a significant step towards a project that will produce results, no matter how large the project. For free software, it is difficult to find people for such roles; motivated people with time and energy most likely prefer to work on ``build-from-scratch'' projects, since they are much more exciting than incremental, even if significant, improvements to existing projects.
David Beck wrote:
To my opinion the need for the project management is a direct consequence of the FreeBSD kernel architecture. I believe that a different design where each part of the system would be more independent could be of great help. One example is the microkernel architecture. I also believe that this could be even better with a more revolutionary approach.
That's an interesting idea, but it's obviously not practical at this stage. Any project manager must work within the constraints of the project. I also think that, while different source structure might simplify the problem, it won't remove it.
Mark Pickersgill wrote:
I'd agree with your comment regarding developers no longer being able to work on whatever and however they like. I have seen many open-source projects fall-over in an un-maintained heap simply because to fix things that someone else had done in an incorrect or bizzare way would require a fair amount of effort.I think the way in which FreeBSD (and many other open-source projects) needs to approach its development is to architect and aim the project in a direction that allows people to work on items of the project more separately.
There's no point in attempting to implement a new scheduler, if the resource of skills is high in the department of driver developers, and there's only a handful of people with the know-how of implementing a new scheduler.
So design and project goals would be picked, based on:
- agreement between interested parties
- the resources available
If there are agreed goals for which there is a shortage of skills, then perhaps:
is in order.
- scouting for help by making FreeBSD better known, or
- working on decoupling that section of the project from the rest (via re-architecting) to allow other goals to be carried out relatively un-hindered,
In short, I think FreeBSD may need to re-architect some aspects of the code/project, so that things are not as coupled. For example, if I have a piece of hardware, for which I want to write a driver for, I should be able to do so without needing to worry about the changes that joe-blow may make to the scheduler.
There's a lot of interesting stuff in this message, which I have already trimmed significantly for publication. Much of it, of course, is unattainable: one of the issues he didn't mention was that the core team and the project as a whole needs to buy off on these ideas, and I don't see that happening. Still, it's possible that some of these ideas could help.
As this article goes to press, voting has just started for the new elections. Twenty-four candidates are standing for nine positions. At least nobody can complain that there's a lack of interest: last time round there were only seventeen. Let's take a look at the issues surrounding the election.
Finally, it also bears noting that while being part of the FreeBSD project is many things, it should always be "fun" to at least some degree for its participants or there's really not much point in being involved.
A little over a week later, Mike Smith also resigned from the core team. While his resignation message was not made available outside the FreeBSD project, the subject line summed it up: ``It's not fun anymore''.
What does this mean? Should being on a core team be fun? Two years ago I observed that the BSDs are anarchies: nobody's in control. At the time, I stated that they seem to be working. Maybe that's changing.
An anarchy works when everybody is in agreement: you don't need an arbiter to make decisions. That's easy in a small group. You shouldn't need anybody in charge of a group of five people. By the time they get to be fifty, things aren't quite as easy, but with a bit of goodwill and mutual respect it can still work.
The trouble is that the FreeBSD team now has over 300 developers. Not everybody knows everybody, and there's a tendency to subgroup. That's what I see happening in the FreeBSD project at the moment. That can lead to tensions, of course, if there's nobody in charge.
There are obvious problems with this approach:
Why? Well, there are good and bad reasons. A good reason is ``ISA is evil. There are almost no ISA boards left worth using. Why burden yourself with it?''. A bad reason is ``I don't have any ISA boards any more, and I don't care about people who do. Let them write the code if they want it''.
Certainly I can relate to both of these reasons. The real issue, though, is: who should make the decision? It's my opinion that any such decision should be made by a group dedicated to the continuity of the project.
Imagine a company run only by the engineers. I've seen them. They didn't last very long. So if the FreeBSD project can survive in that manner, what's the big difference from a commercial company?
There are a number of obvious differences, of course, but I can't see any that makes it a good idea to have the engineers run the project. That's a historical carry-over from the days when the engineers were the project. But engineers don't always make good managers, and once management enters the scene, the rules change. Commercial interest isn't the key: size is. Volunteer associations face the same issues. I'm currently the secretary of the Australian UNIX User's Group, and we have as much of a formalized management as any company. Without it we couldn't survive. Even with it things aren't easy.
Given this background, I can see three basic future scenarios for the FreeBSD project:
Which is it going to be? I have no better idea than anybody else. More than ever before, I don't know where the project is going. We'll see in about a month's time.
I think that the issues we're seeing here have a direct relevance to the other BSDs. It happened in FreeBSD first because of the size of the developer community; we can expect to see similar issues in the NetBSD community when it reaches a similar size. OpenBSD may be an exception, however: the project is much more directly controlled by Theo de Raadt. Last time I checked, he had been responsible for over 30% of all commits to the OpenBSD tree, so he's also the obvious choice for management. But Theo's dominance of the project also limits the size it can become. Maybe OpenBSD will succeed as an example of the second alternative I mention above.