Facebook 在 2013 年的开源贡献

简介: 自从 Facebook 的第一行PHP代码,第一句 MySQL 的 INSERT 语句以来,开源就已经是我们工程哲学中的一个重要的部分。

自从 Facebook 的第一行PHP代码,第一句 MySQL 的 INSERT 语句以来,开源就已经是我们工程哲学中的一个重要的部分。


现在,我们使用、维护并为大量的主要项目做出了贡献——涉及多种领域如手机工具、大数据系统、客户端的web库、后端的运行库和基础架构,也涉及到开放计算项目,服务器和存储硬件。


2013 是我们开源项目具有重要意义的一年,我们拥有大量令人自豪的新项目,为正常运行和维护它们的更新承诺,和使用它们的充满活力的社区一起工作的愿望。仅在我们的 Github 账户上,我们现在已经有超过90个仓库,有超过40,000次的提交,一共被复制了15,000次。


年末是一个很好的机会来回顾我们投入精力的一些主要的领域,简要重述(不是详细的!)下我们工作的一些项目列表。


手机

我们最自豪的开源贡献常常是我们为了解决在 Facebook 遇到的规模和性能的挑战而开发的一些技术。

手机也不例外:Facebook 的手机应用已经是我们产品团队今年的一个重点,我们现在也还需要开发新的兼容性——在这种情况下,那些要迅速开发、编译、测试并发布我们手机应用的需求变得更加的高效。开源我们的工作,正如我们已经做的那样,是很自然的事情,这些工具已经成为我们手机开源作品集的核心。

image.png

比如,在四月份,我们发布了 Buck,我们的Android编译工具。开发者的效率对我们来说很重要,自然速度是Buck的首要工作:在Facebook,我们发现它在编译我们的应用时,比 Ant 快了超过两倍。从一开始,这个项目就越来越强大,并被Android社区也包括一些有名的Java项目广泛应用。

对于iOS,我们也有类似的瓶颈,发现我们需要加速和自动化Xcode的手动编译过程。结果就是非常流行的 xctool ——也在四月份发布——可以使工程师(更不说那些持续集成的机器)更加简单的编译和测试iOS和Mac项目。

我们在十月份举行的Mobile @ Scale上推出了Rebound,一个Android的物理和动画库。Will Bailey在这篇最近的博文中详细介绍了这个项目,我们相信对真实世界的物理建模是一个有力的方式,方便在应用中创建自然、可触的动画和交互效果。

image.png

最后,通过发布另一个手机工具来结束这一年,还有比这更好的方式吗?今天我们很激动的发布Origami,一个Quartz Composer的工具集,允许设计者更快的编译和构建手机交互的原型。


Web

Web技术也和Facebook相关,包括手机和桌面的客户端。在前段,我们开源的重点更多的在于支持在五月份的JSConf上发布的快速灵活的JavaScript库React

image.png

从那以后,React库——和社区的热心者——有了一定的发展。现在在编译工具上有了大量的集成,服务器端的环境(像nodeRails,和Python)和其他客户端的库——也包括一些备受瞩目的外部的部署工具如Khan Academy。团队维护了一个出色的社区聚合博客,包括大量其他React项目的例子、演示和教程。


总之,我们也想帮助提高JavaScript语言和web应用的质量。例如,Regenerator,是用来转换ECMAScript 6的yield语法到现今的浏览器的一个转换器,Huxley,在夏天由Instagram团队构建的,已经快速成为web应用中一个非常流行的可视化正则测试工具。


数据

Facebook与开源数据基础设施(open source data infrastructure)颇有渊源,回顾我们对MySQL, Cassandra,Hadoop,Hive和Hbase所做的贡献可以看出这一点。2013年也不例外,仅仅在过去的几个月里,我们就上线了两个新的旗舰级数据项目。

image.png

首先是Presto,一个新的分布式SQL查询引擎,被设计用于高性能分析我们用于运行交互式查询的300PB数据仓库。

我们在夏天的Analytics @ Scale event上公布了Presto并且在上个月于我们的blog上对它做了更多介绍。从那以后,我们激动的看到它被许多像Airbnb和Dropbox这样的公司采用,并且从许多热情的社区得到了贡献,包括new clientsAnsible playbookdebian packaging

image.png

第二个项目是 RocksDB,一个非常与众不同的数据基础设施(data infrastructure):一个基于LevelDB的嵌入式key-value存储类库,并且为拥有多核CPU和快速闪存的环境做了优化。此外,在它上线的以后几个月里,它引起了广泛的兴趣,一些伟大的社区已经把它绑定到其他的语言上。


我们对数据基础设施(data infrastructure)的贡献和支持拓展得很好也已经超过了我们本身。我们对 Giraph 提供了强大的支持,比如,它已经被提高到可以支持1万亿边缘的图形结构。


基础设施项目

最后,但绝对不是最不重要的,基础设施项目在我们对开源项目的贡献中仍然是最为重要的一部分。

HHVM,the HipHop Virtual Machine,是目前为止我们的项目资产中最为显著并且是追随人数最多的项目,并且得到了大量的来自PHP生态系统的支持。2013年有近4000次提交,并且在性能和第三方php框架的兼容性上有了长足进步,这对于社区的广泛采用来说是非常重要的。

image.png

这个团队刚刚从封闭中走出来并且在昨天分享了他们最新进度的消息。并且我们很激动的看到在持续不断的集成测试之后,VM被集成到Travis CI,并且为集成到其他流行的web server加入了FastCGI支持


我们今年也为许多其他的显著的基础设施项目工作过。对于我们自己的项目,包括pfff,我们的代码分析工具箱,libPhenom,一个高性能的事件框架,和folly,我们流行的C++类库。并且我们今年为 MercurialLLVMGNU grep提供了许多显著的贡献。

image.png


Open Compute项目在2013年继续壮大,使用new work on networking hardware,新的社区和基础管理,以及全年众多的hackathons和讨论会。Facebook致力于支持项目建设并且它的目标是开发设计用于所有数据中心技术的开源服务器和数据中心 - 并且让我们期待下个月的Open Compute Summit


2013年我们的开源项目

当你在使用或者为一个开源项目做出贡献时,我们知道没有比看到它停滞不前更糟糕的了:bug 没有被修复,问题没有解决,pull requests 被忽略。关于 Facebook,我们的目标是,通过我们的投资组合,保持强有力的社区参与责任感。

我们已经采取了具体的措施来达到这个目标。例如:我们现在鼓励我们的工程师团队在使用或者开发一个开源项目的时候,首选 Github,Bitbucket 或者 Apache 软件基金会的项目作为源码的来源。


我们有一个新的工具链,使 repos 和我们内部系统同步,同步代码评审过程,任务跟踪等等。同时把我们最近检测的所有 repos 仪表化,保证他们保持健康的发展:我们有内部的仪表盘来显示commits 的数量,pull requests 的数量和每个团队 issues 的数量。这给我们提供了一个早期预警系统,提醒社区中有哪些被我们无意中忽略了。


同时我们很自豪的宣布,我们正在做的 Bountysource 项目帮我们社区解决了很多问题,其中包括鼓励大家参与各种开源项目,奖励那些参与开源项目的开发者。我们已经有了一系列的奖励计划,包括 HHVM 和 D。

就在上个月,我们宣布 Facebook Open Academy 已经把开源带到世界各地大学的计算机科学课程中。

image.png

在 2013 年,我们也同步开始了 "@ Scale" 工程活动的项目,这个项目旨在汇集开发人员讨论和分析各种技术大规模实施面临的挑战,分享他们的解决方案和相关的开源项目。今年的活动包括 Analytics @, Mobile @Data @ Scale,相关的视频已经放在了我们的 Facebook Developers channel。 敬请期待明年更多的 @ Scale 活动。

最后,欢迎访问我们新工程的网站 code.facebook.com!我们尽可能让您更方便的关注我们所有的活动详细信息,在 blog posts, events, videos, academic publicationsopen source projects 上都可以找到我们所有的工程项目和活动。订阅我们的 Facebook Pageopen source news 可以获得更多的更新新闻。


...以及未来

Facebook 的著名格言:我们的开源项目仍然是只完成了1%。

通过上面提及的所有主题,我们知道还有很多方面需要我们继续努力。我们很庆幸在我们众多的项目中有强大而热情的社区支持,给予我们强烈的责任感和动力。

不管你们是在移动端,web,数据亦或是基础设施社区,我们都很期待能继续与你们合作,2014年再见!


相关文章
|
8月前
|
机器学习/深度学习 算法 决策智能
【重磅开源】Facebook开源 Nevergrad:一种用于无梯度优化的开源工具
【重磅开源】Facebook开源 Nevergrad:一种用于无梯度优化的开源工具
|
12月前
|
缓存 数据可视化 测试技术
开源多年后,Facebook这个调试工具,再登Github热门榜
让许多工程师合作开发大型应用大多会面临一个挑战,通常没有一个人知道每个模块是如何工作的,这种技能会让开发新功能、调查Bug或优化性能变得困难,为了解决这个问题,Facebook创建并开源了Flipper,一个可扩展的跨平台的调试工具,用来调试 iOS 和 Android 应用。近日又双叒登上了Github热榜。
|
前端开发 JavaScript 测试技术
Facebook 开源可扩展文本编辑器 Lexical
Meta(原 Facebook)近日开源可扩展文本编辑器 Lexical,源代码托管在 GitHub 上采用 MIT 许可证。
387 0
Facebook 开源可扩展文本编辑器 Lexical
|
XML jenkins Java
Facebook开源静态代码分析工具Infer介绍
Infer是Facebook公司的一个开源的静态分析工具。Infer 可以分析 Objective-C, Java 或者 C 代码,用于发现潜在的问题。其作用类似于sonar和fortify。Infer更倾向于发现代码中的空指针异常、资源泄露以及内存泄漏的问题。
Facebook开源静态代码分析工具Infer介绍
|
机器学习/深度学习 人工智能 文字识别
图神经网络版本的PyTorch来了,Facebook开源GTN框架,还可对图自动微分
近日,Facebook的AI研究院发表了一篇论文「DIFFERENTIABLE WEIGHTED FINITE-STATE TRANSDUCERS」,开源了用于图网络建模的GTN框架,操作类似于PyTorch这种传统的框架,也可以进行自动微分等操作,大大提高了对图模型建模的效率。
267 0
图神经网络版本的PyTorch来了,Facebook开源GTN框架,还可对图自动微分
|
移动开发 Java 程序员
Facebook 将神奇动画引擎 Pop 开源了!
Facebook 2月发布的新闻类应用Paper,因为其灵动的用户界面和交互,成为近来最令人眼前一亮的移动产品之一。 而这个产品的背后是2011年Facebook收购的Push Pop Press,创始人是分别在Apple任设计师和工程师的Mike Matas与Kimon Tsinteris。他们的合作者还有传奇人物Bret Victor。他们为美国前副总统Al Gore开发的电子书Our Choice当时就曾技惊四座。
302 0
Facebook 将神奇动画引擎 Pop 开源了!
|
PHP C语言 开发者
Facebook 发布开源编程语言 Hack
Facebook周四发布一款名为“Hack”的全新编程语言,并声称该语言将能使代码的编写和测试更加高效快速。Facebook已在公司内部使用该语言超过一年时间,现在将以开源的形式将其正式发布。
353 0
Facebook 发布开源编程语言 Hack
|
存储 安全 算法
Conceal —— Facebook推出的android数据加密的开源APIandroid数据加密的开源API
现如今很多的智能手机,都支持把应用安装到SD卡中,这会帮用户节省很多空间,但是许多黑客也会利用这一点窃取用户的隐私。一般情况下,应用都有SD卡的读写权限,当然他也可以读取到其他应用,存储在SD卡上的数据。这意味着如果你安装了恶意的应用,他就可以轻易的获取SD卡上的所有数据。
336 0
Conceal —— Facebook推出的android数据加密的开源APIandroid数据加密的开源API
|
安全 前端开发 API
KVOController:facebook 开源的 KVO(Key-value Observing)工具
KVOController 是一个简单安全的 KVO(Key-value Observing,键-值 观察)工具,用于 iOS 和 OS X 应用开发中,开源自 facebook。
235 0
|
SQL 存储 分布式计算
Facebook 正式开源其大数据查询引擎 Presto
Facebook 正式宣布开源 Presto —— 数据查询引擎,可对250PB以上的数据进行快速地交互式分析。该项目始于 2012 年秋季开始开发,目前该项目已经在超过 1000 名 Facebook 雇员中使用,运行超过 30000 个查询,每日数据在 1PB 级别。Facebook 称 Presto 的性能比诸如 Hive 和 Map*Reduce 要好上 10 倍有多。
297 0
Facebook 正式开源其大数据查询引擎 Presto