在哪里举办开源项目:CodePlex,Google Code,SourceForge?

Chr*_*ter 166 hosting open-source

我一直在阅读有关"如何推广开源项目"的SO回答问题的积压.毫不奇怪,许多答案将人们指向SoureForge/FreshMeat和其他网站等以及博客和诸如此类的东西.这开始让我想到哪里是举办项目的最佳地点,为什么?

由于我的第一个项目目前托管在CodePlex上,我开始浏览Google搜索结果,以收集有关每个项目的优缺点的信息; 然而,我发现的比较相当过时(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以外的任何东西都持开放态度.此外,我目前的项目只是我的开发,但未来的项目可能是协作的,所以值得考虑...

Mic*_*tum 128

编辑2015-08-01:这个答案仍在获得观点和投票.它不仅仅是古老而且我想删除它,但由于它是公认的答案,我不能这样做.然后,它是社区维基和社区保持最新 - 谢谢你!

SourceForge已经越过黑暗面,接管项目并将其与Adware(Google GIMP Sourceforge广告软件)捆绑在一起.不惜一切代价避免.GitHub现在仍然是最受欢迎的,但有其他选择(例如,BitBucket为最多5个用户免费提供无限制的私人回购.)

在过去的几年中,这种情况发生了多大变化,这真是太疯狂了.如果你将来读到它,也许GitHub不再是很酷的产品.底线是:对于您想要使用的任何源控制系统,有许多令人敬畏的选项.

为了历史,下面的旧2010年信息

编辑:这个答案现在很古老.在过去的两年里,GitHub已成为主要的代码托管场所,每当我必须创建一个新的OSS项目时,我都没有一丝怀疑的痕迹去哪里.以下留下以供参考.

事实上,我的帖子现在已经快2年了(2008年),而且不再完全准确了.

为什么?

因为我认为SourceForge现在对于开源项目来说是微不足道的.好的,这会让我遇到很多麻烦,所以让我澄清一下:

我绝对相信开源项目应该在DVCS上运行,最好是git或mercurial,因为它们是最普遍的 - 没有反对Bazaar,但我认为它有点过于模糊.(编辑: SourceForge现在提供Mercurial和Bazaar,因此该论点不再适用.但是,经过两次重新设计后,我认为SF的形象并不太好.将它们与公司的图像进行比较:GitHub是Apple,SF是IBM.坚如磐石,但有点尘土飞扬)

所以如果我再次写这篇文章,那就是CodePlexGitHub对比BitBucket,GitHub是赢家.但这是一个全面的声明,所以让我添加细节.+/-不是严格的Pro/Con,更重要的是突出不同的哲学.

CodePlex网站

+ Real Mercurial/Git Hosting - 在TFS之上没有错误的桥梁,你有真正的Mercurial/Git
+集成Wiki,允许添加丰富的文档和漂亮的页面
+包括Bug Tracker和论坛
- 源代码浏览器不是很好- Diffs出现在弹出窗口中,只是'感觉'复杂
- Forks和Pull Requests'不那么容易' - UI可以使用一些工作

总体而言,CodePlex仍然很棒,但我觉得它更适合单个开发人员或非常小的团队,因为网站的重点是Wiki而不是源代码.它更像是一个发布而不是一个协作平台.从理论上讲,您不需要项目主页,您的CodePlex项目可以是您的一站式商店.

GitHub上

+ Git Hosting,支持SSL/SSH
+网络图允许查看分叉以及什么时候
+能够"观看"项目的合并- 您的帐户页面就像一个带有新签到的Facebook墙壁
+具有评论能力的超级好差异查看器关于单行更改 - 请参阅此处
+ Forking是一个双击过程,因此发送拉取请求
+ GitHub现在具有用于Windows的GUI工具GitHub
- 主页对于非开发人员来说不是很"漂亮".如果您的项目中有自述文件(支持某些标记语言,如Markdown或HTML),则会显示,但初始页面是源代码
- Wiki不是那么好 - 它是Markdown,但有时格式化感觉有点过于复杂.

GitHub与CodePlex有着不同的理念:它完全取决于源代码和开发人员之间的协作.主项目页面是最新的源代码.有一个单独的Wiki,但它更适用于文档而不是项目的演示.网络图表非常棒,虽然一旦有超过20个叉子就会让人感到困惑(通常当一个高调的项目被公布时,每个人和他们的狗都在分叉,但大多数叉子很快死亡).GitHub非常适合任何尺寸.

事实上,GitHub让我很容易分叉项目,应用修复/补丁,将其提交到我的分支并向作者发送拉取请求.与网络图一起,很容易看到提交.

但是你很可能需要一个单独的主页来向最终用户展示你的项目并提供下载,因为GitHubs的下载设施不是很好.

到位桶

+ Git/Mercurial
+免费提供私人存储库,最多5个用户

我没有使用BitBucket做出真正的评论.将它与众不同的一个特点是私人托管是免费的,而GitHub收费,而Codeplex根本不提供.

谷歌代码

Google Code不再是一个选项.

- 项目创建自2015年3月起停用,Google服务将于2016年1月25日永久关闭,因为竞争服务更好.
- 它很难看,浏览源代码太复杂了(链接有点埋没)

我没有用它,所以我不想说它很糟糕 - 事实并非如此.许多项目使用它,它非常稳定和强大,没有听到任何开发人员的坏处.然而,作为个人主观意见,"设计"让我失望.

SVN vs. Git/Mercurial

重申我上面关于SourceForge过时的评论:这当然有点苛刻.但我确实认为SVN对开源项目是有害的.首先,忽略文件的奇怪的元数据要求.在Git或mercurial上,您在源树的根目录中有一个名为.gitignore或.hgignore的文件,其中包含要忽略的文件/目录/模式列表.没有魔法svn:忽略.svn文件夹中的元数据.仅此一项就让SVN脱离水面.如果我开始一个新的Visual Studio项目,我需要应用那个神奇的元数据,而使用Git/mercurial我只需复制一个文件并完成它.

然后,分叉,修补和发送拉取请求的能力非常棒,特别是对于小/一次性补丁.

最后但并非最不重要的是,SourceForge对我来说仍然太复杂了.这不是一个糟糕的主持人,但它真的显示它的年龄恕我直言.话虽如此,它仍然很强大,并且在世界范围内有许多镜像.Bug Tracker也比其他人更复杂.

此外,如果您的项目由于某种原因需要严格的贡献规则(这可能是有意义的,例如法律保护以确保承诺的代码确实合法贡献)那么在SourceForge上托管的传统系统(如SVN)可能会起作用.

编辑:不知道SF最终有分布式托管.如上所述,它很强大,但不再是"酷孩子"了,我发现它太复杂了.

TL; DR

对于任何中小型项目,我全心全意地推荐GitHub,对于你想要一个不错的网站的小项目,我会选择CodePlex,对于私人项目,我会选择BitBucket.对于需要非常复杂的错误跟踪器,大量额外功能和"真实"网站的大型项目,请考虑Source Forge.

  • 您正在运行的项目也有一些特殊因素.例如,对于.Net项目,CodePlex支持ClickOnce部署,而Google Code则不支持. (4认同)
  • 我不能同意谷歌代码,我认为这很容易,直观和轻量级(网站很快**!与CodePlex相比......!)并且每次都是我的第一选择.但其余的是一个有趣的读物. (3认同)
  • @Konrad True,如上所述,这是个人的事情.也许简约的方法让我失望.我没有听到关于*功能*方面的任何不好的事情,但我从未在那里举办过一个项目. (2认同)
  • 很棒的答案,非常详细!对我最感兴趣的主要网站(好吧,CodePlex和GitHub)之间的差异进行了很好的解释.同样有趣的是,你认为SourceForge在这个阶段是微不足道的; 肯定是旧文章的意见改变.谢谢! (2认同)

erj*_*ang 8

好吧,您还没有说过您使用的源控制系统,这会对您的选择产生很大影响.

(不全面)

  • Git - > GitHub或Gitorious是明显的选择
  • Mercurial - > BitBucket
  • SVN - > Savannah,SF.net
  • Bazaar - > Launchpad
  • CVS - > 升级到更新的源控制系统

我是Git粉丝,但Mercurial也很棒.我个人使用GitHub这是一个很棒的协作功能,比如简单的分叉和拉取请求.

我想补充一点,CodePlex在微软阵营之外的开源生态系统中并不是很受欢迎,而且从他们下载最多的列表中可以很容易地看到它.它可能是以微软为中心的,以及过去的耻辱感的组合.如果您专门为.NET或类似的东西开发,那么这将改变观点.

编辑:另外,我认为开发人员通常不会随机浏览有趣的项目.你同样可能因为你是Codeplex上被忽视GitHub上,但如果有人没有发现你的项目,他们将更有可能将消息发送/文件中的错误/如果他们已经有一个网站上的账户贡献.

  • 我目前使用Mercurial(不会用10英尺杆接触TFS) (2认同)
  • ***易分叉这句话有问题*** (2认同)
  • 对于任何好奇的人,在GitHub上,不是要求成为项目的不可逆转的分裂,而是修改现有项目的最佳方式.在您进行个人修改后,您可以向该原始项目发送一个"拉取请求"到您的分叉的更改. (2认同)