So I was reading one of Jeff Atwood’s latest posts (I generally try to avoid the obligatory Coding Horror link, but I feel I should give credit where credit is due) and noticed something pretty amazing while reading one of his links. Someone’s forked Open Office(OOo). This is a big deal. Go-oo promises to be a “meritocracy” driven piece of software.
I’m not going to address the issue of whether or not this is a needed step. Indeed, there have been plenty of people who criticize Sun’s handling of OOo. But I personally don’t use OOo very much nor am I involved in its development process. Thus, I’d rather focus on what this means to the Open Source community and even the programming community as a whole.
Dinnerware and open source
For those of you who aren’t familiar with open source terminology, a fork is basically when a developer on an open source project says “I don’t like the way development on this software is proceeding. I’m just going to make my own version.” Usually, this causes some hurt feelings on all sides. But that’s not necessarily always the case. I’d classify forks into three categories:
The “I hate you fork” - This seems to be the most common kind of fork, and coincidentally is probably the most likely to fail. Essentially, this happens when one of the developers is fed up with the way a piece of software is developed and feels that it must be taken in a totally different direction. The classic example of this would probably be emacs vs xemacs.
The “I like you, but I want to take this a different direction” fork. This fork happens when someone wants to use existing open source software to build an entirely different piece of software. The best example of this would be debian vs ubuntu.
The “I like you, but can’t you just do x better?” This is a fork that happens when someone feels that a piece of software they like has one critical flaw that they feel they can fix. These tend to be the forks that are most likely to succeed, but not in the sense that they’re likely to stick around and get lots of people to download them. These forks are likely to be integrated back into their source at some point. The best example of these that I can think of is emacs vs EmacsW32.
Sometimes you have to kill software to love it
In the history of open ource software, Open Office has been one of the biggest players. I would put it right up there with Linux and Firefox. But the more time passes, the more OOo loses that distinction.
Let’s put this into perspective. Imagine if tomorrow, Microsoft Office were to become a stagnant piece of software with a totally fubared development process (I know, some of you will argue that this is already the case. Just bare with me and pretend that it’s just now happening). What would happen? Probably not much. It would take any competitor years to catch up with where Microsoft is today, and the only option would be to rewrite everything from the ground up.
I mean, could you imagine if one of the devs from the Office team decided to take the source code and make their own version? That dev would be sued blind. On the other hand, open source software presents a built-in solution: the fork. When a piece of software is broken and needs fixing that its own development team can’t or won’t make, something drastic has to happen or it will die. And in the case of Open Office, it sounds like something drastic is happening.
So what happens now?
The best thing that Sun can do is pick up on the changes that go-oo makes and do their best to integrate the project. Unless somebody at Sun completely drops the ball on this (which isn’t impossible mind you), there’s simply no way that they can fail. OOo has brand recognition that nobody short of Microsoft Office has. I see one of two things happening here:
- Sun completely ignores go-oo and in so doing, makes Open Office obsolete.
- Sun is proactive about picking up changes made by go-oo and in so doing makes it obsolete.
Hopefully Sun does what’s best for its software and chooses option 2. But I’m getting the distinct impression that there’s a high chance of #1 happening.