Blogs

RedMonk

Skip to content

Forking, The Future of Open Source, and Github

I cannot help you with your question, sir, for I do not understand it. It is a wrong question, sir.” – Susanna Clarke, Jonathan Strange & Mr. Norrell

Being what I should have replied to Mike Milinkovich last week, but didn’t think to. But let me back up.

Last Wednesday, at the kind invitation of the folks from Eclipse, I had the opportunity to sit with more august company – Justin Erenkrantz (Apache), Mårten Mickos (Eucalyptus), and Jason van Zyl (Maven/Sonatype) – on a panel charged with debating the future of open source. Among the questions posed to us was this: is the future of open source going to be based on communities such as Apache and Eclipse or will it be based on companies that sell open source?

My reply? Neither. It’s Github.

Intending no disrespect to either category, of course. Communities such as Apache, Eclipse and Mozilla are and will remain massive centers of gravity for open source projects. And commercial vendors – yes, even those that dare practice “open core” – will continue to inject revenue into the larger open source ecosystem, underwriting substantial portions of the costs of producing free and open source software as Justin said. But when we talk about foundations and vendors jointly and the mechanics of open source, what we’re really talking about is the past and the present. Not the future.

Foundations and vendors, irrespective of whether or not they’ve transitioned from centralized to decentralized version control systems, are essentially command and control development models. Developers, corporations and other contributors build towards a single project in a defined hierarchy, which a given potential contributor may or may not have the right to commit to. This single project is then either procured directly, or more typically consumed downstream via a community (e.g. Debian, Fedora) or commercial distribution (e.g. RHEL, Cloudera, etc). In terms of its development paradigm, open source development happens to look a lot like proprietary development. It just happens to occur in the open. The future, meanwhile, is almost certainly going to look different than the present. In part because the tooling encourages it.

We’ve been tracking decentralized version control tools for four or five years now. Three years ago, I was openly perplexed about the continuing lack of interest in the subject. In retrospect, however, the slow ascendancy of distributed version control systems (DVCS) should have been predicted. Not because we’re usually ahead of the curve when it comes to adoption; I’ve been waiting for NoSQL for five years. The lag in DVCS adoption should have been anticipated rather because it takes people – even (especially?) the really smart ones – to come around to the idea of decentralization. Witness Joel’s conversion:

I studied, and studied, and finally figured something out. Which I want to share with you.

With distributed version control, the distributed part is actually not the most interesting part.

The interesting part is that these systems think in terms of changes, not in terms of versions.

That’s a very zen-like thing to say, I know. Traditional version control thinks: OK, I have version 1. And now I have version 2. And now I have version 3.

And distributed version control thinks, I had nothing. And then I got these changes. And then I got these other changes.

It’s a different Program Model, so the user model has to change.

In Subversion, you might think, “bring my version up to date with the main version” or “go back to the previous version.”

In Mercurial, you think, “get me Jacob’s change set” or “let’s just forget that change set.”

If you come at Mercurial with a Subversion mindset, things will almost work, but when they don’t, you’ll be confused, unhappy, and unsuccessful, and you’ll hate Mercurial.

Whereas if you free your mind and reimagine version control, and grok the zen of the difference between thinking about managing the versions vs. thinking about managing the changes, you’ll become enlightened and happy and realize that this is the way version control was meant to work.

When we concluded that version control systems such as Git or Mercurial would become popular, if not the default, we had had no such epiphanies, no similar flashes of insight. It was simply brute force observation: whatever the reasoning, more and more developers, projects and firms were transitioning away from centralized to decentralized. And happier for it. The trendline was clear, which is why we weren’t exactly going out on a limb predicting the ascension of Git, Mercurial and their brethren.

What was less obvious was the profound, outsized impact decentralized version control would have on the future of open source, and thus development in general.

Open source development traditionally has been, for better and for worse, a social activity. With the accelerating adoption of tools like hosted Git, it’s even more so. Why? As counterintuitive as it might seem, the ability to fork.

Forking has historically an option of last resort; how developers proceed when all other remedies are exhausted. First because it’s potentially damaging to the originating project, but more because it’s a significant logistical challenge. As Brian Aker put it:

Forking software over small changes is for the most part unviable because of the cost of keeping a fork of the software up to date, but it is not impossible.

What if the costs of forking became negligible, for the originating project and those who wish to fork a project? What if tools such as decentralized version control made it possible to work on projects not in centralized check-in, check-out fashion, but individually?

As Brian discussed at OSCON back in 2008, all of a sudden forks become trivial; both to execute, and potentially to reintegrate. On Github, forking is quite literally pushbutton. In terms of their ability to permit greater creativity, forks cease being a cancer and become a cure. Sometimes, anyway. Because while it’s simple to fork, it’s not much harder to reintegrate. Losing the shackles of centralized development accelerates development and increases creativity. Add in a centrally hosted network model, and everything from discovery to social features become possible. As jwz once said, “these days, almost all software is social software.” Why should version control be any different?

The future to me, then, looks a lot more like Github than it does a foundation or vendor. It is becoming the breeding ground for thousands of innovations that may aspire to grow up to be full fledged foundation projects, commercial products, or both. So much so that a number of people, like Phil Wilson, worry about what would happen if Github went away. As they should: look at some of the projects hosted there.

Because while Github will never replace the foundations, let alone the vendors, it will increasingly become the foundations upon which many of their component projects are built. If you haven’t been paying attention to the service, then, I’d suggest giving it a look. It’s the shape of things to come.

Disclosure: Apache and Eclipse are RedMonk customers; Github and Mozilla are not.

by-sa

Related posts:

  1. The Future of Open Data Looks Like…Github?
  2. Open Source and the Future of Network Applications
  3. Distributed Source Code Management – Niche or Trend?: The Q&A
  4. Systems Integration and the Open Source Opportunity
  5. “Hybrid” Source, MySQL, and the Economics of Open Source

Categories: Application Development, Open Source, Social Software, Version Control.

Tags: , , , , ,

  • http://twitter.com/Ryan_Singer Ryan_Singer

    tecosystems » Forking, The Future of Open Source, and Github http://goo.gl/NMrh

    This comment was originally posted on Twitter

  • http://stephesblog.blogs.com Stephen Walli

    Brilliant observations. A question: In your experience/observations do projects that live in DVCS environments tend to have better supporting build/test automation/recipes? The point of config mgmt is “do I know what software is in that executable unit” which was a little more complex than just what versions of what collections of modules. Verifying the build would seem to be almost more important in such a malleable world. Or am I completely missing the point?

  • http://twitter.com/stephenrwalli stephenrwalli

    Brilliant! RT @Ryan_Singer: @sogrady » Forking, The Future of Open Source, and Github http://goo.gl/NMrh

    This comment was originally posted on Twitter

  • http://twitter.com/russdanner russdanner

    Forking, the future of open souirce? http://bit.ly/bSP8Al RT Redmonk

    This comment was originally posted on Twitter

  • http://jimvanfleet.com/ Jim Van Fleet

    We build the future together, big or small. Here’s a tale of mine regarding forking: http://someguysblog.com/2010/02/13/leitmotif/ It even includes a comment from my mom!

  • Danno

    I agree with this in theory, but I think in practice, you’re still going to find that fairly strong project guidance will continue being important because even for Open Source, just throwing features on top isn’t that helpful and maintaining core architecture of any sophisticated component requires vision and control.

    Real, TRUE forks off of a project and into an honest to god separate project are still going to be divisive. The complimentary ones where a couple people button down and work on something are going to be much easier, but there’s always going to be the matter of pushing commits back to the master.

  • http://twitter.com/krishnan krishnan

    The Future of Open Source is Github. A great take by @sogrady http://bit.ly/aCGCx7 #opensource

    This comment was originally posted on Twitter

  • http://twitter.com/FOSSwiki FOSSwiki

    The Future of Open Source is Github. A great take by @sogrady http://bit.ly/aCGCx7 #opensource http://bit.ly/bJpxa5

    This comment was originally posted on Twitter

  • http://twitter.com/ketchup71 ketchup71

    Github as future of SW development: http://bit.ly/cZgPPZ (can’t find the original tweet, sorry)

    This comment was originally posted on Twitter

  • http://twitter.com/brianaker brianaker

    Two paragraphs into an article I think “Hell yeah!”, only to realize I am quoted in the fifth paragraph. http://tinyurl.com/yas2wka

    This comment was originally posted on Twitter

  • http://krow.net/ Brian Aker

    Hi!

    I don’t think companies have even started to understand the model that software development is moving toward. Keeping vendor versions should now be much simpler then in the past, but I am hoping that more companies feel that it is easier to contribute back as well. I look at what has happened in the postgres world, and I wonder if the companies around that project will now feel that it is an easier path to get their code back in.

    On a related note there was a recent phone call that O’Reilly put together with a number of open source leads. It was amazing to hear how many folks on the call where terrified of how github has lowered the bar for forking. Their fear being a loss of patches. It was crazy to listen too.

    And thanks for quoting me!

    Cheers,
    -Brian

  • Rahul Sundaram

    What if Github went away question can be answered in a different way. Don’t use GitHub. Use Gitorosis http://gitorious.org/. The source code is under AGPLv3 and you can host your own private instance if you want that. No reliance on proprietary infrastructure.

  • http://twitter.com/kevmoo kevmoo

    Why Distributed Source Code Management (Git, GitHub) is sooo important http://j.mp/95WAsj – via @BryanJacobson6

    This comment was originally posted on Twitter

  • http://twitter.com/hntweets hntweets

    Forking, The Future of Open Source, and Github: http://bit.ly/ab59Ve Comments: http://bit.ly/bnYrzs

    This comment was originally posted on Twitter

  • http://twitter.com/hkrnws hkrnws

    Forking, The Future of Open Source, and Github http://bit.ly/aVOF8j

    This comment was originally posted on Twitter

  • http://twitter.com/tm_interesting tm_interesting

    Forking, The Future of Open Source, and Github http://redmonk.com/sogrady/2010/04/01/github/

    This comment was originally posted on Twitter

  • http://twitter.com/techlunatick techlunatick

    Forking, The Future of Open Source, and Github http://dlvr.it/PyCl

    This comment was originally posted on Twitter

  • http://twitter.com/Technojobz Technojobz

    Forking, The Future of Open Source, and Github http://dlvr.it/PyCp

    This comment was originally posted on Twitter

  • http://twitter.com/vipees vipees

    Forking, The Future of Open Source, and Github http://dlvr.it/PyCn

    This comment was originally posted on Twitter

  • http://twitter.com/kicauan kicauan

    Forking, The Future of Open Source, and Github – http://su.pr/6HiuJs

    This comment was originally posted on Twitter

  • http://twitter.com/eranshir eranshir

    On the impact of decentralized version control and the future as github: http://redmonk.com/sogrady/2010/04/01/github/ – like a domino train

    This comment was originally posted on Twitter

  • http://twitter.com/hosheng hosheng

    Future of Open Source, Foundations vs. Companies? Neither says author. It is Github: http://redmonk.com/sogrady/2010/04/01/github/

    This comment was originally posted on Twitter

  • http://twitter.com/lpdahito lpdahito

    Forking, The Future of Open Source, and Github http://j.mp/bQXxEF #development #git

    This comment was originally posted on Twitter

  • http://news.ycombinator.com/user?id=blasdel blasdel

    About the only thing the Apache Software Foundation can lend your project is their imprimatur of enterpriseyness."Nobody ever got fired for buying IBM", and the ASF practically is IBM!

    This comment was originally posted on Hacker News

  • http://news.ycombinator.com/user?id=blasdel blasdel

    About the only useful thing the Apache Software Foundation can lend your project is their imprimatur of enterpriseyness, though that comes with a lot of bureaucracy to back it up."Nobody ever got fired for buying IBM", and the ASF practically is IBM!

    This comment was originally posted on Hacker News

  • http://twitter.com/tek_news tek_news

    HNews: Forking, The Future of Open Source, and Github http://bit.ly/df016v

    This comment was originally posted on Twitter

  • http://news.ycombinator.com/user?id=njharman njharman

    "Fork" is a poor choice of verb for what I think he is describing/dvcs/github allows. More like experimental branch this dudes gonna do his thing on and if it’s good we’ll absorb it into the "main" project. Which, btw, has been going on forever, git[hub] just makes it easier.A Fork means there’s irreconcilable differences and the dev base is splitting into 2-3 camps, old mainline, new forkers, people who leave in disgust over lack of coop.

    This comment was originally posted on Hacker News

  • http://news.ycombinator.com/user?id=omouse omouse

    Wow. Are you seriously complaining about that? One day someone’s bitching that open source is for commies and can’t make you any money and then another someone’s complaining that the open source companies that do make money are TOO enterprisey!

    This comment was originally posted on Hacker News

  • http://twitter.com/rgaidot rgaidot

    why dscm is important http://bit.ly/bSP8Al #dscm #git #mercurial

    This comment was originally posted on Twitter

  • http://news.ycombinator.com/user?id=rlpb rlpb

    You can’t just mix and match patches automatically. Someone has to resolve merge conflicts. There is a cost to this: developer time.Distributed version control systems are being so successful because they allow developers to more easily do what they have been doing all along anyway (take Linus’ job, for example).

    I don’t think there is a major paradigm shift here; just a revolution in tooling. There will still always be a main line. That main line will not be "distributed", even if the way that changesets get there might be.

    Most of us will only be using releases taken from the main line. Forks will carry on happening from time to time, but just like now most will work to avoid them because of the inefficiencies that result.

    This comment was originally posted on Hacker News

  • http://news.ycombinator.com/user?id=JulianMorrison JulianMorrison

    Sure, it used to mean that, in the days of CVS.But a github-style fork is a fully independent project in theory, it could go anywhere. It doesn’t have to reintegrate. It might out-speed the main project and come to replace it. It might change emphasis and shoot off on a tangent.

    It’s not really the same thing as having a copy of the source and making some private changes.

    This comment was originally posted on Hacker News

  • http://news.ycombinator.com/user?id=samdk samdk

    ‘Fork’ isn’t his choice of word. On github, a fork is just your version of someone else’s repository.

    This comment was originally posted on Hacker News

  • http://twitter.com/capotribu capotribu

    “Forking, The Future of Open Source, and Github” http://bit.ly/95WAsj < very nice

    This comment was originally posted on Twitter

  • http://news.ycombinator.com/user?id=steve19 steve19

    For me it has been a revolution. No language, framework or concept has changed my development process more in the past decade.I have been able to contribute patches (both code and documentation) to many projects where I otherwise would have not had the time or energy to bother contributing.

    Sure, my previous attitude may have been selfish, but if it took an hour to fix a bug in a library that I am using for a throwaway script, I am not going to spend another hour subscribing to mailing lists, emailing developers and then persuading them that my patch is worth merging.

    In GitHub I just fork, push my patch, and notify the owner of the original repo. If he chooses to pull in the patch, that is his problem. If anyone else who is having the same problem wants to use my repo, they can do so.

    This comment was originally posted on Hacker News

  • http://news.ycombinator.com/user?id=schacon schacon

    "fork" is what we use to describe a user-branch of a project, where another user has write access to their own fork of the project. other dvcs hosts use the term ‘fork’ to describe this as well, such as BitBucket and MicroSofts CodePlex. Google Code has a similar concept but they call them ‘clone’s. I think many people now consider "fork" a good thing, not an irreconcilable branch of the codebase.

    This comment was originally posted on Hacker News

  • http://news.ycombinator.com/user?id=durin42 durin42

    Practically, that’s just not workable long term. Ideally, you want to keep using more or less the same library as everyone else, otherwise versioning becomes even more of a nightmare than it already is.

    This comment was originally posted on Hacker News

  • http://news.ycombinator.com/user?id=rlpb rlpb

    I agree with you – my experience has been the same. In the past you’d have had to work out a patch by hand and then perhaps publish it somewhere, which was a pain to do and so didn’t happen often.Now the tools have improved making this much easier and so is happening much more everywhere. I have personal branches of the Linux kernel and a dozen or more libraries, _and_ can keep them up to date easily.

    But the process remains the same. Your fork is no doubt invaluable to you, but unless the original maintainer pulls your patch, your fork is likely to be a dead end in terms of development – except perhaps for the odd person who needs to fix the same bug and finds your patch.

    My point is that the development model has not changed. The maintainer can still optionally pull in your patch, or not. Most users will continue using the maintainer’s releases. If the maintainer drops the ball then there will be a fork – but that would have happened in the past anyway.

    Distributed version control _has_ been a revolution – but a revolution in tooling, not of the centralised release model.

    This comment was originally posted on Hacker News

  • http://news.ycombinator.com/user?id=rlpb rlpb

    I agree with you – my experience has been the same. In the past you’d have had to work out a patch by hand and then perhaps publish it somewhere, which was a pain to do and so didn’t happen often.Now the tools have improved making this much easier and so is happening much more everywhere. I have personal branches of the Linux kernel and a dozen or more libraries, and can keep them up to date easily.

    But the process remains the same. Your fork is no doubt invaluable to you, but unless the original maintainer pulls your patch, your fork is likely to be a dead end in terms of development – except perhaps for the odd person who needs to fix the same bug and finds your patch.

    My point is that the development model has not changed. The maintainer can still optionally pull in your patch, or not. Most users will continue using the maintainer’s releases. If the maintainer drops the ball then there will be a fork – but that would have happened in the past anyway.

    Distributed version control has been a revolution – but a revolution in tooling, not of the centralised release model.

    This comment was originally posted on Hacker News

  • Patrick

    I think DVCSs are important, but you are missing a very important aspect of sharing open source software–once I (as an interested outsider) have the source code downloaded, I need to actually build it, run it, examine it, debug it, and deploy my own version of it. DVCSs don’t solve any of these issues. In the Java/JVM world, I’m finding myself extremely grateful when an FOSS project publishes a Maven POM for their project, because I can point my IDE at the POM and immediately build, run, examine and deploy that app or library. This is a big deal and an enormous time-saver. Custom build processes, project directory layouts, build artifact content all make getting involved with an FOSS project a hassle, and I say this after simply losing my enthusiasm for that extra effort after many, many years of just diving in and trying to work with someone else’s code. I think the “future” may include, for those who use IDEs (or even VIM/Emacs) pointing our tools at the project URL, launching a process which downloads and sets up everything I need so that, yes, I can fork and branch, but that I can also build and work on the thing.

    Note I’m not arguing that Maven is the solution, but rather that there is an important problem to be solved in allowing for easy collaboration.

    Patrick

  • http://twitter.com/maxgrinev maxgrinev

    Good >>Is the future of open source based on communities such as Apache/Eclipse or open source companies? Neither. GitHub http://j.mp/95WAsj

    This comment was originally posted on Twitter

  • Jonas

    Open Cores are doing a lot of great things. They may not be useful today and you may not see the potential in it, but open hardware is a good thing which you have no reason to badmouth.

  • http://twitter.com/alisohani alisohani

    Future of #OpenSource: Nor Companies, Nor Communities as Apache/ Eclipse, It’s “#GitHub” http://j.mp/95WAsj @maxgrinev #community #social

    This comment was originally posted on Twitter

  • http://twitter.com/FOSSwiki FOSSwiki

    Future of #OpenSource: Nor Companies, Nor Communities as Apache/ Eclipse, It’s “#GitHub” http://j.mp/95WAsj @maxgr… http://bit.ly/cqiQDQ

    This comment was originally posted on Twitter

  • http://news.ycombinator.com/user?id=vog vog

    I just fork, push my patch [...]. If he chooses to pull in the patch, that is his problem.This attitude is dangerous. It works very well for trivial patches, but not for complicated bugfixes, because those are usually buggy themselves. So you’ll have to stay in touch

    And yes, this process is greatly supported by DVCS.

    However, it only works if the contributor comes with an attitude like "I want this bug fixed in upstream" and not with an attitude like "Here is my patch – use it or don’t".

    This comment was originally posted on Hacker News

  • http://news.ycombinator.com/user?id=vog vog

    I just fork, push my patch [...]. If he chooses to pull in the patch, that is his problem.This attitude is dangerous. It works very well for trivial patches, but not for complicated bugfixes, because those are usually buggy themselves. Accepting a bad change is as dangrous as not acceping a good change. So you’ll have to stay in touch with each other, communicating via IM, email or a tracking system, until the issue is really solved.

    And yes, this process is greatly supported by DVCS.

    However, it only works if the contributor comes with an attitude like "I want this bug fixed in upstream" and not with an attitude like "Here is my patch – use it or don’t".

    This comment was originally posted on Hacker News

  • http://twitter.com/hcayless hcayless

    Forking, The Future of Open Source, and Github: http://redmonk.com/sogrady/2010/04/01/github/ Interesting.

    This comment was originally posted on Twitter

  • http://news.ycombinator.com/user?id=olefoo olefoo

    Being dissatisfied with the status quo is one of humanity’s best and worst traits.

    This comment was originally posted on Hacker News

  • http://twitter.com/markhneedham markhneedham

    Forking, the future of open source and GitHub – http://bit.ly/bSP8Al

    This comment was originally posted on Twitter

  • http://twitter.com/jeremyday jeremyday

    tecosystems » Forking, The Future of Open Source, and Github http://bit.ly/9kslRu

    This comment was originally posted on Twitter

  • http://twitter.com/catch_down catch_down

    http://tinyurl.com/yfyn89e
    tecosystems ” Forking, The Future of Open Source, and Github

    This comment was originally posted on Twitter

  • http://boycottnovell.com/2010/04/05/gnome-3-mockups/ Links 5/4/2010: GNOME 3 Mockups, KDE 4.4.2 in Mandriva 2010 | Techrights

    [...] Forking, The Future of Open Source, and Github Last Wednesday, at the kind invitation of the folks from Eclipse, I had the opportunity to sit with more august company – Justin Erenkrantz (Apache), Mårten Mickos (Eucalyptus), and Jason van Zyl (Maven/Sonatype) – on a panel charged with debating the future of open source. Among the questions posed to us was this: is the future of open source going to be based on communities such as Apache and Eclipse or will it be based on companies that sell open source? [...]

  • http://twitter.com/schestowitz schestowitz

    #Git ’s Impact Among Programmers is Increasing
    http://redmonk.com/sogrady/2010/04/01/github/

    This comment was originally posted on Twitter

  • http://twitter.com/caostheory caostheory

    Stephen O’Grady on forking, the future of open source, and Github. http://bit.ly/9IXESo

    This comment was originally posted on Twitter

  • http://ianskerrett.wordpress.com Ian Skerrett

    Stephen,

    Insightful post, as always. Balancing the needs of a ‘single source’ with a more distributed collaboration environment is something a lot of people will struggle with over the next couple of years. fyi, here is some insight on how the Eclipse community is implementing git: http://dev.eclipse.org/blogs/eclipsewebmaster/2010/04/01/git-vs-ip-provenance-dvcs-with-a-twist/

    Ian

  • http://twitter.com/coffeeaddict_nl coffeeaddict_nl

    @preitsma vorken is zo slecht nog niet… http://redmonk.com/sogrady/2010/04/01/github/

    This comment was originally posted on Twitter

  • http://www.duetsch.info/destillat-37-foss-floss-open-source.html Destillat #37 – FOSS, FLOSS, Open Source | duetsch.info – Open Source, Wet-, Web-, Software

    [...] Forking, The Future of Open Source, and Github [...]

  • http://redmonk.com/sogrady/2010/04/28/cassandra/ tecosystems » Cassandra and The Enterprise Tension

    [...] (by one group) feature will be minimal, decline to add it, or maintain a fork. With the latter less logistically expensive these days, perhaps that will become more viable an approach – even in commercial [...]

  • http://www.weez.com/2010/05/stephen-ogrady-cassandra-and-the-enterprise-tension/ Stephen O’Grady: Cassandra and The Enterprise Tension | Weez.com

    [...] (by one group) feature will be minimal, decline to add it, or maintain a fork. With the latter less logistically expensive these days, perhaps that will become more viable an approach – even in commercial [...]

  • http://redmonk.com/sogrady/2010/05/04/open-data-github/ tecosystems » The Future of Open Data Looks Like…Github?

    [...] version control infrastructures such as Launchpad or, yes, Gitorius, actively encourage forking (coverage). They do so primarily by minimizing the logistical implications of creating and maintaining [...]

  • http://shaunkime.wordpress.com/2010/05/11/producing-open-source-software/ Producing Open Source Software « Shaun Kime's Blog

    [...] about forking when revision control packages like Git and Mercurial exist. Here’s an article that references these types of differences and why forking may not be such a big deal [...]

  • http://redmonk.com/sogrady/2010/05/17/beyond-cassandra/ tecosystems » Beyond Cassandra: Facebook, Twitter and the Future of Development

    [...] be the notable exception (possibly bc it came from FriendFeed). Some assets are hosted with Github (coverage), those that are not are typically housed at [...]

blog comments powered by Disqus