It seemed like I had found a home for my code and it would be neither of them.**
I was aware of BitBucket much in the same way that I was aware of GitHub. In my mind they were yet-another-online-source-code-repository. Maybe this was true in the beginning and maybe I just never bothered to look at the differences between them because I was stuck in my own perspective.
They all let you store versioned documents. They all have issue-tracking. (SF calls them Tickets)
Both GitHub and BitBucket pick up your image from Gravatar. (Which I actually found a little off-putting as I had forgotten that I set it up for use with my long-broken PS3)
However, they all have successfully distinguished themselves from one-another.
SourceForge is the old school regime. They have projects-of-the-week and send you piles of email if you let them. They have co-branded/sponsored "solutions centers" geared around specific types of development to foster communities. They have job-searching services.
GitHub comes on like a social media site with charts & graphs reinforcing a model of continual posting and @yournamehere message/pestering so that you interact with people talking about your code. They also force Git & Open Source down your throat.
And then there is BitBucket. They come off as Git-centric out of the gate, but offer Mercurial as an option. So they play to the popularity of course, but provide for choice.
For the sake of comparison I went through the same process that I did yesterday on GitHub, creating a hello-world project.
When I created the repository I was given a choice of Git or Mercurial. Score Point #1.
I was then asked if I wanted the repository to be public or private, with private the default. Score Point #2. (GitHub charges ~$85/year for that)
Digging into this further I see that I can have a workgroup up to 5 on this account for free. Score Point #3. (That is specifically what GH charges ~$85/year for)
Where BitBucket shows it's dot-org-ness is when it comes to using the site directly from the web site - you cannot. You must use either the command line tool or else the SourceTree tool. While it is a handy tool - if only because it transparently works the same way with Mercurial as with Git, I resist dictating tools to people.
Also - GitHub shines even more with the ability to edit files in place on the web-site.
** When I went back & repeated the experiment with SourceForge - I discovered that they have been keeping up with the Joneses: Wiki, blog, git, svn, cvs, mercurial, & bug-tracking, oh my!
So this is not as clear-cut as I once thought it was.
What I will point out is that there is no integration between repositories on SourceForge. Your svn repo has nothing to do with your mercurial repo has nothing to do with your published files, etc.. So if you support multiple source-control tools - then you have to support them.
So in the end I think that it might just come down to a question of who are you working with? That is, if you are looking to contribute to an existing project, then you are stuck with the decisions that the project founders made before you - unless you have the audacity to fork.
However if you are looking to start a project & are looking for a home - you need to ask yourself a few questions:
- What license am I using? If it isn't Open Source - rule out GitHub
- How large is my team? If it is less than five, consider BitBucket
- How important is collaboration and what form should it take? Wiki, Blog, direct messaging? If you want twitter-style messaging, use GitHub - if you want blog or wiki SourceForge wins out. (Of course if you just use IM and email then any of them work fine.)
- Are you encouraging crowd-sourced participation? Both SourceForge and GitHub are focused on pulling other people in. SourceForge appeals to the civic-minded where GitHub uses the peer pressure tactics and rewards mechanisms of Social Media. Know your audience.
- Do I need closed-source? You might be working under contract & not have a choice. SourceForge or BitBucket are better starting points.
- What tools am I using? CVS or SVN look no further than SourceForge. Git users rejoice in choice. Mercurial users ignore GitHub. If you are looking for web-page-based-contributors then GitHub is the slickest interface.
- Do I need to edit files in a web browser? GitHub is your only choice.
- Am I just making something available for download? If you just want a page for people to download your stable releases then SourceForge gives the most professional looking download page experience.
What is more - if I find myself pioneering projects rather than simply participating in them - I will mostly likely create cross-linked & cross-synced repositories on all three. Why would I do such a thing? To maximize participation & reach. These are all communities. It would be worthwhile to reach out to anyone who would listen, no?