facebook开源项目集合

Facebook的开源大手笔

1. 开源Facebook平台代码

Facebook在2008年选择将该平台上的重要部分的代码和应用工具开源。Facebook称,平台已经基本发展成熟,此举可以让开发者更全面地理解整个Facebook平台,更容易地为Facebook开发应用软件,并可以回报社区。

该项目代号为“FBOpen”,其中包含了实现Facebook平台的一些基础设施、功能等,如API架构、FQL分析器、FBML分析器、FBJS,以及许多常用方法和标签的实现,代码基于PHP。这意味着其他开发者可以很方便地利用Facebook所采用的基础设施和技术。

项目地址:https://github.com/facebook/platform/tree/master/fbopen

开源的代码中,绝大部分使用CPAL(Common Public Attribution License)许可,而FBML分析器使用的是MPL(Mozilla Public License)许可证。

2. 开源数据中心和网络系统

为了在数据中心上与Google对抗,2011年Facebook宣布了开源计算项目(Open Compute Project,简称OCP)计划。该项目旨在创建“开源的”数据中心硬件,Facebook数据中心设计图、服务器配置、数据中心监控界面等悉数开源。Facebook此举的目的是为大数据中心建立更快、更便宜、用材更少的硬件。更重要的是,通过OCP免费提供的设计,任何企业都可以使用它,并对其进行调整。

今年5月份,Facebook又宣布将其包括交换机等网络设备在内的网络系统开源。

采用开源数据中心,使得Facebook可以与Google这一规模、经济实力都在它之上的对手在数据中心领域展开竞争。

Facebook开源的基础设施

除了大的系统平台、数据中心外,Facebook也开源了其所使用的基础设施和服务。介绍如下。

1. Apache Cassandra

这是一个分布式的存储系统,用来管理结构化数据,并可以扩展非常大型的、跨多个商品服务器(commodity servers)的大数据集,而不用担心出现单点故障。

2. Apache Hive

这是一个数据仓库基础设施,构建于Hadoop之上,其提供的工具可以轻松对大数据集进行数据汇总、即席查询(adhoc querying)和分析等。

3. FlashCache

这是一个针对Linux的通用的回写块缓存。它可以作为一个可加载的Linux内核模块,在文件系统之下使用。

4. HipHop for PHP

这是一个PHP虚拟机、运行时、JIT(Just In Time,实时生产系统)。它的前身是HPHPc(可将PHP代码编译为C++的项目)。HipHop虚拟机为PHP代码带来了一个大大的性能提升。

5. folly

folly(Facebook Open-source LibrarY)是一个提供类似std和boost功能的底层库,基于C++11特性。folly的开发者包括了Andrei Alexandrescu之类的C++编程领域的大师级人物。folly与std和boost的最大不同就是在大规模的场景中效率更高。

6. Scribe

这是一个可扩展的服务,用于从大量的服务器中实时聚合日志数据流。

7. Thrift

该项目提供了一个框架,用于可扩展的跨语言服务开发。Thrift结合了一个软件堆栈和一个代码生成引擎,来构建可高效工作的服务,可无缝跨C++、Java、Python、PHP、Ruby、Erlang、Perl、Haskell、C#、Cocoa、JavaScript、Node.js、Smalltalk、OCaml、Delphi和其他语言。

8. Tornado

一个相对简单、无阻塞的Web服务器框架,使用Python编写。它被设计用来处理成千上万的并发连接,这使得它非常适合实时Web服务。

9. React

这是一个用于构建用户界面的JavaScript库,用来呈现instagram.com和Facebook的部分站点。

10. FBMock

FBMock是一个PHP mocking框架,简单且易于使用。

Facebook开源的内部开发工具

Facebook也选择将其内部开发人员所使用的工具开源。

1. codemod

可以协助开发者对大型代码库进行部分自动化重构工作,但仍然需要人的监督和不定期的干预。

2. Facebook Animation

这是一个JavaScript库,可以帮助开发者使用DOM和CSS来创建自定义动画。

3. Online Schema Change for MySQL

允许你在线更改集群中的大型数据库表,而不需将集群离线。

4. Phabricator

这是一个Web应用程序集合,可以帮助开发者轻松编写、审查和共享源代码。目前数百名Facebook工程师每天都在使用它。

5. PHPEmbed

该工具使得嵌入PHP对于开发者来说变得真正简单,这是一个更方便和更简化的、构建于PHP SAPI之上的API。

6. phpsh

该工具为PHP提供了一个交互式的shell,功能包括readline历史、标签自动完成以及快速访问文档等。有趣的是这个工具是用Python写的。

7. Three20

这是一个针对iPhone开发者的Objective-C库,提供了很多UI元素和数据辅助工具,不过该项目现在已经不维护了,不过你可以用于iOS5/6系统的应用开发中。

8. XHP

XHP是一个PHP扩展,可以增强PHP语言的语法,比如将XML文档片段变为有效的表达式。

9. XHProf

这是一个针对PHP的函数级的分层分析器,拥有一个简单的基于HTML的导航界面。

开发平台

Facebook的平台工程团队也发布和维护着一些开源的平台SDK,这些SDK可以帮助开发者很方便地将Facebook整合进第三方应用中。

Facebook Android SDK:针对Android平台的SDK。

Facebook iOS SDK:针对iOS平台的SDK。

Facebook JavaScript SDK:针对JavaScript应用的SDK。

Facebook PHP SDK:针对PHP应用的SDK。

Facebook工程师贡献的开源项目

Facebook的工程师也参与了很多开源项目的贡献。这些开源项目在Facebook中都有应用,并在生产环境中得到了优化。

1. Apache Hadoop

Apache Hadoop提供了可靠的、可扩展的、分布式的计算基础设施,在Facebook中用于数据分析。

2. Apache HBase

这是一个分布式的、面向列的数据存储,构建于Hadoop分布式文件系统(HDFS)之上。

3. Cfengine

这是一个基于规则的配置系统,用于服务器的自动配置和维护。Facebook使用Cfengine来维护主机配置,并在产品层面上自动化许多管理操作。

4. jemalloc

这是一个快速、一致、支持堆分析的内存分配器。Facebook的工程师为其添加了堆分析特性,并做出了很多优化。

5. memcached

这是一个分布式的内存对象缓存系统。Memcached最初不是由Facebook开发的,但Facebook已经成为了该技术的最大用户。

6. MySQL

MySQL是Facebook数据库基础设施的骨干。你可以在Launchpad中找到很多Facebook贡献的补丁,还可以通过[email protected]页面来了解Facebook如何使用它。

7. PHP

Facebook的大部分代码都是使用PHP开发的。它的语法很简单,让Facebook在产品上能够更快地迁移和迭代。

8. Varnish

在Facebook,该项目每天处理来自全世界用户的数十亿请求。当你加载朋友的图片和和头像时,Varnish就有参与。

时间: 2024-10-26 01:23:33

facebook开源项目集合的相关文章

Github上关于iOS的各种开源项目集合(强烈建议大家收藏,查看,总有一款你需要)

下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. SVPullToRefresh - 下拉刷新控件. MJRefresh - 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字说明.具体使用看“使用方法”. (国人写) XHRefreshControl - XHRefreshControl 是一款高扩展性.低耦合度的下拉刷新.上提加载更多的组件.(国人写) CBStoreHouseR

github上关于iOS的各种开源项目集合(转)

UI 下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. SVPullToRefresh - 下拉刷新控件. MJRefresh - 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字说明.具体使用看“使用方法”. (国人写) XHRefreshControl - XHRefreshControl 是一款高扩展性.低耦合度的下拉刷新.上提加载更多的组件.(国人写) CBStoreHou

Android 开源项目集合

上百个Android开源项目分享,希望对android开发有帮助. Android PDF 阅读器 http://sourceforge.net/projects/andpdf/files/ 个人记账工具 OnMyMeans http://sourceforge.net/projects/onmymeans/develop Android电池监控 Android Battery Dog http://sourceforge.net/projects/andbatdog/ RSS阅读软件 Andr

android 5.0 Material Design酷炫风格的开源项目集合

一.前言 Android 5.0上线有一个段时间了,估计小伙伴们都看到了Android5.0界面上相比前面几个版本有了很大的突破,给人一种非常酷炫,平滑的跳转,生动的界面切换,全新的感觉,Android用户终于可以感叹,Google升级了这么多个版本终于像样的搞了一回界面.开发者们看到这些优美的动画也要大户过瘾啊.github上面的高人们都已经饥渴难耐了出了写出了各种好用,炫丽的特效,我们今天就来看一下都有哪些可以用比较爽的开源项目. Material Menu 项目地址:https://git

优秀c++开源项目集合

本文会持续更新, 我希望通过这篇文章把我看到过的优秀开源项目记录下来, 有时间仔细阅读. cockroachdb 前googler开发的开源的spanner数据库: https://github.com/cockroachdb/cockroach log4cplus 轻量级c++日志库: https://github.com/log4cplus/log4cplus sofa-pbrpc 基于protobuf的rpc库, 我负责的项目: https://github.com/BaiduPS/sof

(Facebook开源项目)Fresco:一个新的Android图像处理类库

在Facebook的Android客户端上快速高效的显示图片是非常重要的.然而多年来,我们遇到了很多如何高效存储图片的问题.图片太大,而设备太小.一个像素点就占据了4个字节数据(分别代表R G B和alpha).如果在一个480*800尺寸的手机屏幕上,一张单独的全屏图片就会占据1.5MB的内存空间.通常手机的内存都非常小,而这些内存被多种多样的app划分占用.在一些设备上,Facebook app虽然只有16MB,但是仅仅一个图片就占用了1/10的空间. 当你的app用完你的内存时会发生什么呢

优秀的PHP开源项目集合

包管理Package Management Libraries for package and dependency management. Composer/Packagist– A package and dependency manager. Composer Installers– A multi framework Composer library installer. Package Management Related Libraries related to package ma

Facebook 开源项目 Fresco 使用简介

1. 在Gradle中添加依赖 dependencies { compile 'com.facebook.fresco:fresco:0.1.0+' } 2. 在Application 初始化时调用 Fresco.initialize(context); 3. 在xml布局文件中, 加入命名空间: xmlns:fresco="http://schemas.android.com/apk/res-auto" 4. 加入SimpleDraweeView: <com.facebook.

NetCore开源项目集合

具体见:https://github.com/thangchung/awesome-dotnet-core 半年前看到的,今天又看到了,记录下. General ASP.NET Core Documentation - The official ASP.NET Core documentation site. .NET Core Documentation - Home of the technical documentation for .NET Core, C#, F# and Visual