开发的未来,开源项目负责人谈开源

Widen是一家数字资产管理解决方案提供商。目前,其技术栈还非常传统,包括服务器端的Java、浏览器端的AngularJS、提供REST
API支持的Jersey以及jQuery、
Underscore、lodash、jQuery
UI和Bootstrap等各种库。近日,该公司的首席开发人员Ray
Nicholus在一篇文章中提出了一个面向未来的Web开发技术栈,用于取代现有的工具。

在All Things Open
2015上,GitHub的开源项目负责人Brandon
Keepers给出题目为“open
source principles for better engineering
teams”的报告。在此之前,OpenSource.com的Robin
Muilwijk对其进行了采访。
Brandon就其与开源的缘分、当前工作的职责、GitHub及员工与开源的关系等方面的问题一一进行了回答。

本周,谷歌正式面向Windows、Mac和Linux发布了Chrome
46版本更新,该版本包含大量的错误修复以及内存和能耗管理增强。不过据外国博客VentureBeat报道,一些不常使用的功能似乎消失了。新版本中
Chrome移除了“OK
Google”语音激活指令,这是一项自2014年5月就加入到Chrome中的功能,能够响应“OK
Google”的语音指令来激活语音搜索功能。而
移动设备和Chromebook设备的最新版本Chrome仍保留了这项功
能。

虽然他们已经习惯并信任现有的技术栈,但为了实现以下几个目标,Ray希望引入一个全新的技术集合:

Brandon简介及其与开源的缘分

图片 1

  • 一种新的、闪亮的方法:作为一名开发人员,他希望通过采用一个全新的工具集获得全新的视角,并有所进步。

  • 简洁:他不喜欢 AngularJS 1.x
    陡峭的学习曲线,更令他失望的是,AngularJS
    v2的学习曲线更加陡峭。Java也有这样的特点。另外,他希望能够尽可能地避免样板代码,应用程序可以快速投入应用而又无损可扩展性,前端很容易描述为
    一组独立的专用组件的集合。他还希望用一种更好的方法取代难以维护和改进的传统REST
    API。

  • 高效:他希望可以消除由传统REST API所导致的不必要的请求和响应开销。

  • 优雅:他希望编写优雅、易读的代码。在用户界面上查找和修改数据要直观,最好是开发者只需要考虑自己的数据模型,而不用关心可用的API端点。

在2011年加入GitHub之前,Brandon曾是设计speakerdeck.com、gaug.es和harmonyapp.com的五人团队之一。之后,他曾经在GitHub参与过GitHub
Flavoured
Markdown、通知、wiki等内部工具的开发。目前,Brandon主要负责GitHub开源相关的工作。其具体职责包括帮助公司和社团克服开源方面的难题、寻找凸显其他社团成果的方法以及为GitHub建造更好的角色模型等。

谷歌回应,移除该功能的原因在于桌面平台中,这项功能并不被经常使用。移除后,Chrome由于无须实时响应用户语音指令,因此能够大幅节省电量,并加速Chrome浏览网页速度。另外,在Chrome
46中“通知中心”也遭到了同样的命运被移除。

放弃现有的技术栈意味着开发人员要走出自己的舒适区,部分人可能会抵触,认为新选择不必要或过于复杂。Ray也有类似的想法,但当他对React、
webpack、Falcor有了深入地了解之后,他改变了这种想法,认为这是一个面向未来的Web开发技术栈,Widen即将推出的部分软件产品将会使
用下面讨论的所有技术:

Brandon表示,开源对其作为软件工程师的成长非常关键。他学习了如何利用开源语言进行编程,尝试了利用开源库和框架来设计应用程序,并知道了如何利用开源的思想来编写软件。可以说,Brandon的一路蜕变与开源密不可分。

转载自:cnbeta.com

  • React:Ray认为,React与Angular&Ember
    的不同之处在于其有限的应用范围和空间占用。Angular&Ember的定位是框架,而React主要是作为应用程序“视图”。React不包含依赖注入或“服务”支持,不需要“jq-lite”,也不依赖于jQuery。开发人员可以直接使用JSX编写标记,而无需Ember
    Handlebars。React会维护一个“虚拟DOM”,并通过它更新真正的DOM,避免了不必要的重排与重绘。总之,他非常喜欢React这种用途相对专一的特性。而且,React让他可以将复杂的应用程序切分成更小的组件。

  • Falcor:这是一个由Netflix开源的、非常新的库。不同于传统REST
    API,它只提供唯一的一个端点。有了它,开发者不再需要向不同的服务器端点请求不同的数据,而是向同一个端点请求不同的模型数据。服务器端可以识别请求参数,并由Falcor
    Router调用恰当的router函数。也就是说,Falcor提供了一个更加直观的API,就是开发者的数据模型。这可以确保服务器永远不会返回不必要的模型数据,
    节省了带宽。Falcor客户端还可以使用缓存数据为连续的请求提供服务,减少服务器响应时间。要了解更多关于Falcor的信息,可以查看Jafar
    Husain的视频。

  • webpack:作为一个模块绑定器,webpack可以为React组件模块化提供进一步的支持。它使开发者可以轻松压缩和连接CSS及JavaScript,并通过生成source
    map大大地简化调试工作。配置完成后,webpack会监控代码,每次代码发生变化,它就会生成新的bundles。客户端无需再导入大量的CSS或JS文件,而只需要导入bundles,减少了页面加载时的HTTP请求数。此外,webpack还提供了大量的插件,例如,使用jsx-loader可以将JSX转换成JavaScript,使用babel-loader
    可以将ES6代码转换成兼容ES5的代码。

  • ES6:即ECMAScript
    2015,是JavaScript的最新规范,定义了若干重要的新特性,比如胖箭头函数、类、字符串插值、块作用域等。更多信息,请查看Mozilla
    Developer Network上的ECMAScript
    6参考指南。

GitHub开源项目负责人的职责

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签:, , , , , , , , , , ,
网站地图xml地图