CODE 官方博客

CODE平台的系统架构与安全架构

  这篇文章是开源大会上关于CODE平台介绍的完整版,其实早应该放在官方博客上的。里面详细讲述了我们平台选型过程和系统架构,希望能给对CODE结构有兴趣的朋友一些参考。

CODE系统架构

  CODE平台在初期经过一番调研后,我们锁定了几个Git服务的开源项目:Gitorious,Gitlabhq,Gitblit。其中Gitblit是java实现,具备核心功能,性能上有优势,但整体上不太成熟。Gitorious和Gitlabhq都是比较成熟的实现,并且和Github一样,都是基于RoR实现,可以共享很多开源资源。我们仔细比较了Gitorious和Gitlabhq,整体上来说软件架构很像,都使用Grit访问Git仓库,都是用RoR。虽然Gitorious的功能更加完整,但Gitlabhq很好的使用了各种开源Rails插件,如,用Devise实现登录,用SIX实现权限管理,用Grack实现Git over Smart HTTP,Bootstrap作为前端框架等,代码整洁易懂。代码好维护是软件工程中太重要的一个衡量指标了,虽然当时Gitlabhq4.2还使用Gitolite作为Git仓库管理,是个必须改造的累赘,经过权衡,我们还是选择了Gitlabhq作为我们基础来实现。

  系统架构如下:

 

系统架构

 

  作为Git服务,功能上就是要实现Git仓的Web访问和比较常用的三个协议:SSH, Git, Smart HTTP。Web访问就不用说了,就是Git仓的WEB展现。SSH因为其安全性,基本上是使用Git开发者进行pull/push最常用的协议。 Git协议只支持Clone,因为其效率最高,深受喜爱。Smart HTTP则最方便,而且使用最通用的80端口,不会被公司防火墙屏蔽。功能上来讲,实现起来问题不大。仔细考虑一下,就会发现其中最大的难题,在于解决大规模部署,数据安全,动态扩展等平台维护功能上。

  作为Git公众服务,不可避免的Repos会非常的庞大,并且随着用户量的增加需要动态的扩展。对此,常规的有两种方案:

方案

 

  方案1:使用分布式文件系统:

  系统由多个Server和一个分布式文件系统组成, 由负载均衡器负责随机分发用户的各种请求给每个Server。每个server实现所有的Git服务(WEB, SSH Listener, Git Listener, Smart HTTP Listener),所有的server可以共享一个分布式文件系统。通过Posix挂接到Server的特定路径。DFS可以根据需要动态的扩展,也负责数据容灾和高可靠性。

  方案2:使用分布式后端:

  系统由前端(FE)和后端(BE)组成。后端保存所有Git仓库,负载均衡把用户请求平均分配给前端,前端根据请求类型,分别通过远程调用、透明代理访问后端的Git仓库。

  分布式文件系统实现起来比较简单,但考虑到目前分布式文件系统都只适合于大文件的存储,而Git恰恰都是大量的小文件操作,性能以及存储利用率都非常成问题。所以我们选择了分布式后端的方案。分布式后端充分的使用了所有后端机器的计算能力,需要实现Grit库的远程调用以及SSH, Git的代理,后端路由表,而且为了实现高可靠性,每个后端都必须是一对,提供服务的高可靠性以及保证数据安全。

  到此,我们可以逐个功能分析一下工作原理:

  1. Web访问。用户提交请求, 首先会到达负载均衡。负载均衡会把用户请求发送到任意一个前端,前端运行Web服务器,我们的Rails应用会处理用户的请求,根据用户请求的Git仓库, 查询到仓库所在的后端。通过Grit远程调用访问后端数据,然后变为HTML展现给用户。

  2. SSH访问。 Git over SSH通过publickey鉴权,用户执行git命令后,Git客户端会把相应的Git命令,用户的publickey,以及访问的Git仓库名发送给服务器。请求首先会到达负载均衡。负载均衡会把请求发送到任意一个前端,前端有一个经过我们改造的OpenSSH的服务,首先会根据请求中的publickey,仓库名以及git命令到数据库中查询权限,如果允许,前端则通过路由查询到Git仓所在的后端,并且把SSH连接代理到相应的后端,后端SSH listener完成数据读取,通过前端的SSH代理传给用户。

  3. Git 访问。Git协议用来Clone公开的仓库。同样用户执行git命令后,Git客户端会把相应的Git命令,访问的Git仓库发送给服务器。请求首先会到达负载均衡。负载均衡会把请求发送到任意一个前端,前端有一个我们的Git Daemon服务,该服务首先检查所访问的仓库是否是公开仓库,若是,则把把请求代理到相应的后端执行。

  4. Smart HTTP访问。 HTTP协议的代理和负载均衡都比较成熟,同理可以很容易的实现Smart HTTP的处理。

  不难分析出搭建系统的一些要点:

  • 负载均衡需要支持HTTP, SSH, Git等协议。我们在选择了LVS后,惊喜的发现,阿里云的LBS完全能够满足以上协议,使用之。

  • 需要改造OpenSSH,使它能够支持大量的用户使用Git的功能。主要是存储Publickey采用数据库,和Git系统的结合接口。我们通过改造OpenSSH完成。

  • 需要实现Git Daemon,因为Gitlabhq没有支持Git协议,Git自带的Git Daemon性能不适合于大并发,我们自己用GO语言实现了一个Git Daemon。GO语言作为能够处理高并发的高级语言,其开发效率和Ruby可以媲美。我们已经开源了此项目: https://code.csdn.net/CSDN_Code/code_git_daemon ,欢迎大家一起完善。

  • 需要实现SSH 和Git Proxy,完成前端到后端的透明代理。

  • Grit 远程调用,完成前端WEB应用对后端Git仓库的访问。

  • Grit库的优化以及中文支持。在实现过程中,我们发现Grit库对中文支持不够好,中文文件名,中文Branch以及Tag等都存在问题。如果使用Gollum,会发现wiki页面也不支持中文名。我们都对此专门进行了修改。同时Grit在有些方面性能也有很大的瓶颈。我们也在Github上对我们所做的修改推送给了原项目,如果Grit库的维护者接受了我们的修改,大家就能看到一个全面支持中文的系统了

 

CODE安全架构

  作为代码托管服务,系统的安全性是需要特别着重考虑的因素之一。其中最为重要的,莫过于用户数据的健壮性,我们在此方面上了三道保险:

 

  安全架构

图:CODE平台安全架构

 

  在基础平台安全层面,我们从物理安全,网络安全,系统安全三方面给予CODE平台最牢靠保障。首先,CODE采用阿里云的存储,保证数据同时有三份,定期备份同步用户数据到备份服务器,在某些灾难情况下也可以恢复用户的数据。其次,CODE采用具备负载均衡及双机热备功能的设备持续提供网络服务,其强劲的网络防护设置能有效防护各类网络攻击,并实时网络状态监控。再次,CODE拥有持续的端口入侵扫描,挂马扫描,漏洞扫描防护,保证系统最新补丁持续及时更新,实时的系统状态监控,有效防止过载及溢出错误。

  在中间应用安全层面,CODE提供多种安全传输协议,对各应用均进行特定的安全加固,实行实时应用服务状态监控,以最大限度的保障应用安全。每日的数据都有多份备份副本,并实施安全的数据访问控制,各用户数据相互独立,实时用户数据操作记录以保障数据安全。口令安全方面,CODE采用统一的网站登录方式,存储及登录时均使用加密操作,并提供用户对SSH协议key的自行管理。

  在管理安全层面,CODE使用了堡垒机机制,具备完整的安全管理操作策略及手册、完备的应急恢复策略和详尽的日志审计,保证所有的操作人员的操作权限明确,并且都有纪录可查。全站使用了HTTPS协议,保证各协议接口都安全可靠。

  我们正在奋力打造一个具备完美功能的代码托管平台,现在代码片、组织等功能已经上线,代码搜索、客户端还有一些我们认为适合中国开发者的功能,也会逐步和大家见面。

 

  接下来还希望大家多多鼓励,多多帮助,可以给我们开issue,也可以在论坛发表意见。 当然还可以通过派生我们的项目加入我们的开发。让大家一起努力打造中国良好的生态环境!

重大更新:CODE支持“组织”账号啦!

  使用CODE平台进行在线协作,对于很多企业和团队来说,拥有统一的组织账号,对项目和开发团队进行统一管理是很有必要的。在本次版本升级中,CODE平台就加入了“组织”这一重要功能。

  现在起,用户可以在CODE平台上创建自己的组织了。一个组织可以创建多个项目,也可以建立多个团队,其中每个团队都被赋予一定的项目权限,针对不同的项目,不同的团队将会有读写、只读等权限的区分。组织中的成员可以属于不同的团队。

  组织帐号是不能单独登陆的,组织的创建者和管理员登录后可以切换到组织进行管理。

 

什么样的人需要使用组织?

      ▪  大型的开源项目

      ▪​  企业

      ▪​  大型的开发团队

组织中的“团队”

  团队是为了在组织中划分权限而设定的,可以理解为是对某些项目拥有一定的权限的人群的集合。团队分为管理员团队和普通团队。

  其中管理员团队是组织中默认建立的,他可以修改组织的信息、创建及管理其他的团队(添加成员和项目)、创建及管理组织的项目。只有组织的创建者可以添加及删除管理员。

 

普通团队按照权限可分三种:

    ▪  管理和读写权限, 像项目主人一样拥有项目的管理和读写权限,能够设置项目,如修改名称、描述信息、项目公钥等。

    ▪  读写权限,对项目进行pull 和 push操作

    ▪  只读权限,对项目进行pull操作。只读权限对于公开项目是没有意义的,因为默认所有人都对公开项目有读的权限。

创建组织

  在CODE顶栏右侧的快捷方式中您可以发现“创建组织”的选项。

组织

 

  一个用户可以创建多个组织。其中组织的名称是必填项,它必须是唯一的,支持字母、数字和下划线,不能使用中文。这一名称将被用在组织访问的url和项目的命名空间。您还可以为组织添加公开邮箱、微博、QQ、主页、组织介绍、头像等信息,这些是可选项。

 

  组织

删除组织

  只有组织的创建者拥有对组织的删除权限。

  在“组织设置——组织信息“页面最下方,创建者可以见到如下图所示的”组织管理“界面,您可以在此修改组织名称、删除组织等。需要注意的是,这两项操作都有极大风险,请谨慎处理。

 

组织

 

创建团队

  组织创建成功后将进入到组织的控制面板。您也可以从用户的控制面板切换到组织的控制面板(如下图)。

 

组织

 

  在组织控制面板,点击“组织设置”按钮,将进入“组织信息”、“团队管理”、“成员管理”、“安全日志“的设置界面。

  在团队管理中,您可以看到默认已经有一个组织的管理员团队了。你可以点击新建团队,输入团队的名称,选择团队的权限,保存后就可以完成团队的创建。

  接下来,就可以为团队添加成员和项目了:

    ▪  输入您要添加的成员,点击添加,如果该成员已经加入组织则直接添加成功,如果该成员还未加入组织,您将收到提示是否邀请加入,确认后对方将收到邀请通知,对方接受后便加入到组织团队。

    ▪  在项目选择栏中输入组织已有的项目添加到团队中,这样团队的所有成员都将拥有刚才设置的权限来访问项目了。

组织

 

离开组织

  如果您由于某种原因想离开一个组织,在个人的帐号设置中选择组织,这里列出了您加入的所有组织,在组织上点击离开即可离开组织。

 

组织

 

在组织和个人间切换

  有了组织之后,有时就需要用组织和个人两种不同来身份进行操作,如创建项目等操作,你可能需要在组织和个人间切换,以下介绍几种身份切换方式:

    ▪  在控制面板中可以直接切换个人和组织

组织

 

    ▪  创建项目时可以选择是为组织创建还是个人

组织

 

    ▪  派生一个项目时可以选择项目派生给组织还是个人

组织

 

  目前,CODE平台上的组织默认不包含私有项目功能,这部分功能将稍后加入。

有了Web Hook,项目提交更智能!

    Web Hook 是对提交的扩展钩子, 设置了Web Hook, 当项目收到新的提交时,就将提交的信息发送到您设定的URL上, 以触发其他操作。在CODE平台,使用HOOK程序可以让你自由的设置提交信息的触发动作,让项目提交和其他操作的集成变得更简单、更智能!
    当您执行push操作将更新提交到repository时,我们首先将这次push的信息和commits的内容生成一个json格式的body数据对象,然后通过发送POST请求到您的Web URL地址。


body
    我们会使用一个单独的“body”作为POST请求中的参数,参数中的commits数组部分,最早的提交在最上面,最新的提交在最下面。

    下面是body数据例子:

hook

 

设置
    我们推荐使用 RequestBin 测试我们的WebHook, RequestBin 具体用法如下:

    1、访问 http://requestb.in 点击 'Create a RequestBin'

 

 hook

 


    2、拷贝系统提供的URL地址

 

  hook

 


    3、登录CODE系统,进入目标项目的设置页面

 

 hook

 


    4、点击“Hooks” 菜单

 

hook

 

  
    5、点击 “WebHook”子菜单项

 

hook

 


    6、粘贴您拷贝的 RequestBin URL地址并“添加”

 

hook


  
测试
    在您的客户端修改文件并执行 push操作,提交到CODE 系统中,或直接点击WebHook 页面的“测试Hook” 按钮。然后返回您的 RequestBin 页面并刷新,您会看到新的POST参数:


  hook

 


    怎么样,是不是很酷?快去设置一下吧~~

你使用了哪些开源技术,快去标注出来吧!

    开源软件和开源技术为我们的开发工作带来了极大的便利,正是有了它们,开发者们才避免了“重复造轮子”,节省了大量时间。
    收获的同时也要积极回报,这就是开源精神。除了参与开源项目,在您使用开源项目的时候给出项目来源也是推广开源、尊重版权的一种方式。
    在本次的版本升级中,CODE平台就为项目加入了“项目引用”的功能。如果您在项目开发中使用了某些开源技术,可以直接项目首页的“项目引用”中将其标注出来,让更多的人了解这些无私的开源技术,同时,也方便同样使用该技术的开发者与您交流!


添加“引用项目”
    在项目首页,点击“项目引用“的标签,您可以添加和查看当前项目引用了哪些开源项目和开源技术。
    点击“添加新项目”的绿色按钮,在弹出框中填入项目名称、项目url地址,和简单的项目描述,提交即可。

 

引用项目


 
    添加完成后的效果如下图所示:

 

引用项目


 
搜索“引用项目”
    我们还同步更新了CODE的搜索技术。如果您在搜索框中输入某个开源项目的名称,如 “Six”, 在搜索结果中,除了列出相关项目外,还会列出所有标注了使用“Six”开源项目的项目。

 

引用项目

CODE支持项目评论了,亲,给个好评吧!

    用户的评价和看法对一个项目来说是很重要的反馈: 项目作者通过评论可以了解项目的受欢迎程度,收集用户意见;旁观者则可通过评论了解一个项目是否有价值、存在哪些优点和缺点。
    之前CODE平台的评论功能是仅针对项目中单个文件的单次提交的(点击代码文件的“提交信息”或“提交编号”时才可以看到最下方的评论框),这种评论方式的好处是方便用户就单次提交出现的问题进行反馈,但对想了解项目整体情况的人来说,则不容易发现这些反馈。
    现在,CODE平台加入了“项目整体评论”的功能,你可以对项目的整体构架、项目价值等方面做出整体评价了!


评论添加方法如下:
    进入项目首页,在“介绍”内容下面,您可以看到一个评论框。
    直接输入内容,点击“增加评论“就可以发表您对项目的总体看法。


 项目评论

 


    任何人均可对公开项目添加评论。项目所有者和有写权限的项目成员可以管理评论内容,如删除一些恶意的评论等。


    现在,快去给你喜欢的项目加个“好评“吧~

CODE代码片功能登陆CSDN博客,代码分享风暴来袭!

    前不久CODE推出了代码片功能,如大家所知,此功能除了能存放和管理代码片之外,还有一个很重要的特点就是可以在网站和博客中引用代码片。

    CSDN博客今天就加入了“引用CODE代码片”这一功能。现在,只需点击一个小小的按钮图标,你就可以很方便的在CSDN博客中插入引用的代码片了。

下面来看看具体的操作步骤:
    您在编辑博客时,如果想插入一段来自CODE代码片的内容,复制其代码片的嵌入脚本(如图示):

博客引用代码片

 
    点击博客编辑框的“引用CODE代码片”图标(如图示),将复制的内容粘贴在此框中,确认即可:

引用代码片


     插入引用地址后,在文章编辑器中会显示形如{CSDN:COED:27}这样的一段代码,如图

 
    文章发布后的实际显示效果如下。点击代码片底部的“C”图标可以链接到该代码片在CODE平台的托管地址。

 
    如上操作,便轻松完成了在博客中插入代码片的操作。快来试试吧。

CODE平台代码片功能上线,快来分享你的代码吧

  收藏或托管一段代码,在外部程序中引用一段代码,这些对于开发者来说都是很常见的操作。为了方便大家进行代码管理, CODE平台今天推出了备受期待的“代码片”的功能。

  使用代码片功能,您可以:

  •     很容易的创建、分享一段代码
  •     在其它网页中引用代码片的内容
  •     使用Git版本库维护代码片段
  •     搜索发现精彩的代码片段
  •     称赞和派生您喜欢的代码片
  •     对代码片进行讨论

  下面,我们就来看看代码片功能如何使用:

  1、创建一个代码片

  在用户面板页的“代码片”中点击“创建代码片”就可以创建您的代码片

代码片

  输入代码片的描述和文件名,编辑器会根据文件后缀名自动选择编程语言,您也可以强制选择某中变成语言。然后您可以在编辑器中输入你的代码,或者直接拷贝现有的代码,语法将高亮显示。

  一个代码片可以包含多个文件,如果想新增加文件只需要点击“添加文件”即可。

代码片

   2、查看代码片

  代码片分为公开和隐藏两种。

  公开的代码片URL为数字,对所有人可见,用户可在CODE平台“搜索”和“发现”中找到公开的代码片。

  隐藏的代码片URL为20位16进制的哈希值,隐藏代码片无法被“搜索”或“发现”,但用户可直接通过其URL访问和查看该代码片。

  3、管理代码片

  一个代码片本身就是一个Git仓库,其支持SSH、Https、Git三种协议的访问,您可以使用 git clone 将代码片的仓库克隆到本地,如

  git clone git@code.csdn.net:snippets/37.git

  进行编辑后再push 到CODE平台。

  您也可以像查看其他Git仓库一样查看代码片的历史版本及操作记录。

  代码片还支持派生、称赞、搜索、发现等操作。

  4、引用代码片

  需要的时候,您可以在外部网站引用CODE平台上的代码片,具体操作如下:

  在代码片页面,可以看到“嵌入脚本”的链接,如

  <script src="https://code.csdn.net/snippets/37.js"></script>

代码片

  拷贝这个链接并加入到其他网页,如个人博客(需要支持在网页内运行js脚本),即可在相应的网页中嵌入该代码片,并保持语法加亮等功能。

代码片

  好啦,以上就是代码片功能的基本操作。现在就去上传你的代码片,分享你的代码吧!

使用项目公钥部署代码到服务器

  SSH协议是一种非常常用的Git仓库访问协议, 使用公钥认证、无需输入密码, 加密传输,操作既便利又保证了安全性。

  为某个用户帐号配置公钥后,用户就可以使用SSH协议访问CODE平台上的Git仓库。

  今天,CODE平台最新推出了项目公钥功能,方便您直接从服务器端向CODE平台推送代码。

  什么是项目公钥?

  项目公钥是为一个项目的部署服务器设置的。

  在没有项目公钥的情况下,如果要使用SSH协议把CODE平台的代码部署到服务器上, 或者在服务器上向CODE平台推送代码,就需要为服务器额外使用一个用户帐号。

  有了项目公钥功能后,您可以直接把服务器的SSH公钥添加到项目设置中,这样服务器就可以直接访问CODE平台的项目代码了。

  如何添加项目公钥?

  进入某个项目的项目设置页面,点击右侧栏的“项目公钥”标签,点击“添加公钥”按钮,将部署服务器的公钥粘贴到输入窗口中然后点击“保存”即可。

项目公钥

  添加完成后,就可以从部署服务器用SSH协议来访问远端的代码仓库了。

  一个项目可以设置多个项目公钥。您也可以随时删除或者新增公钥。

  好了,关于公钥管理,有更好的建议或想法欢迎随时向我们反馈。更多新功能,请持续关注CODE平台博客~

CODE平台支持在线创建文件啦

  上个Sprint我们推出了在线编辑文件的功能,现在您又可以在线创建一个新文件了!

  如何创建:

  进入您的项目代码页面,您会看到在代码文件列表上方的项目名旁边有一个带“+”号的文档标志,点击该标志,将会在线创建一个新文件。

在线文件

  在弹出的新页面里输入文件名称、文件内容、描述信息等,点击提交,新的文件就生成了。

在线创建文件

  查看提交历史,您会看到有一个新的提交,内容就是刚刚创建的新文件。

  怎么样?是不是很简单?

  晚些我们还会推出文件在线删除的功能,敬请期待!

“2013年度中国优秀开源项目评选”获奖项目展示

  由中国开源软件推进联盟主办、CSDN和程序员杂志协办的“2013年度中国优秀开源项目评选”活动已经落下帷幕。该活动致力于为国内优秀的开源项目和开发者提供一个更大的展示和交流平台,得到了国内众多开源人的支持,在10多天的时间内,我们共收到开发者提交的118个开源项目。

  项目展示: https://code.csdn.net/2013OSSurvey/

  经过热心网友以及专家评审团的投票,10个参选项目APDPlat、DWZ、FineUI、Pomelo、SpringSide、thinkPHP、UbuntuKylin、UEditor、zTree、禅道以及2个专家特别推荐项目Node-Webkit和Cocos2d-x获得了“2013年度优秀开源项目”奖项,并在“第八届开源中国开源世界高峰论坛”首日全体会议上获颁荣誉证书。

  由于时间仓促,还有一些优秀的开源项目没有出现在此次评选中。为此,我们将长期开放项目提交入口。项目提交成功后,我们会将其添加到展示页面,为更多人所知,同时这些项目还将作为下届评选的候选项目。

  项目提交入口:http://surveies.csdn.net/survey/comein/586

开源项目评选

获奖项目展示(按照首字母排序):

1. APDPlat

APDPlat是Application Product Development Platform的缩写,意为应用级产品开发平台。

作为应用级产品的开发平台,APDPlat提供了应用容器、多模块架构、代码生成、安装程序、认证授权、备份恢复、数据字典、web service、系统监控、操作审计、统计图表、机器绑定、防止破解、数据安全、内置搜索、数据转换、maven支持、WEB组件、内容管理等功能。

APDPlat底层几乎全部采用Java开源框架,对Spring、Struts2、Compass做了定制修改,接管了系统启动和关闭的控制权,统一了配置文件,并实现了诸多平台级的功能,为应用级产品开发铺平了道路。

开源评选

项目地址: https://github.com/ysc/APDPlat
文档: https://github.com/ysc/APDPlat/wiki
在线演示:http://apdplat.net/(用户:admin 密码:admin)
开源协议:GNU GPL v3

2. DWZ(jUI)

DWZ富客户端框架(jQuery RIA framework)是中国人自己开发的基于jQuery实现的Ajax RIA开源框架。设计目标是简单实用、扩展方便、快速开发、RIA思路、轻量级。DWZ支持用html扩展的方式来代替javascript代码,基本可以保证程序员不董javascript,也能使用各种页面组件和ajax技术。如果有特定需求也可以扩展DWZ做定制化开化。

国内很多程序员javascript不熟,大大影响了开发速度。 使用DWZ框架自动邦定javascript效果。不需要开发人员去关心javascript怎么写,只要写标准html就可以了。DWZ简单扩展了html标准, 给HTML定义了一些特别的class 和attribute。DWZ框架会找到当前请求结果中的那些特别的class 和attribute,并自动关联上相应的js处理事件和效果。

DWZ基于jQuery可以非常方便的定制特定需求的UI组件,并以jQuery插件的形式发布。

开源评选

项目地址: http://j-ui.com/
文档: http://j-ui.com/doc/dwz-user-guide.pdf
在线演示: http://j-ui.com/
开源协议:Apache License 2.0

3. FineUI

基于 ExtJS 的专业 ASP.NET 控件库,创建 No JavaScript,No CSS,No UpdatePanel,No ViewState,No WebServices 的网站应用程序。

开源评选

项目地址: http://fineui.com/
文档: http://fineui.com/doc/
在线演示: http://fineui.com/demo/
开源协议:Apache License v2.0

4. Pomelo

Pomelo 是网易的基于 Node.js 的高性能、分布式游戏服务器框架。它包括基础的开发框架和相关的扩展组件(库和工具包),可以帮助你省去游戏开发枯燥中的重复劳动和底层逻辑的开发。

Pomelo 不但适用于游戏服务器开发, 也可用于开发高实时 Web 应用,它的分布式架构可以使 Pomelo 比普通的实时 Web 框架扩展性更好。

开源评选

项目地址: http://pomelo.netease.com/
文档: http://pomelo.netease.com/api.html
在线演示: http://pomelo.netease.com/lordofpomelo
开源协议:MIT

5. SpringSide

SpringSide是以Spring Framework为核心的,Pragmatic风格的JavaEE应用参考示例,是JavaEE世界中的主流技术选型,最佳实践的总结与演示。

SpringSide以RoR式的简约风格,将Java社区众多优秀轻量级开源项目整军为一个黏合的框架,以构件式的开发架构,配合Ant与Eclipse plugin的生成工具,作为大家开发Java企业应用的方便起点。同时,它的示例代码充分演示了开发团队与SpringSide社区共同总结的、Java企业应用领域方方面面的最佳实践。

SpringSide主要包含两部分:Quickstart: 一个迷你的TodoList应用;Showcase: 五花八门的JavaEE技术大派对。

项目地址: http://www.springside.org.cn/
文档: https://github.com/springside/springside4/wiki
开源协议:Apache License 2.0

6. thinkPHP

ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。

ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,众多的典型案例确保可以稳定用于商业以及门户级的开发。

项目地址:http://www.thinkphp.cn/
文档: http://doc.thinkphp.cn/manual/
开源协议:Apache License v2.0

7. UbuntuKylin

UbuntuKylin是Ubuntu官方认可的衍生版,其宗旨是创建一个Ubuntu的中文变体,以更适合中文用户。UbuntuKylin已于2013年4月25日与Ubuntu同步发布13.04正式版本。UbuntuKylin 13.04为广大“优客”带来了中文农历、天气预报、音乐搜索等特色软件,并定制了中文主题、小企鹅输入法、WPS办公软件等应用。目前,UbuntuKylin 13.10已在路上。

开源评选

项目地址: http://www.ubuntukylin.com/
文档: http://www.ubuntukylin.com/usermanual.html
开源协议:GNU GPLv2,GNU GPL v3

8. UEditor

UEditor是由百度前端通用编辑器组开发的所见即所得富文本web编辑器,具有轻量、可定制、注重用户体验等特点。

开源评选

项目地址: http://ueditor.baidu.com/website/
文档: http://ueditor.baidu.com/website/document.html
在线演示: http://ueditor.baidu.com/website/onlinedemo.html
开源协议:BSD

9. zTree

zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。专门适合项目开发,尤其是 树状菜单、树状数据的Web显示、权限管理等等。

开源评选

项目地址: http://www.ztree.me/v3/main.php
文档: http://www.ztree.me/v3/api.php
在线演示: http://www.ztree.me/v3/demo.php
开源协议:MIT

10. 禅道项目管理软件

禅道是第一款国产的开源项目管理软件。它集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体,是一款专业的研发项目管理软件,完整地覆盖了项目管理的核心流程。

禅道主要特点:注重实效的管理思想,合理的软件架构,简洁高效的操作,优雅的代码实现,灵活的扩展机制,强大而易用的api调用机制,多语言支持,多风格支持,搜索功能,统计功能。

开源评选

项目地址: http://www.zentao.net/
文档:http://www.zentao.net/help-book-zentaopmshelp.html
在线演示: http://demo.zentao.net/my/
开源协议:LGPL

专家推荐项目:

1.  Cocos2d-X

Cocos2d-X是一个开源的移动2D游戏框架,在MIT许可证下发布的。这是一个C++ Cocos2d-iPhone项目的版本才,其发展的重点是围绕cocos2d跨平台,即实现一次编码,在各平台分别编译后即可运行,无需为跨平台修改大量代码。

目前Cocos2d-x引擎已经实现横跨iOS、Android、Bada、MeeGo、BlackBerry、Marmalade、Windows、Linux等平台。

项目地址: http://cocos2d.cocoachina.com/
文档: http://cocos2d.cocoachina.com/document
开源协议:MIT


2.  Node-Webkit

node-webkit是一个支持跨操作系统(Windows,Linux,MacOS)的利用流行的Web技术(Node.JS, JavaScript,HTML5)来编写应用程序的平台。应用程序开发人员可以轻松的利用Web技术来实现各种应用程序。node-webkit性能和特色已经让它成为当今世界领先的web技术应用程序平台。

项目地址: https://github.com/rogerwang/node-webkit
文档: https://github.com/rogerwang/node-webkit/wiki
开源协议:MIT

入围项目(投票排名TOP20但未获奖的项目,按照首字母排序):

1. Ansj中文分词

Ansj中文分词是一款纯Java的、主要应用于自然语言处理的、高精度的中文分词工具,目标是“准确、高效、自由地进行中文分词”,可用于人名识别、地名识别、组织机构名识别、多级词性标注、关键词提取、指纹提取等领域,支持行业词典、用户自定义词典。

Ansj是ictclas中文分词算法的java实现,基本上重写了所有的数据结构和算法。词典是用的开源版的ictclas所提供的,并且进行了部分的人工优化。内存中中文分词每秒钟大约100万字(速度上已经超越ictclas)。

开源评选

项目地址: https://github.com/ansjsun/ansj_seg
文档: https://github.com/ansjsun/ansj_seg/wiki
在线演示:http://demo.ansj.org/
开源协议:Apache

2. CnPack IDE Wizards

CnPack IDE 专家包(CnWizards)是一组集成在 Delphi/C++ Builder/ CodeGear RAD Studio 的 IDE 中,用于增强 IDE 功能、提高 IDE 的可用性及开发效率的工具。CnPack IDE 专家包包含在CnPack项目中,这是由互联网上一群中国程序员开发的开放源码的自由软件项目。

开源评选

项目官网: http://www.cnpack.org/index.php?lang=zh-cn
项目文档: http://www.cnpack.org/showlist.php?id=3&lang=zh-cn
开源协议:CnPack IDE专家包发布协议(内容来源于OpenSource的官方开源协议,见 http://www.cnpack.org/showdetail.php?id=497&lang=zh-cn)

3. GoAgent

GoAgent是一个基于Google App Engine的,全面兼容IE、FireFox、Chrome的网络代理工具,使用Python和Google App Engine SDK编写,程序可以在MicrosoftWindows、Mac、Linux、Android、iPod Touch、iPhone、iPad、webOS、OpenWrt、Maemo上使用。

项目官网:https://code.google.com/p/goagent/
文档:https://code.google.com/p/goagent/w/list
开源协议:GNU GPL v2

4. ichartjs

ichartjs 是一款基于HTML5的图形库。使用纯javascript语言, 利用HTML5的canvas标签绘制各式图形。 ichartjs致力于为您的应用提供简单、直观、可交互的体验级图表组件。是WEB/APP图表展示方面的解决方案 。如果你正在开发HTML5的应用,ichartjs正好适合您。 ichartjs目前支持饼图、环形图、折线图、面积图、柱形图、条形图。

开源评选

项目地址: http://www.ichartjs.com/
文档: http://www.ichartjs.com/docs/zh/
在线演示: http://www.ichartjs.com/samples/index.html
开源协议:Apache License 2.0

5. InnoSQL

InnoSQL是网易杭州研究院开发维护的MySQL分支,目前基于MySQL 5.5。InnoSQL的主要目标是提供更好的性能以及高可用性,同时便于DBA的运维以及监控管理。其完全兼容于原版MySQL数据库,所有添加的功能都是动态的。若不开启这些功能,与原版MySQL数据库的工作方式完全相同。

项目地址: http://mysql.netease.com/
文档: http://mysql.netease.com/doc/index.html
开源协议:GPL

6. JEECG智能开发平台

JEECG(J2EE Code Generation)是一款基于代码生成器的J2EE智能开发平台。

JEECG V3.0版本推翻原有SSH2架构,采用SpringMVC+Hibernate+Spring jdbc基础架构,采用面向声明的开发模式,基于泛型方式编写极少代码即可实现复杂的数据展示、数据编辑、表单处理等功能,再配合代码生成器的使用将JavaEE的开发效率提高6倍以上,可以将代码减少60%以上。

JEECG可以应用在任何J2EE项目的开发中,尤其适合企业信息管理系统(MIS)、内部办公系统(OA)、企业资源计划系统(ERP)、客户关系管理系统(CRM)等。

开源评选

项目地址:http://www.jeecg.org/
在线演示: http://demo.jeecg.org:8080/
开源协议:Apache License 2.0

7. JFinal

JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有Ruby、Python、PHP等动态语言的开发效率!

项目地址: https://github.com/jfinal/jfinal
文档: http://www.ostools.net/apidocs/apidoc?api=jfinal
开源协议:Apache

8. KindEditor

KindEditor是一套开源的在线HTML编辑器,主要用于让用户在网站上获得所见即所得编辑效果,开发人员可以用 KindEditor 把传统的多行文本输入框(textarea)替换为可视化的富文本输入框。

开源评选

项目地址: http://www.kindsoft.net/
文档:http://www.kindsoft.net/doc.php
在线演示: http://www.kindsoft.net/demo.php
开源协议:LGPL

9. Mocoolka

Mocoolka由Mocoolka Cloud和Mocoolka App构成。Mocoolka Cloud 是基于web的设计、开发、管理平台,分析人员可以通过平台直接建立软件,无需编写代码。从而使分析人员更专注于业务逻辑、创新并创造真正的商业价值,支持PC、移动设备访问。Mocoolka App 是在Mocoolka Cloud上搭建的商业应用。

开源评选

项目地址: http://www.mocoolka.com/ 
文档: http://sourceforge.net/p/mocoolkacn/wiki/Home/ 
开源协议:LGPL v3

10. WebBuilder

WebBuilder是一款开源的可视化Web应用开发和运行平台。基于浏览器的集成开发环境,采用可视化的设计模式,支持控件的拖拽操作,能轻松完成前后台应用开发;高效、稳定和可扩展的特点,适合复杂企业级应用的运行;跨平台、数据库和浏览器的架构,适应复杂的服务器和客户端环境;包括智能数据库访问在内的多项先进技术,使应用系统的开发更快捷和简单。

使用WebBuilder可开发ERP、OA、CRM、HR、MIS以及电信、银行、政府、企业等各行业的企业级应用系统,帮助信息化管理系统的快速构建。完善的基础架构,具有大型应用系统必须的完整功能,使应用系统的开发仅需致力于业务的开发。

开源评选

项目地址: http://www.putdb.com/
文档:http://www.putdb.com/main?xwl=docs
在线演示: http://www.putdb.com/main?xwl=portal
开源协议:GPL v3

我们会陆续对这些项目发起人进行采访。要想获得关于项目的更多信息,敬请关注@CSDN研发频道,关注@CSDN_CODE

如果您也想展示您的开源项目,请在如下链接中提交项目相关信息。

提交地址:http://surveies.csdn.net/survey/comein/586