编辑 2015-08-01: 这个答案仍在获得意见和投票。它不仅仅是古老的,我想删除它,但由于它是公认的答案,我不能这样做。再说一次,它是社区 wiki,社区一直在更新 - 谢谢!
SourceForge 已经越过了黑暗面,接管了项目并将它们与 Adware (Google GIMP Sourceforge Adware) 捆绑在一起。不惜一切代价避免。 GitHub 到目前为止仍然是最受欢迎的,尽管还有其他选择(例如,BitBucket 为最多 5 位用户免费提供无限的私人存储库。)
在过去的几年里,情况发生了如此大的变化,这真是太疯狂了,如果你将来读到这篇文章,也许 GitHub 不再是很酷的产品了。底线是:对于您想要使用的任何源代码控制系统,都有很多很棒的选项。
2010 以下信息仅供参考
编辑:这个答案现在很古老。在过去的两年里,GitHub 已成为主要的代码托管场所,每当我必须创建一个新的 OSS 项目时,我都没有一丝怀疑该去哪里的影子。将其留在下面以供参考。
确实,我的帖子现在已经快 2 年(2008 年)了,而且不再完全准确。
为什么?
因为我认为 SourceForge 现在对于开源项目来说是微不足道的。好吧,这会给我带来很多麻烦,所以让我澄清一下:
我绝对相信开源项目应该在 DVCS 上运行,最好是 git 或 mercurial,因为它们是最普遍的 - 没有反对 Bazaar,但我认为它有点太模糊了。 (编辑: SourceForge 现在提供 Mercurial 和 Bazaar,所以这个论点不再成立。但是,经过两次重新设计,我认为 SF 的形象并不太好。将它们与公司的形象进行比较: 虽然 GitHub 是 Apple,SF 是 IBM。坚如磐石,但有点尘土飞扬)
因此,如果我要再次写这篇文章,那将是 CodePlex vs. GitHub vs. BitBucket,GitHub 是赢家。但这是一个笼统的陈述,所以让我补充一下细节。 +/- 并不是严格意义上的 Pro/Con,它更多地是为了突出不同的理念。
CodePlex
+ 真正的 Mercurial/Git 托管 - TFS 之上没有错误的桥,您拥有真正的 Mercurial/Git
+ 集成的 Wiki,允许添加丰富的文档和漂亮的页面
+ 包括错误跟踪器和讨论论坛
- 源代码浏览器不是很好 - 差异出现在弹出窗口中,只是“感觉”很复杂
- 分叉和拉取请求“不那么容易” - 用户界面可能需要一些工作
总体而言,CodePlex 仍然很棒,但我觉得它更适合单个开发人员或非常小的团队,因为该网站的重点是 Wiki,而不是源代码。它更像是一个发布而不是一个协作平台。理论上您不需要项目主页,您的 CodePlex 项目可以成为您的一站式商店。
GitHub
+ Git 托管,支持 SSL/SSH
+ 网络图允许查看分叉以及何时合并到什么
+ 能够“观看”项目 - 您的帐户页面就像一个带有新签到的 Facebook 墙
+ 超级好的差异查看器,能够评论单行更改 - see here
+ 分叉是一个 2-click 过程,发送拉取请求也是如此
+ GitHub 现在有 GUI 工具 GitHub for Windows
- 对于非开发者来说,主页不是很“漂亮”。如果您的项目中有自述文件(支持某些标记语言,如 Markdown 或 HTML),则会显示它,但初始页面是源代码
- Wiki 不是很好 - 它是 Markdown,但有时格式化感觉有点过于复杂。
GitHub 的理念与 CodePlex 不同:它只关注源代码以及开发人员之间的协作。主项目页面是最新的源代码。有一个单独的 Wiki,但更多的是用于文档而不是项目的演示。网络图非常棒,尽管一旦有超过 20 个分叉它就会变得混乱(通常当一个高调的项目宣布每个人和他们的狗都在分叉它时,但大多数分叉很快就死了)。 GitHub 可以很好地扩展到任何大小。
事实上,GitHub 让我可以非常轻松地创建项目、应用修复/补丁、将其提交到我的 fork 并向作者发送拉取请求。结合网络图,很容易看到提交。
但您很可能需要一个单独的主页来向最终用户展示您的项目并提供下载,因为 GitHub 的下载设施不是那么好。
比特桶
+ Git/Mercurial
+ 允许免费的私人存储库,最多 5 个用户
我没有使用 BitBucket 来发表真正的评论。它与众不同的一个特点是私人托管是免费的,而 GitHub 收费,Codeplex 根本不提供。
谷歌代码
Google 代码不再是一种选择。
- 自 2015 年 3 月起禁用项目创建,Google 服务将是 permanently closing down in January 25, 2016,因为竞争服务更好。
- 太丑了,浏览源码太复杂(链接有些埋没)
我没有用过它,所以我不想说它不好——它不是。很多项目都使用它,它非常稳定和健壮,没有听到任何开发人员的坏话。然而,就个人主观意见而言,“设计”让我很反感。
SVN 与 Git/Mercurial
重申我上面关于 SourceForge 已过时的评论:这当然有点苛刻。然而,我确实相信 SVN 对开源项目是有害的。首先,忽略文件的奇怪元数据要求。在 Git 或 mercurial 上,您在源代码树的根目录中有一个名为 .gitignore 或 .hgignore 的文件,其中包含要忽略的文件/目录/模式的列表。没有魔法 svn:ignore .svn 文件夹中的元数据。仅此一项就将 SVN 从水中吹了出来。如果我开始一个新的 Visual Studio 项目,我需要应用那个神奇的元数据,而使用 Git/mercurial 我只需复制一个文件并完成它。
然后,分叉、修补和发送拉取请求的能力非常棒,尤其是对于小型/一次性补丁。
最后但并非最不重要的一点是,SourceForge 对我来说仍然过于复杂。这不是一个糟糕的主人,但它确实表明它的年龄恕我直言。话虽如此,它仍然很强大,并且在世界范围内拥有许多镜子。此外,Bug Tracker 比其他的要复杂得多。
此外,如果您的项目出于某种原因需要严格的贡献规则(这可能是有道理的,例如确保提交的代码确实是合法贡献的法律保护),那么托管在 SourceForge 上的 SVN 等传统系统可能会起作用。
编辑: 不知道 SF 终于有了分布式托管。如上所述,它很强大,但不再是“酷孩子”了,我觉得它太复杂了。
TL;DR
对于任何中小型项目,我全心全意地推荐 GitHub,对于需要漂亮网站的小型项目,我会选择 CodePlex,而对于私人项目,我会选择 BitBucket。对于需要非常复杂的错误跟踪器、大量额外功能和“真实”网站的大型项目,请考虑使用 Source Forge。