查看原文
其他

18个你必须知道的Facebook开源项目

2016-05-09 云头条

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,,它还可以从命令行来运行独立脚本。


云头条编译|未经授权谢绝转载


相关阅读:

科技公司钟爱的50款开源工具

谷歌、微软、苹果、惠普等公司:开放源代码的10大产品

Netflix 的顶级开源项目,你知道几个?

「云头条」人见人爱的九大开源DevOps工具

16款开源大数据数据库:总有一个适合你

2015年哪些开源项目荣登GitHub十强榜单?

65个开源云应用程序:一个都不少!



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存