Forks vs. distributions: the Drupal example
Dries Buytaert, lead developer on Drupal, has written an insightful post on the difference between forking a project and different distributions of that project. As he notes, the differences can be subtle, but ultimately come down to the intentions behind the divergence, revealed in how much the fork/distribution relies on the original project's foundation for future development.
The distinction is critical in light of Oracle's fork of Red Hat Enterprise Linux: customers that buy into Oracle's support are effectively buying into a fork, and one that Oracle is ill-equipped to support.
But the distinction plays out every day in a myriad of different projects, and occasionally turns into a full-fledged fork, which tends to benefit no one (which is why it rarely happens in the community-minded open source world. Dries writes of Drupal:
It is important that Drupal distributions collaborate, and not compete. To do so, we have to provide Drupal distributions an environment that encourages collaboration, and that allows for specialization (such as custom documentation and support) without introducing incompatibilities that drive competition.In short, distributions are fine because they add value to the core. Forks are bad because they splinter communities and thereby fragment value, attenuating it until the point that either the fork dies or the originating project dies.
The good news is that we know how to do this. We've been through this already with CivicSpace (previously called "DeanSpace"), a Drupal distribution for online campaign management and grassroots activism.They were quick to realize that the success of the CivicSpace distribution depends on the success Drupal core, and vice versa. The decided they shouldn't fork core development. Instead, CivicSpace decided to do all its development on the drupal.org infrastructure, to synchronize releases, to submit all patches upstream, to centralize bug reports, and to share documentation where possible. Collaboration, not competition.
The bad news is that can be hard work. People will find that creating a distribution is fun and easy, but that being a responsible maintainer might be a lot less fun. Who wants to track changes, write documentation, maintain modules, provide upgrade paths, manage releases and provide support for years to come?
For this reason, I agree with Dries. What's true of Drupal is true of other open source communities. He writes:
As a community we should disapprove Drupal distributions that do not intend to collaborate, that have no signs of long term commitment, or that risk locking people in.Amen, Dries.
They were quick to realize that the success of the CivicSpace distribution depends on the success Drupal core, and vice versa. The decided they shouldn't fork core development. Instead, CivicSpace decided to do all its development on the drupal.org infrastructure, to synchronize releases, to submit all patches upstream, to centralize bug reports, and to share documentation where possible. Collaboration, not competition.
1 comments:
The ability to fork (incomplete list):
• is the ability to pass on the torch when originating project has gone stagnant and cannot be for some reason be resuscitated.
• can save a project that is going to die because it cannot manage its own internal forces. I think it is better to let the thing split naturally then to force it to explode.
• something that empowers the community. It’s a very interesting capability in the context of the commercial space. It gives the community leverage on its vendor it would never have in a traditional model.
Every case I can think of for needing to fork should rarely ever come up. Dries is entirely right. Forks should absolutely be avoided and regulated by the community. But that also means that the community can/should be behind a fork if it is the right thing to do. Distributions are a slippery slope but if it is managed and cared for as Dries points out then fine. The pipe dream I see in that -- is that each distribution will really focus on the vertical and not produce any incompatibilities. Not impossible per se but it wouldn’t be easy. Human nature and human egos are not easily defeated opponents.
If I were to build an ecosystem around a project today I would want the ability to fork as part of the system. I think it is as important to a healthy open source ecosystem as the right to vote is for our democracy. It insures a voice in the people. I might be inclined to wait for maturity to develop in the community and the product before introducing the capability. I think we need to recognize its’ [the ability to fork] place and utility -- and respect its consequences.
Post a Comment