For the past 6 months or more, I’ve been seeing many codes hosted at sourceforge.net as well as other hosting sites “Move to GitHub”. A mere Google Search with the phrase “Moved to Github” returns several results containing the text moved to github. This is very confusing for me, and I’m wondering, why exactly are people moving? Does it mean that GitHub is better or is there some special advantage I’m not seeing?
7
This is a symptom of a wider migration towards distributed version control systems.
Some websites which traditionally hosted non distributed VCS (eg Codeplex & SourceForge) were a little slow in adding support for DVCS (eg Git or Mercurial). So, people who wanted to use DVCS for their project were forced to migrate their projects over to the providers which supported them (eg Github or BitBucket). Github was one of the first to offer DVCS support and so naturally a lot of people migrated their code there in order to take advantage of it.
Those other websites are only now starting to catch up to DVCS (Codeplex for example now supports Mercurial & Git), but they are still a way behind in terms of features such as forking and submitting pull requests. To really take advantage of DVCS Github and Bitbucket are still the best options.
12
Project hosting is infrastructure. Infrastructure exhibits network effects, which means that infrastructure gets more useful the more people are connected to it. (In particular, the usefulness is O(number_of_connections), which means that for any individual member it is O(total_members) and for the whole system it is O(total_members^2)). This, in turn, leads to an effect called natural monopoly, which means that it is natural for such a system that only one competitor will survive, since the usefulness is maximized when everybody uses the same system.
So, it makes sense to join the market leader, which is GitHub. There are more repositories, more users, more branches, more revisions, more everything on GitHub than on SourceForge, Google Code and CodePlex combined.
The interesting question is, of course, if network effects mean that the market leader automatically obtains a natural monopoly, how was GitHub able to break SourceForge’s?
And the answer is, by being so disruptive that the pain of joining a much smaller infrastructure was worth it for the early adopters:
- GitHub was the first to offer Git hosting with a feature set comparable to that of SourceForge (or at least that part of SourceForge that most people used)
- GitHub was cool, from a UI standpoint: slick, modern Web UI
- GitHub was cool, technology-wise: Ruby on Rails, Sinatra, Erlang, node.js
- GitHub was Web 2.0, with its focus on Social Coding, and Users over Projects
2
I think one of the reasons is different audience: sourceforge is primarily for hosting applications, probably the most prominent feature of a project page is a link to the compiled executable (or some other download). In other words, it’s targeted at users, not developers.
On the other hand, github is primarily for hosting source code, the most prominent feature of the project page is directory listing of the master
branch. It’s targeted at developers (either wanting to modify or use code from a project), not users.
I think this is one of the reasons why developer-targeted tools and libraries are moving to github.
Sourceforge also offers Git, but Github just does it better (for now).
- Their pull request system works nicely (much better than Gitorious for instance)
- Their recently-upgraded notification is very convenient.
- They show the code right away
Their killer feature, in my opinion, is the “Network graph”:
Difference with gitk
: it also shows you what is going on in other people’s branches (without having to pull their branches), which is very important when collaborating.
3
GitHub is simple, easy-to-use, easy to get started with, powerful and looks great and is Web 2.0-ish.
I use GitHub, and I find it remarkably easier to use than SourceForge, which had its power hidden behind a series of menus and required fairly elaborate operations to get anything set up. And I’m a programmer.
In addition, I think there is one more powerful feature: whether its an individual wanting to publish their first open-source project somewhere, or teams that want to collaborate on a commercial (private) project, GitHub “scales” perfectly well for almost all use cases.
End of the day, I think its about human psychology. Is the product easy to use, easy to start using, inexpensive (or free) … does it look good and is it something I would recommend to my friends? For GitHub, I would answer yes to all those questions.
1
You’ve also got to take into account some pretty smashing features offered by github that I’ve yet to see mentioned.
- github pages with github flavored markdown
- github mobile app
- github eclipse plugin
- github for mac
- github jobs
- github for windows
- github ticketing/bug tracking system
- github developer api which allows for seamless third party
integration - frequent UI updates/enhancements (you can literally see the changes
from one day to the next i.e. search text box now dynamically expands
on focus, watch became the new star button, etc.) - github gists (good
for utility scripts, short code snippets, etc.) - seamless github integration via hub
Other sites may have these features but I’m pretty sure no site out there has them all.
These guys are practically everywhere…slowly dispersing their technical goodies throughout the web and desktop alike. They’re only getting bigger and better as we speak and they hire the finest of engineers (they even managed to steal Phil Haack from Microsoft…go figure).
One additional reason that may be drawing additional developers to GitHub is that developer tools are starting to embrace git, and platforms like Eclipse now have Git support built in out of the box (applies to the packages for Java, C++ Developers, etc), making it take less steps to get your project uploaded to GitHub.
1
To be honest, the most important thing of Git for myself when I see it:
1. Network Graph or Should I call the History(also commenting)
2. Branch and Pull Request
3. It’s more powerful, really, I would say it’s so feels like I have a secretary holding all my work, and I can told that sec to wrote down anything for me, the change, everything!
4. It’s easy to rollback
Just it. Feels sexy using it
2