I would like to make it very clear that I have had no intention of defamation. I am criticizing his approach, not his person. In fact, I find him quite an agreeable person when he's not in GPL-bashing mode. On a previous occasion I referred to his approaches without mentioning his name, and he became very upset about that, so I agreed to mention his name if I referred to him again. And of course he is welcome to submit an article explaining his point of view.
I found that the event was not as successful as previous BSDCons. It would be unfair to blame USENIX for this: things have changed a lot in the last year, and we've seen much less activity at other conferences as well. In addition, of course, the novelty is beginning to wear off. This is the fourth BSDCon I've been to, and people are getting used to them, so for example there were fewer photos taken and published on the web than on previous occasions.
From my point of view, I found the subsequent FreeBSD kernel summit to be the most interesting part of the conference: increasingly, we're getting a lot of FreeBSD hackers together to discuss the direction of the project. This time we had about 30 people crammed into a room which had been intended for far fewer. It was well organized, and we got through our material on time. It did, however, highlight a problem that is becoming increasingly important: how do we organize the project?
WARNING * WARNING * WARNING =========================== Do not even test-boot 386BSD from floppy with a hard disk present on the system if you do not want to risk trashing your hard disk! If 386BSD crashes, it may write a core dump on your hard disk!
At that time, there was plenty of work for all volunteers to do just to make it into a system reliable enough to be an alternative to commercial software. There are a lot of stories to tell about how that happened, and how the NetBSD and FreeBSD projects arose as a result, but I would guess that the systems passed the Microsoft ``Windows'' reliability threshold in 1994 or 1995.
At that time, I didn't have very much to do with the free versions of BSD. I had paid my money, I had a product which I thought was very good, and which definitely didn't overwrite my disks on the rare occasions when it panicked. I came to FreeBSD by another channel: I was porting software to Novell's UnixWare, and I needed a US publisher. I finally came to Walnut Creek CDROM, who had supported FreeBSD right from the beginning. That's how I became involved with the FreeBSD project. I installed FreeBSD and played around with it, and I installed it on some customer sites where they didn't want the expense of BSD/386, but I didn't really use it much myself.
That had to change in 1995, when Walnut Creek asked me to write a book about FreeBSD. To my surprise, by that time it was no longer clear that FreeBSD was any worse than BSD/OS, as BSD/386 was now called. In the course of time, I stopped using BSD/OS altogether--I didn't even install the last update I received. FreeBSD had made it.
Now look at the new bus code. That looks pretty simple, really: if you only have an ISA bus, what do you care if somebody commits software for PCMCIA?
To a certain extent, you don't. But rewriting the bus code to support multiple buses also affects the ISA code. There could be a number of cases where code introduced to support PCMCIA will also affect the ISA code. Even if you, as a user, don't have any problems, the device driver writers will. The interfaces change, and typically people like writing code more than documenting it, so it can be a frustrating experience just to find out how to modify your existing driver, or how to write a new driver.
Rewriting the SMP code is the most invasive of all. It affects everything in the system. You can't write kernel code without being affected. In August 2000 I wrote:
For some time, I have had a theory that the open source model works well for small projects, but it is not optimal for really big undertakings. Even before the Mindcraft incident I had decided that getting good SMP support for BSD would be a proof of this theory.
As I went on to describe, help came from an unexpected quarter: BSDi gave us alpha-quality SMP code, and we got it working pretty quickly. That didn't solve the problem, of course, it just gave us the framework in which we could develop the new software.
All that changes radically with projects like the SMPng project. Just about anything anybody does will have an effect on the other developers. Under these circumstances, the ``go it alone'' approach doesn't work well. We've seen the results already in the project: the initial set of locking primitives (which the project tenaciously insists on calling mutexes) were not adequate for the desires of some of the developers, so they introduced their own favourite constructs. It didn't take at all long before rules (not just documentation) had to be introduced to describe how synchronization should be done.
I don't know the answer to this one. As I said over two years ago, this issue may be the one which changes the shape of our projects for ever. My best bet is that some commercial entity developing BSD takes over the project and supplies the management; but that would probably involve an independent development which would be put back into the project on completion.
I'd be interested in feedback on what other people think about these issues. In a certain sense, we're treading new ground. As always, the time ahead will be interesting.