Oh Yeah? Fork You!

Well there’s a project I have been thinking on forking, along with some other developers. The risk of the original developers just merging our changes back is minimal: they don’t even apply patches people contribute, even if they are definitely improvements or bug fixes (not controversial features). They rot in the bug tracker for months. There is no way they would active look in our fork for “changes worth merging”.

Main roadblock is that it’s technically hard to fork. The client sends its version number to the server, and the server (based on that version number) may decide to reject the request, because it doesn’t support a certain feature (introduced in a later version). In a fork, we would have to keep the version number consistent with theirs, and there is no way in hell it would work if we add features in a different order.

Suppose they add A in 1.2, add B in 1.3, if we want to merge their B feature into our fork, what version number do we send to the server?! If we send 1.3 (to say we support B), servers requiring A will accept it, even though we don’t have A = bad. If we send 1.1 (to say we don’t support A), servers requiring B will reject it, even though we have B = bad.

It’s all LGPL, so we’re legally allowed to fork. But technically roadblocked.

@Jean: Huh? KDE/Gnome aren’t forks, they were both made from scratch.

“But, how can this be? I can’t browse the web without being poked in the eye by someone claiming Microsoft has a monopoly on desktop operating systems. When the barrier to entry is essentially zero (and take a look at that “fork” chart for an example), how could anyone make that claim with a straight face?”

I don’t know, because of this perhaps?

"Judge Jackson issued his findings of fact[11] on November 5, 1999, which stated that Microsoft’s dominance of the personal computer operating systems market constituted a monopoly, and that Microsoft had taken actions to crush threats to the monopoly, including Apple, Java, Netscape, Lotus Notes, Real Networks, Linux, and others."
http://en.wikipedia.org/wiki/United_States_v._Microsoft

A better example of a fork might be Mambo/Joomla.

About two years ago, the chief group of Mambo developers forked the Mambo code over issues of copyright and ownership. Thus, Joomla was born, and in a certain sense, has taken over from Mambo. About six months ago, Joomla started adding features that made it incompatible with Mambo. Developers and users now have to decide between the two projects.

Another example might be the KHTML/Webkit fork which now looks like Webkit will be completely replacing KHTML. Unlike the Mambo/Joomla fork, this one looks much more peaceful. All of the KHTML developers will start working on the Webkit project.

The Linux “forks” you showed are not true forks. They will all incorporate any change made in the Linux project (which is just the OS kernel). Most also incorporate almost all of the GNU project latest changes. Most also include various Apache projects, Subversion, and other mainline projects. Any changes in these projects are usually put back into the distro.

The big difference between distros is not so much in the base source code, but the packaging and compilation options. Some add a few programs to be more user friendly. Others are for backend servers. Differences between Red Hat and Fedora are fewer than between Vista Home Basic and Vista Premium.

The Distros with the major differences are ones that are for highly specialized products like cellphones and PDAs. These not only strip out unnecessary programs and protocols, but may include specialized drivers and code patches. However, even those don’t fork from Linux since they will include all changes made in the Linux core project.

I know this isn’t the point of the post but it would be interesting to see the percentage of the market each linux distribution has on that picture you have. I suspect alot of debian home users with ubuntu and so on but maybe alot of commercial users on redhat or similar.

Glad to see some branches end but no merges as of yet which is something that needs to happen to bring linux to the masses.

It’s interesting to look at some of the larger forks.

GCC and EGCS was probably the fork which affected the most people. This was a fork to change the development model of GCC to expand the pool of developers and encourage more involvement. The fork was run with an intent to merge it back to the main project when feasible, and as it happened, the forks rejoined and egcs became the next version of GCC, and the development model has stayed open and prolific.

X has a long history of forks like this. XFree86 was a fork of mainline X focusing attention on making it work well on x86 systems. Eventually, XFree86 was doing so well that new development predominately happened there and might be ported back to the mainline, but XFree86 was the proving ground where exciting new things were happening, and eventually became the reference implementation for the X Window System and was sponsored into X.org. Later, licensing debates and disagreements over the development model led X.org to fork XFree86 again, and x.org has become the reference implementation and is again more vibrant and lively than XFree86 had been in the later years.

Emacs and XEmacs, for instance, forked in 1992, making it the largest and longest lived fork I’m aware of. In this case, both have proved to be viable, and the competition was, in my opinion, useful. There was a bunch of experimentation on both sides, and features commonly moved back and forth. Merging the two code bases back in has not happened, because of differing design philosophies between the two forks and because the FSF insists on copyright assignments or licensing for any code it accepts into the project, and retroactively contacting all those who contributed to XEmacs is nigh impossible. In the past, it seemed XEmacs was the more vibrant, featureful, and popular implementation, but at this point it seems that Emacs has taken its place. Perhaps in the future we’ll see one take over.

My last example is TeX. It’s spawned a ton of different forks, from minor forks for specific operating systems, more major ones which became commercial products, to larger forks like PDFTeX and e-TeX. This one interest me because temporary forking has become the way TeX evolves. The culture has been one that highly emphasizes compatibility, and we’ve seen forks appear (while making it easy for users to keep their documents compatible with the mainline), experiment on features, and eventually forks merge into semi-official mainline implementations. For example, I think the most commonly used tex executable now installed combines the e-TeX and PDFTeX extensions.

In many ways, I think that forking is an essential part of the open source lifecycle, which helps breathe new life into projects if they have become moribund for some reason. I can’t think of any forks that have affected me that have really hurt the software… Emacs/XEmacs is probably the closest since it was a long running fork that caused a lot of extra work by developers to keep compatible, but I think Emacs was essential in pushing Emacs to keep evolving.

In closed source software a fork is more like “Write a competing product.” It’s more of an idea fork, really. I’ve been involved in one or two products like this. A good portion of the open source ecosystem derives from exactly this sort of fork (like, say, all of the gnu tools).

Forks can be healthy for the original project. If funpidgin survives, and creates a bunch of “out-there” features demanded by its users, some of those features will inevitably be considered good ideas by the pidgin team, and ported (perhaps as a plugin) into pidgin.

I think there’s a distinction between a ‘forking’ and a ‘wrapping’-- e.g, the various forks of TeX-- or, for that matter, of Linux-- generally contain a current and unrevised version of the base TeX or Linux kernel implementation. On the other hand, Emacs and XEmacs really are different programs and don’t (I think) currently have a common component.

FWIW, I think a similar thing is starting to happen in the Python community-- there are a number of ‘enhanced’ Python distributions out there (Enthought, Python(x,y), Sage) that cater to scientists and engineers who see a need for a different ‘batteries included’ distribution than do the Python core developers.

It isn’t really just that one interface issue; that particular problem is the proverbial straw that broke the camel’s back. The transition from GAIM to Pidgin has in general sucked for a few reasons :

  • They altered interface icons. Not a huge deal, and it is understandable, but many people have been irritated by this.

  • With GAIM, you had two checkboxes next to each account in your accounts list, one for “online” and one for “auto connect.” This made it very easy to have just a couple accounts that you could turn on after starting the program.

  • Disconnects stopped stealing focus with a popup window and replaced it with a button in the buddy list. The downside to this is that clicking the buttons (one for each connection that died) brings up a popup with three buttons; reconnect, change account info, and cancel. The most common use case here is to reconnect and they seemed to know that before. Basically, in GAIM, you could reconnect 5 accounts with one click. Now, those five accounts require 10 mouse clicks. Very annoying.

With Pidgin coming in and stinking up the place as it has, I wasn’t terribly shocked to see the Fun Pidgin fork. It is still very early in the game though, and I would seriously prefer to see the key Pidgin developers pull their collective heads out of their asses and realize that if the program isn’t for the users, it isn’t for anybody.

The Drupal community, thus far, has managed to avoid serious forking due in part to the massive inertia of the plugin developer community that surrounds it. Every year or so a handful of folks decide that they don’t like the direction it’s going (or they want it to go in another direction), and they announce a new fork. Other times, technical limitations and deadlines lead to the creation of ad-hoc special-purpose forks. Years back, a DrupalForBloggers fork was maintained for some time. Most of its features were rolled back into the main product eventually, and the author happily dusted his hands when the fork’s purpose for being vanished.

Case 5: both forks die.

Well, it hasn’t happened yet, but the Mambo/Joomla situation was one of the key reasons why we picked Drupal as the CMS for our site…

  • Roddy

“[Forking is] the very embodiment of freedom zero, and it’s an essential part of every open source license.”

Uh, Freedom Zero is (as you correctly point out in your earlier article) the ability to run the program for any purpose. This has nothing to do with forking. Forking is the very embodiment of Freedom 1: “The freedom to study how the program works, and adapt it to your needs.”

Actually, thinking about it, a public fork is more what you’re talking about, which is more like the embodiment of freedom 3.

Private forks are freedom 1.

Number of users (1,000) number of competent developers (20) number of skilled developers (7) number of skilled developers who are actually interested in the project (3) number of skilled developers who are actually interested in the project and have the time to do something about it (1).

Sadly, while to (skilled) developers I’m sure everything looks like a potential fork, to us – the unwashed masses of users – it is just an area that we have to put up with arrogant, annoying we-know-you-don’t developers.

Suggestions in a lot of places are taken as sacrilege nowadays, shrug.

There are SEVERAL Open Source billionairs, Eirik Chambe-Eng is one of them. Pidgin is a COMMUNITY project and there are no reasons NOT to fork it. If you started a fork of such a project (even Linux itself too) then you have the exact same financial incentives as the “owner” of the fork as the developers behind the original project. Not every project is like that :wink:
Think in terms of MySQL, Trolltech, Us (Gaiaware) and so on and you get the picture…
Those have no forks, even though there ones was a project threatening Qt on Windows. To such an extent that Trolltech themselves Dual Licensed also their Windows codebase. The reason is that it’s impossible to compete with a “pure” GPL version against someone able to sell licenses for the same product since they will end up having the financial muscles to run FAR faster than a pure “community project”. Trolltech e.g. has about 200 full time working developers on Qt, how can ANY community project ever compete with that for such a “narrow” piece of SW…?
But Open Source companies are a NEW thing, that’s true, and it might to some extent be HARDER to make money in FOSS companies than in proprietary companies. But that doesn’t mean the same as impossible. Also some of us have other incentives than to purely become billionairs ASAP. To be a billionair is easy, just start a career as a hitman, dictator in Africa or start robbing banks. The really hard part is becoming one while maintaining the integrity of your SOUL…
That’s where the FOSS business model really makes a difference.
If you take us for example, there are nothing separating us from a “normal SW company”. We’re selling licenses like everyone else. In fact by being Open Source too we get a lot more attention too which helps us doing marketing. Most “commercial users” gets to pay for a license for our product like every other product on this planet. The only difference is that we also happen to “serve the underserved” meaning people that for instance are not able to pay us or that want to create something for “free” or that just want to play around before they maybe purchase our product can still use our product. So either you pay us for a commercial license, or you obey by the rules of the GPL (which most commercial SW vendor does NOT want to do)
Anyway you contribute to us and the world by either giving us money so we can continue working on the code for our product or by giving the “world” a piece of working SW that is free as in freedom and helps us drive our marketing. Then the last group is the ones “stealing” SW and want to use “pirate versions”. Those are impossible to stop ANYWAY, though with GPL “threatening” to Open Up their entire codebase, I suspect it is actually LESS tempting than with some proprietary piece of junk completely closed down but never more than that it’s possible to run Reflector on it and force an opening anyway :wink:
Then the last “risk” is that some teenager actually learns something by studying your SW and starts competing with you and creates a superior product in which case the world evolves and everyone except (apparently) us are happy :wink:
PS!
Notice the apparently part in the last sentence…
There are more than money in this world you know, you bet that I am going to be rich on my company, heck I’ll SWIM in money in less than 10 years, but that doesn’t mean money is my priority number 1 :slight_smile:

If you don’t fork ideas (to improve them), then we have a problem. Think first intead. Also, the Linux kernel is “unique”, the distros are not (and a like the idea), Debian distro for servers, Ubuntu for common people. Think again: if IE is open source and we can fork the bad main implementation and improve it , so, i’m sure that we can have better browser, with a better support of standards. Think again if MS Windoze is open source, we can fork it and improve their bad security holes and performance.

At times, the more people fork, the better it is for non-open sourcers.

Sort of a do-it yourself “divide and conquer”.

So whats the opposite of a dictatorship?

Anarchy of course. Theres no way that the rats nest of linux distro’s pictured at the top will ever topple Bill or even result in one or two very strong competitors.

I like the concept of having lots of variety though. One can then poach the good idea’s from all the mutated strains and theoretically end up with a stronger product.

Colossal Squid -

Don’t you think it only fair to mention that…

“The D.C. Circuit Court of Appeals overturned Judge Jackson’s rulings against Microsoft. This was in part because the Appellate court had adopted a “drastically altered scope of liability” under which the Remedies could be taken, but also due to the embargoed interviews Judge Jackson had given to the news media while he was still hearing the case, in violation of the Code of Conduct for US Judges.[13] Judge Jackson did not attend the D.C. Circuit Court of Appeals hearing, in which the appeals court judges accused him of unethical conduct and determined he should have recused himself from the case.[14]”

So yes, Jackson said some stuff about Microsoft, it was appealed and thrown out.

"However, the appeals court did not overturn the findings of fact. The D.C. Circuit remanded the case for consideration of a proper remedy under a more limited scope of liability. Judge Colleen Kollar-Kotelly was chosen to hear the case.

The DOJ announced on September 6, 2001 that it was no longer seeking to break up Microsoft and would instead seek a lesser antitrust penalty."