"Bazaar" - how useful is the right to fork?

Compared with the days of his work on The Cathedral and the Bazaar, it's a shame to see Eric Raymond commenting in the media today; he seldom seems to get the point anymore, or maybe it's just that his ideas seem to be distorted under the glare of publicity.

He states in effect that the cornerstone of open-source is the right to fork. However for a project of any real size, this issue is bunkum. Forks of projects like Linux or OpenOffice.org are doomed to failure because of lack of momentum and contribution, and because they run the very real risk of falling out of touch with the standards that the original project supports. If a fork becomes non-interoperable with the main-line, a few core hackers may be happy with their independence but everyone else loses:

  • there are fewer effective core developers working on the project - their efforts are divided with each fork
  • the project is a less attractive platform to application software developers because they have to build and test for each fork
  • it is also less attractive to deployers because they run the risk of running a fork that falls out of favour and ceases to be supported
  • users lose confidence because they are presented with the difficult choice of choosing which fork to run; service and support offerings have to try to target variant versions

For the reasons above, forking must be the last resort, like weapons of mass destruction. The optimal path is to steer the main-line in the right direction, and this is exactly what the JCP or Mozilla.org's super-reviewer approach enables in a far more effective way than Linux's benevolent dictatorship with the right to petition Linus for desired changes.

And if Raymond is right that IBM really plan to release their own JRE and class libraries within a year (and is not merely himself the subject of smoke-blowing), then this is further evidence that the right to fork the source is secondary to the right to implement software according to a standard; standards enable interoperability, which means that software built against the standard preserves the momentum and importance of the platform, which is ultimately what benefits developers, deployers and users.

So what is the fundamental basis of the bazaar? I would argue that it is the common currency which enables trade, or the common standards which enable substitution as a basis for true competition.

Update: there are some comments coming in which I'd like to respond to.

  • I talk here about the right to fork, which is what Eric Raymond talked about in his response to Jonathan's comments (and which he retrospectively says is the core of the bazaar); I think that this right is often illusory and that exercising this right on larger projects is often destructive
  • The right to fork is useful (or even essential) for smaller (and a few rare medium sized) projects where there is a real possibility of useful innovation in a fork and a later re-merge
  • GNOME and KDE are not forks; each has a completely independent code base (aside from X11 and a few libraries); similarly Solaris and Linux are not forks
  • I definitely support the need for competition (see this for example)

J2SE does have some TCK's and it is based on the JRE which is completely specified, however I agree it is not trivial to create a 100% compatible clean-room implementation. I think it has also become easier for developers to contribute code (patches) to Java libraries (on Bug Parade) which avoids the need for a fork; I hope more people take advantage of this as a way to improve Java where you need it.

Comments:

"Forks of projects like Linux or OpenOffice.org are doomed to failure because of lack of momentum and contribution"

Yes, very probable, but sometimes not. Look at the gcc history - it was forked, then the developers merged bot branches back.

Recently, a huge project like FreeBSD is was forked - check http://www.dragonflybsd.org . This was because Matt Dillon wanted to do things that he couldn't have done in freebsd 5.

"there are fewer effective core developers working on the project - their efforts are divided with each fork"
Yes, that's true, efforts are divided. But sometimes, that is _good_, just look at KDE vs Gnome. The whole point of having two desktops in the linux world is that encourages _competition_, where a single project would not deliver so much progress, even if it has 3x the number of developers one of them has. "Monopoly" is bad, not only in bussines but also in software. Just look at Windows, do you think Windows 95 would have such success if there was a real competitor for it? Windows 95 didn't have multiuser, hell, it wasn't a real OS...they sold crappy OSes based in that plataform until Xp was released, 2001 year. Until linux, there was not real competition for them, there wasn't any other OS for "dumb users" (yes, there's apple, but apple seems to like to be a minority, they don't care about releasing mac os x for x86 and taking over the desktop world)

No matter how many developers you have, progress is what really matters, and forks encourage it just because it creates competition.

Of course forks must be avoided as much as possible, but there's a time where you can't avoid them. Just look at the XFree86 fork: it was neccesary, and now everybody is happy. Hell, even Sun ships Xorg, and the looking glass source is already in the x.org cvs.

Now, would have happened if the Xfree86 license was more restrictive and we wouldn't have the possibility of forking? We'd be stuck in xfree86 forever, and you can't just "change xfree86". People tried to fix xfree86 before forking xorg, forking is not fun...you named it, maintenance hell, diferent features in different code bases...

Don't get Raymond worng. What's wrong with Java is that it's controlled by "commitee" which sound just like the xfree comitee. Forking would NOT encourage "incompatibility" between java versions...if java were a _real_ standard (something is standard when ISO says it, not when sun says it - and software is _open_ when I can do things like forking it, not when swartchz says it BTW).
HTML, C#, C, C++....all of those have docens of implementations because they're a real standard. Yes, there's a lot of incompatibility between different projects, but AFAIK that happens even in Java in some cases. Perfection is not possible. If the java software would have been more open java would be much better than what we have now, just because it'd have created more competition. Just my humble opinion.

Posted by Diego on November 28, 2004 at 09:15 AM PST #

RMS didn't say that Java HAD to fork. You are a prime example of why Sun doesn't have a slightest clue about development communities or open source.

Posted by guest on November 28, 2004 at 05:26 PM PST #

Anonymous:

"Yes, that's true, efforts are divided. But sometimes, that is _good_, just look at KDE vs Gnome. The whole point of having two desktops in the linux world is that encourages _competition ... "

Thanks. You just made the argument for Sun's open sourcing Solaris rather than contributing Solaris technology to the Linux kernel.

"What's wrong with Java is that it's controlled by "commitee" ... "

Explain how this is "wrong" and being controlled by a single person (Torvalds) is "better" or "right". If a bazaar is better for development, how is a committee not better for management?

"something is standard when ISO says it ... "

Thanks. You just made the point Linux, or any open source software, is not a standard in and of itself (something IBM constantly claims).

By the way, ESR does not mention the right to fork, or the benefit of forking once in CATB.

Posted by Mark on November 28, 2004 at 08:39 PM PST #

...the right to fork the source is secondary to the right to implement software according to a standard...

But this right doesn't exist for Java. Where is the J2SE TCK? What is the deal with the "shared code"?

Posted by Wes Felter on November 29, 2004 at 03:21 AM PST #

"Thanks. You just made the argument for Sun's open sourcing Solaris rather than contributing Solaris technology to the Linux kernel."

Oh, I'm not against a open source Solaris. It'd be great to see Solaris vs linux 2.6 - Sun guys seem to benchmark only against RHEL 3.0 which is 2.4, which looks quite weird to me.

"Explain how this is "wrong" and being controlled by a single person (Torvalds) is "better" or "right". If a bazaar is better for development, how is a committee not better for management?"

Sorry, but the kernel is not "controlled" by Linus, anyone can fork linux, and saying that Linus is "controlled" by linus is quite weird since anyone can make suggestions and get things in the kernel just discussing with the rest of the community/maintainers without even talking with linus...
What is controlled by a "commitee" in Java is Java itself, the software implementation is a very different story. If Java it's so open why don't Sun gets it to the ECMA like Microsoft did with C#? Something doesn't match in my mind....

"Thanks. You just made the point Linux, or any open source software, is not a standard "
Linux is not a "standard", how it could be??. It implements standards however. I don't know what IBM marketing dept. spits out, and I don't care...

Posted by Diego on November 30, 2004 at 07:25 AM PST #

Post a Comment:
Comments are closed for this entry.
About

ColmSmyth

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today