编辑于2015-08-01: 这个答案仍然被查看和投票。虽然它已经过时了,我想删除它,但由于它是被接受的答案,我不能这样做。不过,它是社区维基,并且社区一直保持更新 - 感谢您的支持!
SourceForge已经转向黑暗面,接管项目并捆绑广告软件(Google GIMP Sourceforge Adware)。千万不要使用。GitHub目前仍然是最受欢迎的,尽管有其他选择(例如BitBucket为5个用户免费提供无限私人存储库)。
在过去的几年中,这个领域发生了巨大的变化,如果你正在未来阅读这篇文章,也许GitHub已经不再是最酷的产品了。底线是:对于你想使用的任何源代码控制系统,都有大量的优秀选项。
以下是旧的2010信息,仅供参考
编辑:这个答案现在已经过时了。在过去的两年中,GitHub已经成为主要的代码托管地方,每当我需要创建一个新的OSS项目时,我毫不犹豫地去那里。留下这个答案供参考。
事实上,我的帖子现在已经有将近2年的历史了(2008年),并且不再完全准确。
为什么?
因为我认为对于开源项目来说,SourceForge现在已经不重要了。好吧,这会给我带来很多麻烦,所以让我澄清一下:我完全相信开源项目应该在一个分布式版本控制系统上运行,最好是git或mercurial,因为它们是最广泛使用的——并没有反对Bazaar,但我认为它有点太晦涩了。(编辑:SourceForge现在提供Mercurial和Bazaar,所以这个论点不再成立。然而,在经历了两次重新设计之后,我认为SF的形象并不太好。把它们与公司的形象进行比较:GitHub就像是苹果,而SF则像是IBM。非常可靠,但有点过时)
因此,如果我要再写这篇文章,它将是
CodePlex vs.
GitHub vs.
BitBucket,其中GitHub是获胜者。但这只是一个笼统的陈述,所以让我补充一些细节。+/-并不是严格的正/反,更多的是强调不同的哲学。
CodePlex
+ 真正的Mercurial/Git托管-没有基于TFS的错误桥接,你拥有真正的Mercurial/Git
+ 集成的Wiki,可以添加丰富的文档和漂亮的页面
+ 包括Bug跟踪器和讨论论坛
- 源代码浏览器并不是那么好——差异出现在弹出窗口中,感觉很复杂
- 分支和拉取请求“不太容易”——用户界面需要改进
总的来说,CodePlex仍然不错,但我认为它更适合单个开发人员或非常小的团队,因为网站的重点在Wiki上而不是源代码上。它更像是一个发布平台而不是协作平台。理论上,您不需要项目主页,您的CodePlex项目可以是您的一站式工具。
GitHub
+ Git托管,支持SSL / SSH
+ 网络图允许查看fork以及合并的内容
+ 能够'关注'项目-您的账户页面就像Facebook的墙壁一样,有新的签入信息
+ 超级好的差异查看器,能够评论单行更改-请参见这里
+ 分叉是一个2次点击的过程,发送拉取请求也是如此
+ GitHub现在有GUI工具GitHub for Windows
- 面向非开发人员的主页不是很美观。如果您在项目中有Readme(支持某些标记语言,如Markdown或HTML),则会显示出来,但最初的页面是源代码
- Wiki不是那么棒-它是Markdown,但有时格式感觉有点过于复杂。
GitHub与CodePlex有不同的理念:它关注源代码和开发者之间的协作。主项目页面是最新的源代码。有一个单独的Wiki,但那更多是用于文档而不是项目的展示。网络图非常棒,但一旦有超过20个分支时,可能会变得混乱(通常当一个高调项目被宣布时,每个人都会复制它,但大多数分支很快就会消失)。GitHub可以很好地扩展到任何规模。
事实上,GitHub让我轻松地复制一个项目,应用修复/补丁,将其提交到我的分支并向作者发送拉取请求。与网络图一起,很容易看到提交。
但你最有可能需要一个单独的主页来向最终用户展示你的项目并提供下载,因为GitHub的下载设施并不是很好。
BitBucket
+ Git/Mercurial
+ 允许免费拥有私人仓库,最多5个用户
我还没有足够的使用经验来做出真正的评论。它与众不同的一个特点是,私人托管是免费的,而GitHub收费,Codeplex根本不提供。
Google Code
Google Code已经不再是一个选择。
- 项目创建自2015年3月起已被
禁用,Google服务将在2016年1月25日
永久关闭,因为竞争对手的服务更好。
- 它很丑陋,浏览源代码太复杂(链接有点难找)。
我没有使用过它,所以不想说它不好 - 它不是。很多项目使用它,非常稳定和强大,没有听到任何开发者反馈不好。然而,作为一种个人、主观的观点,"设计"让我感到厌烦。
SVN vs. Git/Mercurial
再次强调我关于SourceForge已经过时的评论:当然这有点苛刻。但是,我确实认为SVN对于开源项目是有害的。首先,需要奇怪的元数据来忽略文件。在Git或Mercurial中,您在源树的根目录中有一个名为.gitignore或.hgignore的文件,其中包含要忽略的文件/目录/模式列表。在.svn文件夹中没有神奇的svn:ignore元数据。这就足以让我放弃SVN了。如果我启动一个新的Visual Studio项目,我需要应用那些神奇的元数据,而使用Git/mercurial,我只需复制一个文件就可以完成。
然后,分叉、修补和发送拉取请求的能力是非常棒的,特别是对于小型/一次性修补。
最后但并非最不重要的,SourceForge对我来说仍然过于复杂。它不是一个坏的主机,但在我看来它确实显示出了它的年龄。话虽如此,它仍然强大,并且有许多镜像遍布全球。此外,Bug Tracker比其他工具更为复杂。
另外,如果您的项目由于某种原因需要严格的贡献规则(这可能是有意义的,例如法律保护,以确保提交的代码确实被合法贡献),那么像SVN这样的传统系统托管在SourceForge上可能会起作用。
编辑:我不知道SF终于拥有了分布式托管。就像上面所说的那样,它很强大,但只是不再是“酷的孩子”,我发现它过于复杂。
TL;DR
对于任何中小型项目,我完全推荐GitHub;对于既想要一个漂亮网站又想开展小型项目的情况,我会选择CodePlex;对于私人项目,我会选择BitBucket。对于需要非常复杂的Bug Tracker、大量额外功能和“真正”的网站的大型项目,请考虑使用Source Forge。