Facebook 创建了 React JavaScript 库 ,这样,Facebook 的工程团队就可以用相同的代码给 iOS、安卓和网页开发界面了。现在,Facebook 通过开源 React“三部曲”中的最后一部分——安卓版 React Native(React Native For Android),将应用开发的超级力量赋予每个人。
Facebook先是在 2013 年将 React 开源 ,接着又在今年初的 F8 开发者大会上将 React Native 开源。但是,Android 版本意味着,熟悉 React 技术的工程师将可以为每个主要平台开发应用了。如此一来,创业公司和大型科技公司就不必像现在这样拥有那么多工程师了,也不必再为招聘精通 iOS 和安卓开发技术的工程师而感到担忧了——iOS 和安卓是两种截然不同的代码库。反过来,这又可以帮助加快团队开发新功能的步伐,进而缩短从 iOS 版发布到植入安卓平台之间的时间。
今天,在一年一度的 @Scale 大会 上,Facebook 宣布将 开源安卓版 React Native。来自 Facebook、Twitter、谷歌、Box、Pinterest 和微软等公司的 1800 名高管和工程师齐聚本次大会,就如何改善他们的工程和基础设施进行合作。与会的公司们已总计对 4500 多个开源项目做出了贡献。
为何选择开源?
大家或许想知道,Facebook 为何要送出一份像 React 这样强大技术的礼物呢?毕竟,Facebook 完全可以自己利用这项技术,在与其他社交网站竞争时在工程方面获得优势地位。对此,Facebook 工程经理汤姆·奥基诺(Tom Occhino)给出了以下三个主要原因:
社区贡献——“从功能到漏洞查找,开发者社区对我们公司的发展做出了重大贡献。”
人才招聘——“人们确实有兴趣学习像 Facebook 等大平台采用的技术。人们很高兴加入打造这种技术的团队中。”
吸引工程师加盟——“这让有意加盟 Facebook 的每一位工程师占据了先机,因为他们已经了解了我们的构架。”
基本上,Facebook 通过开源得到的东西远远超过失去的东西,同时还显示出它无私的一面,毕竟这种举动与 Facebook 连接世界的愿景相符。奥基诺说:“单凭 Facebook 一家公司的力量无法开发所有的软件。我们能做的最好的事情就是,向开发者提供工具,让他们进一步推进这一使命。”
“一次学会,到处可用”
长期以来,跨平台开发的“圣杯”始终是“一次编码,到处运行”(code once, run anywhere),但是,由于网页、iOS、安卓等平台之间存在着重大不同,这一目标根本无法实现。但是,React 在三个平台中植入了一个抽象层(level of abstraction),这样,你只要一次学会 React,就可以到处编写应用了。
举例来说,今年早些时候 Facebook 给 iOS 和安卓两大平台开发了一款原生 Ads Manage 应用,得益于 React 技术, 开发时间仅仅是之前预期的一半 。Facebook 原本预计开发这款应用的时间为 18 个月,但它用时 5 个月开发出了 iOS 版应用,然后又在 3 个月内将其移植到安卓平台。
这项技术还能让 Facebook 重拾“快速行动”(Move fast)的理念,这种理念还是在 Facebook 只是一个完全基于网页的平台时提倡的,当时它不断发布代码,测试新功能。随着 Facebook 开始拥抱移动时代,它不得不对工程团队做出分工,让不同的专家从事网页端、iOS 和安卓等三个平台的应用开发。
Facebook 工程经理奥利维亚·比肖普(Olivia Bishop)告诉我,没有 React 技术,“应用很难快速迭代,因为每次你做出调整的时候,都必须重新编译应用,将它放在设备上进行测试。”由于代码可以重复利用,React 可以大大节省应用迭代时间。
一旦开发者社区熟悉了 React Native 的用法,它可以让“精益创业”(lean startup)的理念更易于执行。所有开发者并不是牺牲跨平台支持或是因为对现状不满而试水新的操作系统,相反,他们可以迅速看到应用的运行机制。当他们用 React 发现了有问题的东西后,也可以用它来改进 Facebook 的体验。
Facebook 工程主管亚当·沃夫(Adam Woff)最后表示:“我将开源比作进化或腐蚀这样的长期进程。随着时间的推移,一定会获得回报的——我们对开源的投资可以确保软件保持相关性。”让软件始终留在一家公司,可以导致危险的迭代停滞。“随着时间推移,这种固步自封的做法会破坏专属软件堆栈,对公司带来伤害。”