在哪里托管一个开源项目:CodePlex、Google Code、SourceForge?

165
我一直在阅读关于“如何推广开源项目”的SO回答的积压问题。毫不奇怪,很多答案都指向了SoureForge/FreshMeat和其他网站,以及博客等等。这让我开始思考,哪里是最好的项目托管地点,为什么呢?
由于我的第一个项目目前托管在CodePlex上,我开始浏览谷歌搜索结果,收集关于每个托管地点的优缺点的信息;然而,我找到的比较资料都相当陈旧(2年以上)。 http://www.stum.de/2008/12/13/sourceforge-vs-codeplex/ http://www.developmentnow.com/blog/2006/11/codeplex-vs-sourceforge/ http://www.spacesocket.com/forum/thread-6654.html 等等...
所以下一个问题是“我应该将我的项目托管在多个网站上吗?”对此,下面的帖子提供了预期的答案(谢天谢地!因为维护多个网站会很麻烦)。
基于目前各种开源托管网站(如CodePlex、GitHub、Google Code、SourceForge等等)的现状,是否有任何一个网站比其他网站更有优势或劣势?也就是说,我应该坚持使用CodePlex,还是错过了其他选择?哪个网站能为一个新的、未知的项目带来更多的流量?
我计划更详细地了解每个网站提供的功能,但考虑到SO上的专业人士拥有丰富的知识,我想先从这个问题开始。
更新:
根据下面erjiang的回答...我目前正在使用Mercurial进行版本控制,除了TFS,我对其他任何东西都持开放态度。此外,我目前的项目只有我一个人在开发,但未来的项目可能会是协作开发,所以值得考虑一下...

55
在我看来,关闭这个问题是完全不必要的。我不禁要思考关闭所取得的成就是什么?这个问题有很多赞(显然人们对它感兴趣),它有一个高赞的答案(所以这个问答显然是有帮助的),并且它是社区维基(因此即使它要求主观意见或产品建议,也没有人会因为赞助最新和最棒的产品而受益)。 - stakx - no longer contributing
12
这种问题在收到太多回答之前本应该被关闭,因为它不是一个合适的问题。但是现在由于已经有了很多回答,关闭问题会产生反效果,并且会贬低已经做出的贡献。 - Chris Stratton
4
关闭这个问题@stakx所达到的一个目的是保护它不受新回答的影响,现在它肯定会逐渐变得无关紧要。 - Bob Stein
@BobStein-VisiBone沉没到无足轻重的地步了吗?我在六年后偶然看到了这个问题。 - wonea
2
@wonea 我当时心情有点讽刺。当像这样相关、有用且可回答的问题被限制时,我感到失望。目前,如果出现新的开源托管机会,这个页面就会被人为地限制在将它们编辑到现有答案中。机会性问题特别需要空间来发展。我预计它每年都会变得更加陈旧。Stackoverflow很棒,但它也破坏了很多伟大的东西。 - Bob Stein
请仅返回翻译后的文本:为什么许多程序员将他们的代码移至GitHub? - matth
4个回答

126

编辑于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。


3
我不同意关于Google Code的看法,我认为它易用、直观且轻量级(而且网站速度很快!相比之下,CodePlex就……!),每次都会成为我的首选。但是其他内容也很有趣。 - Konrad Rudolph
2
@Konrad 确实,就像你说的,这是个人的事情。也许极简主义的方法让我感到不适。我没有听说过关于功能方面的任何不好的消息,但我从未在那里托管过项目。 - Michael Stum
2
非常好的回答,非常详细!对我最感兴趣的主要网站(CodePlex和GitHub)之间的区别给出了优秀的解释。你还指出SourceForge在这个阶段是不重要的,这也是与早期文章不同的观点。谢谢! - Chris Baxter
4
不同类型的项目也会有不同的因素。例如,在 .Net 项目中,CodePlex 支持 ClickOnce 部署方式,而 Google Code 则不支持。 - dbkk
1
@MichaelStum 或许你可以添加 GitHub Pages 服务。任何托管在 GitHub 上的项目的入口都应该是一个页面。 - Matías Fidemraizer
显示剩余5条评论

8

嗯,你没有说你使用哪个源代码控制系统,这将极大地影响你的选择。

(不全面)

  • Git -> GitHub或Gitorious是显而易见的选择
  • Mercurial -> BitBucket
  • SVN -> Savannah、SF.net
  • Bazaar -> Launchpad
  • CVS -> 升级到更高版本的源代码控制系统

我是一个Git粉丝,但Mercurial也很棒。我个人喜欢GitHub的协作功能,比如容易分叉和拉请求。

我想补充一点,除了微软阵营以外,CodePlex在开源生态系统中并不是很受欢迎,从他们的最多下载列表可以看出来。这可能是微软中心化自然的结果,也可能是过去的污名。如果你只为.NET或类似的东西开发,那么这个观点会改变。

编辑:此外,我认为开发人员通常不会随意浏览有趣的项目。你在GitHub上被忽略的可能性与在Codeplex上被忽略的可能性相同,但如果有人确实发现了你的项目,他们更有可能在那个网站上发送消息/文件错误/贡献,如果他们已经在该网站上有一个账户。


2
我目前使用Mercurial(不会碰TFS)。 - Chris Baxter
2
短语“easy forking”有问题。 - Marko
2
对于任何好奇的人,在GitHub上,与其说分叉是一个项目不可逆转的分裂,不如说它是修改现有项目的最佳方式。在您进行个人修改后,您可以向原始项目发送“拉取请求”以获取来自您的分支的更改。 - erjiang
我同意CodePlex仅针对Microsoft开发;这对我来说很有效... 我的印象是,如果是一般的开源项目,应该使用GitHub;如果是.NET专注和单一/较小团队,则使用CodePlex。我也喜欢关注度的编辑...那将是下一个战斗。谢谢! - Chris Baxter
1
@marko:易于分叉是一件好事 - Nicolas Raoul

4
自从Github迅速增长,似乎成为了我这些天看到的项目中最突出的一个。所以我会选择它。
但我认为并不意味着你不能使用其他平台。我看到很多项目在Github上托管代码,在Google Code上托管文档,并且同时在Sourceforge上有链接。
不管你使用哪个作为主要托管平台都没关系,但我建议你也将你的项目添加到其他网站上,这样更容易找到它。

有趣的是你会建议在多个网站上托管。我的初步想法是同意上面引用的SO答案...你对那个帖子有什么想法? - Chris Baxter
@Calgary Coder:我并不是特别在谈论托管,而是更多的链接。几年前,由于速度缓慢和可怕的设计变化,我已经停止使用Sourceforge了。但是,在sourceforge上创建项目并链接到您的github(或其他)网站可以帮助您更容易地找到项目。对于文档,我发现Google Code wiki比Github wiki更容易使用,所以我更喜欢它。我确实喜欢Github界面和分叉选项,所以我认为这是源代码的不错选择。对于代码审查,我发现launchpad非常好用。 - Wolph

4

1
谢谢提供链接,我试图避免重复问题,但是错过了那个。 - Chris Baxter
1
@CalgaryCoder,既然你花时间感谢他,至少可以点个赞呀。算了,我已经帮你点了;-) - Mawg says reinstate Monica
这些链接现在似乎已经失效了。 - pbible

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接