There are two main types of open source repositories:
- SourceForge and similar
- GitHub and similar
The difference is mainly that SourceForge is mostly appropriate for project which want to have a centralized approach to open source development. On the other hand, GitHub is all about forking and making it easy to create forks and merge the changes between forks of a project. In the past two years many open source projects moved from SourceForge or Google Code to GitHub. My Open Source projects are now all also hosted on GitHub.
How forking is handled or accepted depends mainly on the goal you have by making a project open source. If you want to maximize the involvement of the community and are ready to loose some control on the software, forking is a great thing. Anybody can fork the project basically creating a new branch based on some existing project version and correct errors or implement new features. This changes can of course be merged back in the original branch or any other branch. On the other hand, one can decide to keep a fork alive by merging bug fixes and features from the original branch or from another fork. Without forking, one has to register as a developer in the project and his changes need to be checked and approved. So without forking, it makes it much easier for someone to just provide a bug fix or a new feature for an existing piece of software to the community. That’s why support for easy forking maximizes the involvement of others by making it easy to participate.
On the other hand, the disadvantage of this approach is that you have less control on the software and that you risk having many different non-compatible versions of the software in the field. There is not a single version anymore on which all developers work on but an original version maintained by the original contributors and potentially multiple forks which are only there for a short time and are not always well maintained. It can also happen that a fork goes in a direction which is not accepted by the original contributors and keeps living forever. In this case it could also happen that users decide they like the fork better and that the original contributor completely looses control on the software. This might be good for the community but as an original contributor you might see it in a different way.
When looking at the projects hosted on SourceForge and GitHub you also clearly see another difference: Many projects on SourceForge provide downloadable and installable packages to be used by normal users e.g. VLC Player, multiple Bittorrent clients, 7-zip, Notepad++, Filezilla… So project targeting end users. These are software my mother might be using. She of course doesn’t care much for the source code. She just needs to have a stable package available.
Projects on Github are different. The largest projects there are things like Homebrew, Ruby on Rails, Android, PHP and other frameworks. I doubt my mother would use any of these projects. But for me or other developers these projects tend to be very interesting. And there I do not need any installer. I actually do not really need a ZIP file either. It’s all about getting access to the code.
So SourceForge and GitHub basically address two different needs and two different philosophies. There is room for both of them and we will probably continue seeing projects moving to GitHub and new projects created in SourceForge. Regarding Google code which I used for a time, I frankly do not see any reason to use it for my projects at all since it’s kind of something in the middle and I do not really see for which kind of projects it’d be better than SourceForge and GitHub.