I have been reading through the backlog of answered questions on SO regarding "How to promote an open source project". Not surprisingly, many of the answers pointed people to SoureForge/FreshMeat and other sites etc as well as blogging and whatnot. This started me thinking where is the best place to host a project and why?

As my first project is currently hosted on CodePlex, I started to wade through the Google search results to collect information on the pros/cons of each; however the comparisons that I found are rather dated (2+ years old).

http://www.stum.de/2008/12/13/sourceforge-vs-codeplex/
http://www.developmentnow.com/blog/2006/11/codeplex-vs-sourceforge/
http://www.spacesocket.com/forum/thread-6654.html
etc...

So the next question becomes "Should I host my project on multiple sites" to which the following post provides the expected answer (thankfully! as that would be a pain to maintain).

Hosting an open source project at several sites

Based on the current state of various Open Source hosting sites such as CodePlex, GitHub, Google Code, SourceForge, etc, etc is there any notable pros/cons of one site over the other? i.e., should I stick with CodePlex or am I missing out by not using one of the alternatives? Will one bring about more traffic to a new and unknown project?

I plan on exploring each site in more detail to see what they all offer, but given the vast knowledge of the good folks on SO, figured I would start with this question first.

UPDATED

As per erjiang answer below... I am currently using Mercurial for version control, and I am open to anything other than TFS. Also, my current project is only me developing, but future projects may be collaborative so worth considering...

Accepted Answer

Indeed, my posting is almost 2 years old now and not entirely accurate anymore.

Why?

Because I think that SourceForge is insignificant now for open source projects. Okay, this will get me into a lot of trouble, so let me clarify:

I am absolutely convinced that Open Source projects should be run on a DVCS, preferably git or mercurial as they are the most widespread - nothing against Bazaar, but I think it's a bit too obscure. (Edit: SourceForge now offers Marcurial and Bazaar, so that argument doesn't stand anymore. However, following two redesigns I think that SF's image isn't too great. To compare them to the images of companies: While GitHub is Apple, SF is IBM. Rock solid, but a bit dusty)

So if I were to write this posting again, it would be CodePlex vs. GitHub vs. BitBucket, with GitHub being the Winner. But that is a blanket statement, so let me add details. +/- isn't strictly Pro/Con, it's more to highlight different philosophies.

CodePlex

+ Real Mercurial Hosting - no buggy bridge on top of TFS, you have real Mercurial.
+ Integrated Wiki that allows to add rich documentation and nice looking pages
+ Bug Tracker and Discussion Forums included
- Source Code browser isn't that great - Diffs appear in a popup and just 'feel' complicated
- Forks and Pull Requests 'not as easy' - the UI could use some work

Overall, CodePlex is still great but I feel it's more suited for single developers or very small teams because the focus of the website is on the Wiki rather than on the source code. It's more a publishing than a collaboration platform. Theoretically you don't need a project homepage, your CodePlex project can be your one stop shop.

GitHub

+ Git Hosting, supports SSL/SSH
+ Network graph allows to see forks and what merged into what when
+ Ability to 'watch' projects - your account page is like a Facebook wall with new checkins
+ Super good diff viewer with the ability to comment on single line changes - see here
+ Forking is a 2-click process, and so is sending pull requests
- Main page is not very 'pretty' for Non-Developers. If you have a Readme in your project (supports some markup languages like Markdown or HTML) it is displayed, but the initial page is the source code
- Wiki isn't that great - it's Markdown, but sometimes formatting feels a bit too complex. - Git under Windows is still lacking some nicer GUI tools, which is no problem for command line users but may put off some people.

GitHub has a different philosophy than CodePlex: it's all about the source code and about collaboration among devs. The main project page is the most up to date source code. There is a separate Wiki, but that's more intended for Documentation rather than presentation of your project. The network graph is fantastic, although it can get confusing once there are more than about 20 forks (frequently when a high profile project is announced everyone and their dog is forking it, but most forks die quickly). GitHub scales very well to any size.

In fact, GitHub makes it super easy for me to fork a project, apply a fix/patch, commit it to my fork and send a pull request to the author. Together with the Network graph it's really easy to see the commit.

But you most likely need a separate home page to present your project to end users and to provide downloads, as GitHubs download facilities aren't that great.

BitBucket

+ Mercurial
+ Allows private repositories for free, up to 5 users

I haven't used BitBucket enough to make a real comment. The one feature that sets it apart is that private hosting is free, while GitHub charges and Codeplex does not offer it at all.

Google Code

- It's ugly and it's too complicated to browse the source code (the link is somewhat buried)

I haven't used it so I don't want to say it's bad - it's not. A lot of projects use it and it's very stable and robust, haven't heard much bad from any developer. However, as a matter of personal, subjective opinion the 'design' puts me off.

SVN vs. Git/Mercurial

To reiterate my comment above about SourceForge being obsolete: That is of course a bit harsh. I do however believe that SVN is detrimental for open source projects. First of all, weird metadata requirements to ignore files. On Git or mercurial, you have a file called .gitignore or .hgignore in the root of your source tree which includes a list of files/directories/patterns to ignore. No magic svn:ignore metadata in the .svn folder. This alone blows SVN out of the water for me. If I start a new Visual Studio project I need to then apply that magic metadata, while with Git/mercurial I just copy over one file and be done with it.

Then, the ability to fork, patch and send a pull request is fantastic, especially for small/one-off patches.

Last but not least, SourceForge is still WAY too complex for my taste. It's not a bad host, but it really shows it's age IMHO. That being said, it's still robust and has many mirrors world wide. Also the Bug Tracker is much more sophisticated than the others.

Also, if your project for some reason requires strict contribution rules (which may make sense, e.g. legal protection to make sure the committed code is indeed legally contributed) then a traditional system like SVN hosted on SourceForge may work.

Edit: Wasn't aware that SF finally has distributed hosting. As said above, it's robust but just not the 'cool kid' anymore, and I find it much too complex.

TL;DR

For any small to medium project I whole hearty recommend GitHub, for small projects where you want a nice Web Site as well I'd go with CodePlex and for private projects I'd go with BitBucket. For big projects that require a very sophisticated bug tracker, tons of extra features and a 'real' website, consider Source Forge.

Written by Michael Stum
This page was build to provide you fast access to the question and the direct accepted answer.
The content is written by members of the stackoverflow.com community.
It is licensed under cc-wiki