2013 年 Facebook 在开源方面的工作回顾

标签: 业界资讯 Facebook 开源 | 发表时间:2013-12-24 03:16 | 作者:穆逸伦
出处:http://blog.jobbole.com

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

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

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

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

手机

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

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

120131224104121

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

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

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

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

Web

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

620131224104257

从那以后,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年也不例外,仅仅在过去的几个月里,我们就上线了两个新的旗舰级数据项目。

320131224104337

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

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

420131224104549

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

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

基础设施项目

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

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

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

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

520131224104611

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 已经把开源带到世界各地大学的计算机科学课程中。

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

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

…以及未来

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

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

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

2013 年 Facebook 在开源方面的工作回顾,首发于 博客 - 伯乐在线

相关 [facebook 开源 工作] 推荐:

2013 年 Facebook 在开源方面的工作回顾

- - 博客 - 伯乐在线
自从 Facebook 的第一行PHP代码,第一句 MySQL 的 INSERT 语句,开源就已经是我们工程哲学中的一个重要的部分. 现在,我们使用、维护并为大量的主要项目做出了贡献——涉及多种领域如手机工具、大数据系统、客户端的web库、后端的运行库和基础架构,也涉及到开放计算项目,服务器和存储硬件.

Facebook开源闪存数据库RocksDB

- - IT经理网
本周四Facebook宣布开源其嵌入式数据库 RocksDB(一种嵌入式Key-value存储系统),该数据库能够充分利用闪存的性能,大大提升应用服务器的速度. Facebook用RocksDB来驱动一些面向用户的应用,这些应用由于需要通过网络访问外部存储而性能低下,此外Facebook还用RocksDB来解决固态硬盘IO利用率不高相关的一些问题.

Facebook开源的真正原因

- - 外刊IT评论
在OSCON的第三天,来自Facebook的James Pearce带来了一场主题演讲,我也有幸在场. Pearce解释了Facebook为何大规模开源其软件. 他告诉我们,Facebook每个月都会发布数个开源项目,并且有数百个工程师会持续地支持这些项目——他们参与全世界的各个开源社区,改进软件的体验.

Facebook内部高效工作PPT指南

- - 互联网的那点事
Facebook 内部分享:不论你如何富有,你都赚不到更多的时间,你也回不到过去. 没有那么多的假如,只有指针滴答的时光飞逝和你应该好好把握的现在,以下25张PPT的分享将为您带来时间价值管理的技巧. 2、时间总会有的:每天只计划 4~5 小时真正的工作. 3、当你在状态时,就多干点;不然就好好休息:有时候会连着几天不是工作状态,有时在工作状态时却又能天天忙活 12 小时,这都很正常的.

在Google工作与在Facebook工作有何不同

- - 博客 - 伯乐在线
谷歌和Facebook,一个是高科技产业的霸主,一个是互联网时代的新贵. 近两年来,跳槽到Facebook的谷歌员工越来越多,那么你知道这两家互联网巨头的工作环境又有何不同呢. 谷歌和Facebook,一个是高科技产业的霸主,一个是互联网时代的新贵,在IT人士看来,前者是世界上最具工作乐趣的企业之一,并且能提供极具竞争力的待遇;而后者则是个初生的孩子,但拥有庞大的潜力.

Facebook网站所使用的开源软件一览表

- dylan - ITeye资讯频道
Facebook是全球首屈一指的社交网络平台,该网站采用了很多开源软件,Facebook采用的编程语言包括:Java, Ruby, PHP, Python, Objective-C. 下面是Facebook正在使用或者贡献的开源软件详细列表和介绍:. Apache Cassandra是一套开源分布式Key-Value存储系统.

红帽CEO:没有开源就没有谷歌和Facebook

- 幻幽 or A書 - cnBeta.COM
美国科技博客BusinessInsider近日对红帽CEO吉姆・怀特赫斯特(Jim Whitehurst)进行了采访,怀特赫斯特称,如今开源应用几乎无处不在,科技公司、银行和股票交易所等都是使用. 没有开源,谷歌和Facebook根本不可能继续存在.

Presto 来自Facebook的开源分布式查询引擎

- - 标点符
PrestoDB 来自Facebook的开源分布式查询引擎. Presto是一个分布式SQL查询引擎, 它被设计为用来专门进行高速、实时的数据分析. 它支持标准的ANSI SQL,包括复杂查询、聚合(aggregation)、连接(join)和窗口函数(window functions). 下图中展现了简化的Presto系统架构.

2015年,Facebook排名前5的开源项目

- - CSDN博客推荐文章
本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2016/01/facebook-open-source-projects. Facebook坚信开源的力量. 当社区集合起来编写代码时,其好处是不可估量的. 有人能指出问题所在,同时解决方案也会很快跟进.

深度解读Facebook刚开源的beringei时序数据库

- - IT瘾-bigdata
摘要: Facebook最近开源了beringei时序数据库,其是用来解决其内部监控数据存储和查询需求的数据库,特点是读写速度快. beringei在压缩算法上有哪些独到之处?本文中阿里云数据库高级专家叶翔将为大家深度解读. Facebook最近开源了beringei时序数据库. beringei是用来解决其内部监控数据存储和查询需求的数据库,其特点是读写速度快,属于内存数据库.