Sourceforge is centered around projects. You have to register and get approval for each project separately (at least you did a few years ago, it has been a long time since I last went through the exercise). This left a significant percentage of projects with descriptions of the author's intent, but no actual code. It also meant that any third party contributions had to go back through the author (who might have lost interest).
I have never seen a project on github with no code. There is no approval process. You simply push and you are up and running. Forking allows others to start contributing right away without any action from the original author (and github really encourages you to fork projects). Then the tools that github provides makes collaboration way easier than it was in the past (pull requests vs emailing patches).
I agree with all of the things the author notes, but I really think this is github's killer feature. (Hope I didn't come off as too much of a github fanboy).
. . . but somehow GitHub gets so much attention that many people think it's the only code hosting site in the world, just like so many idiots think that Ubuntu is the only open source operating system in the world.
Not to say that BitBucket isn't a nice UI, but what major features did they invent? (not a rhetorical question)
Usability seems to be a major difference between not just BitBucket and GitHub, though -- it's also a major difference between Mercurial and Git themselves. Between the two, I find I like Mercurial/BitBucket much more usable than GitHub/Git. The big advantage GitHub/Git has is popularity, basically, and I've never really been one to let a lack of market-dominating popularity hold me back.
Anyway . . . to answer your question more directly:
I don't pay much attention to the fiddly corner cases where they differ in total functionality, so I don't really know who came up with what features first. They've both been evolving pretty quickly, from what I've seen, so I'm not sure anyone else can really say what features one has copied from the other, unless they were working on one of the two and involved in the imitation process.
I don't even see why it matters. It's like open source software: imitation is a good thing, because good features get more widely used, and everybody wins. It doesn't have to be a competition. I just don't think holding up GitHub alone as some kind of messiah really helps anything.
Mercurial is great, but it's not git. It's a hassle to have to learn two ways of doing everything. (Being intimately familiar with git's required these days, especially for Linux and Android programmers. Mercurial's not.)
> Mercurial is great, but it's not git.
Yeah -- it's easier to use. I've even seen Git users suggest that newbies to the world of DVCSes coming from Subversion or CVS might want to try out Mercurial first because it's easier to pick up, then migrate to Git because that's what the people suggesting this path use.
> It's a hassle to have to learn two ways of doing everything.
That's as strong an argument against Git as it is against Mercurial. Despite this, I've learned to use both -- because "it's about the code". I just choose BitBucket/Mercurial for my own projects; otherwise, I use whatever DVCS is appropriate to the project based on what the project's core team uses.
> Being intimately familiar with git's required these days, especially for Linux and Android programmers. Mercurial's not.
Hah. There are lots of Linux- and Android-related projects on BitBucket and otherwise developed within a Mercurial framework, too -- and not everybody is developing primarily for Linux and Android, anyway. Did you notice, for instance, that the majority favorite language of GitHub hipsters (Python) is using Mercurial now? Your narrow world is not everyone else's narrow world.