tyler cowen
Codenvy与Eclipse Orion , Cloud9和其他产品一起,是新型IDE的一个示例,这些IDE试图通过提供在任何主流浏览器中运行的前端接口以及在服务器或Windows Server 2003上运行的后端来转变开发人员创建软件的方式。在云中,进行所有繁重的工作–编译,代码分析,构建,暂存,部署等。
Codenvy可用于以多种语言进行在线开发-Java,JavaScript,HTML5,CSS,PHP,Python,Ruby,XML-但正在努力增加对更多语言的支持,并为社区提供添加更多语言的必要工具。如预期的。 框架也是如此,Codenvy当前支持Spring,Node.js,JSP,Rails,GWT和Django。 Google I / O 2013宣布支持Android开发。
可以将这些应用程序从IDE内部署到多个PaaS:Amazon(弹性Beanstack),CloudBees,Cloud Foundry,GAE,Heroku,OpenShift,AppFog和Tier 3。
在代码存储库方面,Codenvy最初支持GitHub和Bitbucket ,后者后来提供了Git和Mercurial存储库,但最近又增加了对Assembla,Beanstalk,Codebase,Deveo,GitEnterprise,Gitorious,PikaCode,ProjectLocker和Unfuddle的支持。 它使用Jenkins,Hudson或CloudBees进行持续集成。
Codenvy包含对对编程的支持,并结合了实时多光标协作功能。 代码编辑器具有语法突出显示,代码完成和重构的功能。
我们已经采访了Codenvy首席执行官Tyler Jewell,以了解有关支持该IDE的技术的更多详细信息。
InfoQ:Codenvy用什么构建? 服务器和客户端背后的技术是什么?
TJ: Codenvy是一个具有多个节点的云系统,可以处理路由,负载平衡,身份管理,IDE,构建器,运行器和分析。 核心IDE本身是用Java编写的,使用GWT生成优化的客户端JavaScript。 我们将WebSocket用于浏览器与服务器之间的大多数通信。 在整个系统中广泛使用的其他技术包括Apache Web服务,CloudFoundry,Gluster,CodeMirror,Collide(协作编辑器),Hadoop和Apache Pig。 Codenvy的核心是用于构建云IDE的平台。 在内部,我们提供了一个运行时框架,该框架管理分层扩展的发现,加载,协调和激活。 扩展被编写为打包的插件,提供了语言,框架,编辑器,文件管理,构建器说明和运行程序说明。 然后,我们创建一个将插件链接在一起的IDE框架,并部署到一个提供租期,弹性,日志记录,身份管理和隔离控制的云框架上。 我们构建了自己的多租户IP,它使我们可以在一个JVM中运行多达250个IDE,同时还可以防止IDE在执行构建和运行过程时遇到任何块条件。 我们已经建立了自己的OAuth扩展,以允许入站身份验证请求,并且还将身份向外传播到下游的云中,以简化用户工作流程。 我们使用p和各种bash脚本来处理与devop相关的问题。 我们的网站被认为是独立于我们的云的生命周期中的产品,是使用JavaScript,Yeoman,Grunt和Jekyll编写的。 对于工具,我们大量使用GitHub,Jira,Confluence和Selenium。 Codenvy的原始位使用Eclipse和IntelliJ编写,但是现在大多数Codenvy都使用Codenvy编写。
我们使用100多个开源库来创建运行Codenvy的各种元素。
InfoQ:您在哪里运行Codenvy? 在您自己的服务器上? 在云中? 哪一个?
TJ:我们运行不同的环境来进行开发(验收测试),阶段(全面环境测试),预生产(最终版本以允许市场,支持和文档参与)和生产。 我们在AWS运营生产。 预生产在我们位于欧洲的自己的数据中心内的Eucalyptus上运行。 我们在AWS上运行我们的登台环境,以进行devops配置,测试内部无法访问的各种云API并执行大规模测试。 我们的开发验收服务器环境都是Codenvy的所有单服务器包装,根据配置,它们可以在1-2个VM中运行。 我们使用我们的开发环境(最多可同时运行6个)来推动PM和用户对单个功能的接受标准。 验收服务器在冲刺期间包含各个功能,并在我们自己的数据中心内运行。 冲刺完成后,将通过自动Puppet程序更新暂存和预生产。
InfoQ:您打算支持其他语言吗? 哪个?
TJ:就我而言,您永远不会支持太多的语言。 这里实际上有两个媒介可循:需要特殊构建和运行时才能执行的全新语言,以及可以在JVM中运行的语言中可以在VM中运行的语言。 我们认为我们的团队有太多环境无法完全依靠自己来支持,因此我们正在努力让社区参与其中。 我们一直在努力确定内部使用的SDK,以便在内部发布给公众,以用于创建自己的扩展程序和插件。 它将类似于Eclipse插件体系结构的工作原理,只是范围更广。 Codenvy内部是一个完整的构建子系统和一个运行Cloud Foundry的运行环境。 因此,想要向系统添加新语言(例如C)的开发人员将需要添加常规的IDE部分(文件,语法,调试器,重构,宏),但还需要提供Codenvy有关如何执行构建系统(make)和运行时。
我们的首要任务是在今年发布此SDK,然后我们的第二优先任务是围绕各种框架和语言的所有权组织社区。 希望为C,C ++,Objective C,Go,Scala,Play等提供帮助的人们对我们有兴趣。
InfoQ:框架/ PaaS / CI支持如何?
TJ:我们(尝试)尝试在每个sprint中添加一些新内容。 我们进行为期两周的冲刺,因此此列表一直在变化。 我们之所以开始流行是因为我们拥有广泛的集成,而且在这方面我们并不放慢脚步。 最新列表在此处和此处广播。 我们为GitHub,Bitbucket,AWS,Google App Engine,Heroku,Cloud Foundry,OpenShift,CloudBees,Tier 3和AppFog提供的深度级别感到自豪。 我们还刚刚完成了大约10个git提供程序的认证,因此我们将更新所有规范以及如何与各种供应商合作的方法。
至于CI支持,今天我们启用了提交后挂接,并具有直接向CI提供程序进行Web服务调用的功能。
InfoQ:SDK提供了什么? 我了解开发人员可以使用它添加对自己的语言或平台的支持。 以及何时发布SDK?
TJ: SDK提供了用于编写分层扩展的API; 将UI,数据(文件)和事件模型分为不同的关注点的API; API文档; 一组示例插件,例如我们为Java创建的插件; 以及专用的SDK云,该云将允许开发人员上传插件进行测试。 插件本身将用Java和GWT编写。 除非它在开发模式下运行,否则GWT需要11分钟的时间进行编译。 我们将移植GWT以使用Codenvy的开发模式,但是首先为了简化创建过程,我们将让开发人员将其插件上载到Codenvy合作伙伴云中,在该云中我们将对其进行编译,打包和集成到运行时中。
该SDK云的初始版本将于今年夏天发布。 我们已经签约了许多正在等待它的ISV合作伙伴,因此这是我们内部的首要任务。
首次发货后,我们将创建Codenvy的WAR文件包装。 开发人员将能够在Tomcat中运行Codenvy的单个服务器版本,并能够在本地构建和部署插件。 这个版本有些棘手,因为除了跑步者支持之外,它还具有其他功能。 由于我们使用Cloud Foundry执行运行程序,因此没有简单的方法将运行程序打包为单一服务器格式。 我们将允许开发人员将在Tomcat中执行的“云运行器”映射到其本地主机系统上的进程。 因此,在本地主机上运行的浏览器中执行“运行”将触发您指定的也在同一台计算机上运行的进程命令。
InfoQ:Codenvy是否可以离线工作? 如果没有,您对此有何计划?
TJ:我们不离线运营。 我们认为,从某些方面来看,这个话题是一个红鲱鱼。 这是我们在UserVoice上获得的#4或#5要求的功能,但是当我们问开发人员为什么需要它们时,他们的答案差别很大。 一方面,有些人担心飞机旅行,而他们却完全不在线。 其他人只是对部分连接有普遍的担忧,不知道会发生什么。 在许多情况下,不具备此功能的情况不会被视为破坏交易,但似乎确实是一个非常自然的话题。
提供离线支持的一部分是确定什么是离线。 我们可以轻松地提供文件编辑器,但不会对git命令,构建,调试,运行或部署提供任何支持。 因此,从最基本的角度来看,允许开发人员在脱机时最初具有只读模式似乎很有意义。 将来很容易提供。 除此之外,根据您可以或愿意在客户端安装的技术数量,脱机功能的级别也将有所不同。 如果它完全是基于浏览器的系统,我们可以同步git存储库并提供编辑功能。 如果允许我们将软件安装到桌面上,那么我们也可以在本地创建完全同步的构建和运行器。
我们仍在评估我们在这里想要做的事情,并想与我们的社区更多地谈论它。
InfoQ:能否提供有关Codenvy与JRebel,Rally Dev和Tasktop集成的详细信息?
TJ:我们为适当的Java项目提供JRebel。 我们设置了一个永久的运行器,然后在构建器和运行器集群之间激活JRebel。
我们将在今年年底之前更多地讨论我们为Rally和TaskTop做的事情。
InfoQ:目前仅提供社区版。 您打算什么时候打开已经宣布的其他定价计划?
TJ:实际上,我们确实有一些高级服务可供出售! 今天,我们提供了“ 早期采用者”计划 ,该计划在“个人”等级上提供66%的折扣。 随着今年的来临,这个价格将稳定增长,并且我们将更加自信和完善我们在每个版本中提供的高级功能。
InfoQ:企业版包含什么?
TJ: Codenvy Enterprise是一种云,可以将其安装在防火墙后面,以管理大量开发人员。 到目前为止,已采用此方法的客户是那些具有法规,合规性,安全性或离岸管理需求的客户。 我们提供了公共云中所有可用的功能,但还添加了一些特殊功能:a)LDAP和身份集成,b)群集,负载平衡和HA策略控制,以及c)分析和报告以衡量获取,开发人员,工作区和项目的参与度和病毒性。 如今,客户提供了自己的硬件,并且可以在Tier3,AWS,Eucalyptus或OpenStack上运行。
有趣的是,许多Codenvy Enterprise的早期采用者并不认为它是Eclipse的替代品。 而是一个辅助系统。 在许多情况下,我们将为离岸开发人员替换运行缓慢的VDI或TS环境。 在其他情况下,我们正在成为新员工,实习生或合作伙伴的培训场,在这些场合中,花时间在有限的窗口中编码比花时间教人们如何配置开发环境更为重要。 在辅助用例中,开发人员仍然可以将自己从云中升级,但是他们对管理桌面负有个人责任,而IT对管理Codenvy负有责任。
InfoQ:您对未来有什么计划?
TJ:我们很幸运,我们的开发团队有大约30名工程师。 他们是杰出的系统工程师,并且具有构建大型复杂系统的历史。 我认为,这种想法很大程度上是推动他们努力的动力,因此,许多正在开发的项目旨在帮助开发人员自动化复杂的工作流。 我们的努力分为以下几类:
1)支持开发人员。 更多语言,框架,云集成和其他云服务。 我希望在今年年底之前将250种技术集成到Codenvy中。 此外,我们已公开承诺通过与Trigger.IO和Google的合作关系来增加Android和iOS开发。
2)支持的ISV。 我们将在第3季度提供各种ISV软件包,使他们可以自定义模板,推广示例应用程序,并在开发中/衡量/跟踪开发人员的活动。 我们最终希望允许每个ISV拥有一个在线配置的自定义按需IDE。 这在许多方面都与他们的SDK努力相结合。
3)配套企业。 我们正在大型企业中追求更多的POC和安装。 我们现在已经做了一些大型的工作-但是想在宣布Codenvy Enterprise GA之前再做25次左右。 如果有任何组织对运行自己的开发云感兴趣,那么我们很乐意听取他们的意见。
关于被访者
![](https://i-blog.csdnimg.cn/blog_migrate/0e3e902d7e3fb297f293e27e3e5de6b0.png)
tyler cowen