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

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

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

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

手机

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

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

比如,在四月份,我们发布了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。

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

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

数据

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

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

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

第二个项目是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++类库。并且我们今年为 Mercurial,LLVM和GNU grep提供了许多显著的贡献。

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 posts, events, videos, academic publications 和 open source projects 上都可以找到我们所有的工程项目和活动。订阅我们的 Facebook Page 和 open source news 可以获得更多的更新新闻。

2013 年 —— Facebook 在开源方面的工作介绍的更多相关文章

  1. 直接拿来用!Facebook移动开源项目大合集

    直接拿来用!Facebook移动开源项目大合集 时间:2014-04-22 15:37 作者:唐小引 随着iOS依赖管理工具CocoaPods和大量第三方开源库成熟起来,业界积累了大量的优秀开源项目. ...

  2. 2014年Facebook的开源成就

    2014是Facebook开源硕果丰硕的一年,其开源项目经理詹姆斯·皮尔斯(James Pearce)连续12天发布开源博客文章展示全年该社交网站在此领域取得的成就. 皮尔斯公布的成就包括以下内容: ...

  3. Facebook 正式开源其大数据查询引擎 Presto

    Facebook 正式宣布开源 Presto —— 数据查询引擎,可对250PB以上的数据进行快速地交互式分析.该项目始于 2012 年秋季开始开发,目前该项目已经在超过 1000 名 Faceboo ...

  4. rebound是facebook的开源动画库

    网址:http://www.jcodecraeer.com/a/opensource/2015/0121/2338.html 介绍: rebound是facebook的开源动画库.可以认为这个动画库是 ...

  5. 深度解读Facebook刚开源的beringei时序数据库——数据压缩delta of delta+充分利用内存以提高性能

    转自:https://yq.aliyun.com/topic/58?spm=5176.100239.blogcont69354.9.MLtp4T 摘要: Facebook最近开源了beringei时序 ...

  6. [转]开源中国的 IT 公司开源软件整理计划介绍

    [转]开源中国的 IT 公司开源软件整理计划介绍 http://www.oschina.net/news/61534/oschina-opensource-collection-plan-for-it ...

  7. 开源中国的 IT 公司开源软件整理计划介绍

    直击现场 <HTML开发MacOSApp教程>  http://pan.baidu.com/s/1jG1Q58M 开源中国的 IT 公司开源软件整理计划介绍 oschina 发布于: 20 ...

  8. [转]强悍的跨平台开源多媒体中心XBMC介绍

    [转]强悍的跨平台开源多媒体中心XBMC介绍 http://www.cnblogs.com/mythou/p/3220898.html 最近都在了解Android下的音视频,因为最近需要做一个多媒体中 ...

  9. Oschat IM 开源即时通讯项目介绍 - FengJ的个人页面 - 开源中国社区

    Oschat IM 开源即时通讯项目介绍 - FengJ的个人页面 - 开源中国社区 Oschat IM 开源即时通讯项目介绍    255人收藏此文章, 我要收藏 发表于5天前(2013-08-28 ...

随机推荐

  1. baidu

    [百度凤巢业务实习]   查看打赏情况 打赏100shb 打赏1000shb 打赏10000shb 只看此用户 大字体 楼主   百度凤巢业务--百度最核心的业务做数据挖掘,机器学习,广告算法等,主要 ...

  2. 教你Mac OS系统四种改动Hosts文件的方法

    使用Mac OS X系统的用户.在某些时候可能遇到了须要改动系统Hosts文件的情况,那么Mac OS系统怎样改动Hosts文件呢?和Windows系统有何差别呢?我们知道事实上改动Hosts文件仅仅 ...

  3. python 3Des 加密

    import hashlib; from Crypto.Cipher import DES3 import base64 def create_key(sk): r=hashlib.md5(sk).d ...

  4. java websocket工具

    https://github.com/dzharvis/servlet-websocket-server http://redstarofsleep.iteye.com/blog/1488639 ht ...

  5. mysql内核源代码深度解析 缓冲池 buffer pool 整体概述

    http://blog.csdn.net/cjcl99/article/details/51063078

  6. TCP/IP(84) 详解

    http://blog.csdn.net/zhangskd/article/category/873810

  7. Excel VBA批量修改文件夹下的文件名

    今天,有同事提出想批量修改文件名,规则比较简单,在第五位后加“-”即可, 上网没找到相关工具,就自己做了个excel,用宏代码修改. 代码如下: Private Sub CommandButton1_ ...

  8. thinkphp实现短信验证注册

    前言 注册时经常需要用到短信验证码,本文记录一下思路和具体实现. 短信验证平台使用云片,短信验证码的生成使用thinkphp. 思路 1.用户输入手机号,请求获取短信验证码. 2.thinkphp生成 ...

  9. 用户输出表单处理php

    php中的表单输入处理,我用两个文件,在linux输出: touch php_post1.html php_post1.php php_post1.html代码如下: <!doctype htm ...

  10. SQL Server 2012 LocalDB 管理之旅

    SQL Server LocalDB能够最大限度地节省您的数据库管理精力,以便开发人员可以专注于开发数据库应用. 使用SqlLocalDB命令行管理LocalDB 为了方便管理,LocalDB提供了一 ...