18个你必须知道的Facebook开源项目
Facebook平时使用、维护和贡献数量众多的重大项目,涉足广泛的领域:原生移动工具、大数据系统、客户端Web库、后端运行时环境和基础设施,另外通过开放计算项目(OpenCompute Project),还涉足服务器和存储硬件。Facebook的GitHub帐户现在就有90个代码库,包括4000次提交,分支次数总共有15000次。
Facebook为开源社区所作的贡献可以分为移动、Web、后端和基础设施这几大类。下面介绍了这些类别的几大开源项目:
移动
Buck
Buck是一种面向Android的高性能能构建系统,鼓励用户创建由代码和资源组成的可重复使用的小模块。由于Android应用程序主要是用Java编写的,Buck还可以充当Java构建系统。
Rebound
Rebound是一种模仿弹簧动力学的Java库。Rebound弹簧模型可以用来构建感觉自然的动画,为此它将真实世界的物理元素引入到你的应用程序。Rebound使用与Origami同样的弹簧常数,很容易将Origami交互模型直接转换成Android应用程序。
Origami
Origami是一种用来设计现代用户界面的工具。可以迅速创建原型,在你的iPhone或iPad上运行,进行迭代处理,并导出工程师可以使用的代码片段。
Stetho
Stetho是一种面向Android的全新调试平台。它提供了功能强大的Chrome开发者工具,这是使用客户端/服务器协议实施的,Stetho软件为你的应用程序提供了这种协议。一旦你的应用程序整合起来,只要访问chrome://inspect,点击“检查”即可开始!
Infer
Facebook Infer是一款静态分析工具,用来在Android和苹果应用程序交付之前检测存在的缺陷。如果你给Infer一些Objective-C、Java或C代码,它就会生成潜在缺陷列表。谁都可以使用Infer,在代码发布到用户的手机之前拦截致命缺陷,并且有助于防止系统崩溃或性能下降。Infer针对这些致命缺陷:空指针异常、资源泄漏和内存泄漏。
xctool
xctool用来替代苹果的xcodebuild,让用户更容易测试iOS和Mac产品。它对于持续集成尤其大有帮助。
Web
Huxley
Huxley是一种类似测试的系统,可用于捕捉Web应用程序中的可视化回归。它可监视你的浏览、抓拍屏幕截图,并且告诉你何时发生了变化。
ReactJs
React Js是一种用于构建用户界面的说明性、高效、灵活的JavaScript库。许多人使用React作为MVC中的V。由于React并不依赖你技术架构里面的其余技术,所以很容易针对现有项目中的某个小功能特性来试用它。
Flux
Flux是Facebook用来构建客户端Web应用程序的一种应用架构。它利用了单向数据流,以此补充React的可组合式视图组件。与其说它是一种正式框架,还不如说是一种模式,你可以立即开始使用Flux,不需要编写许多新代码。
Flow
Flow为JavaScript添加了静态类型,提高开发人员的生产力和代码质量。Flow的目标是,不需要程序员费太大的劲,就能找到JavaScript代码中的错误。Flow高度依赖类型推断来查找类型错误,即使程序并没有加以标注――它会精确跟踪流经程序的变量类型。
fb-flo
fb-flo是Chrome插件,让你不用重新加载就可以修改运行中的应用程序。它很容易与你的构建系统和开发环境实现整合,可以与你青睐的编辑器一起使用。
Jest
Jest是一种面向JavaScript的单元测试框架。它建立在Jasmine测试框架的基础上,使用熟悉的expect(value).toBe(other)这种断言。它自动模拟require()返回的CommonJS模块,让大多数现有代码可以测试。
Nuclide
Nuclide是一套面向Atom的程序包,为众多编程语言和技术提供了类似IDE的功能。它旨在为整个公司的工程师提供统一的开发体验――无论他们开发的是原生iOS应用程序、React和ReactNative代码,还是在我们的HHVMWeb服务器上运行的Hack。
ReactNative
React Native是Facebook的最新开源项目之一,于去年3月发布。ReactNative让工程师可以使用同样的React方法和工具,迅速为移动设备构建原生应用程序。除了内部开发这些工具外,Facebook还与开源社区合作,为全球的广大开发人员改善体验。在问世后的第一年,ReactNative已成为人气第二旺的Facebook开源项目,GitHub上的关注者超过23000人。它在内部用来构建面向iOS和Android的FacebookAds应用程序,这让JavaScript是其核心竞争力的开发人员可以重复使用85%的代码。
后端
Presto
Presto是一种开源分布式SQL查询引擎,可用于针对大大小小的数据源(从GB级到PB级不等),运行交互式解析查询。Facebook使用Presto针对几种内部数据存储区执行交互式查询,包括其300PB的数据仓库。每天有1000多名Facebook员工使用Presto,运行30000多次查询,每天扫描的数据总量超过1PB。
Osquery
Osquery为你提供了一个SQL接口,可以尝试新的查询,并探索操作系统。由于拥有一套完整的SQL语言和许多有用的内置表,Osquery是一款很宝贵的工具,可用于执行事件响应、诊断系统操作问题,或者排除性能问题。部署了一款还支持开发人员和管理员的安全工具。
RocksDB
RocksDB基于LevelDB,可灵活扩展,可以在拥有多处理器核心的服务器上运行,可高效使用快速存储,支持输入输出受限、内存中、一次写入的工作负载,而且很灵活,便于创新。
Facebook不仅构建软件,还构建能够在开放计算项目下适应越来越大规模的各种自定义硬件。不像谷歌和微软,Facebook不仅为开源社区贡献研究工作,还贡献最终实施方法。
基础设施
HHVM
HHVM(HipHop虚拟机)是一种开源虚拟机,旨在执行用Hack和PHP编写的程序。HHVM使用即时(JIT)编译方法来获得卓越性能,同时保持了PHP提供的开发灵活性。相比ZendPHP5.2,它为Facebook实现了吞吐量提升5倍多。HipHop最常作为一个独立服务器来运行,可同时取代Apache和modphp,,它还可以从命令行来运行独立脚本。
云头条编译|未经授权谢绝转载
相关阅读: