One example of a use-case where GitHub falls short is offline support: you can't take the issue tracker and wiki with you. There are alternative tools such as fossil [0] which have built-in bug tracking and wiki, which is an attractive feature for some people.
[1] https://help.github.com/articles/adding-and-editing-wiki-pag...
Hopefully gitlab or bitbucket comes up with a solution which enables the owners of the repos to move bugs/issue tracking, which will force github to enable this feature as well.
I like fossil because it's all built-in and can be wrapped up in a single file. But it's always great to have more choices available.
For example, now we have github, gitlab, mercuirial(bitbucket).. I only use the above 3.. but I am sure I can come up with 100 different github/gitlab type companies.
When there is so much fragmentation, it becomes difficult to find project or code reliably. For example, I have seen certain projects on bitbucket, which are awesome (say `ProjectA`) and create a lot of value. But there exists a very similar but differnt project `ProjectB` on github. Probably the author of `ProjectB` had the same problem that the author of `ProjectA` had, but couldnt discover that `ProjectA` already exists.
What open-source software enables you to do is to reuse software, however, if we create so many distinct places where the code resides, it becomes harder and harder to discover that code. Which leads to recreating codebases over and over again.
thanks for pointing out fossil by the way..
[0] https://godoc.org/golang.org/x/build/maintner/cmd/maintserve
Off-topic, but I'm genuinely curious why you chose this capitalization?
(OpenStack Swift, that is, not Apple Swift. And not Suzuki Swift either.)