开源软件中有大量专家构建的代码,大大节省了开发人员的时间和成本,热衷于开源的大厂们总是能够带给我们新的惊喜。2016年9月GitHub报告显示,GitHub已经有超过 520 万的用户和超 30 万的组织。这十二个月以来,有超过 81 万的人发起了人生第一个 PR,更有 280 万人创造了他自己的第一个仓库,而中国,成为新注册增长最多的国家。
Facebook开源项目负责人曾说过:
一是开源能够帮助他人更快地开发软件,促进世界创新,主要是社会价值层面的考虑。二是开源能够倒逼Facebook的工程师写出更好的代码。三是开源能够更有效利用社区的力量,帮助Facebook一起解决难题。开源,让世界更美好,不是吗?
国内外很多国家都为开源做出了很大的贡献,小编也秉着“开源”的心态,整理了13个公司的开源软件,这13个公司分别是微软、Google、亚马逊、IBM、VMware、Facebook、Twitter、ebay、腾讯、阿里、百度、美团点评、华为等。分两篇文章和大家共享,快点Mark起来并转发给需要的人吧。
微软开源软件
1、Visual Studio Code:跨平台源代码编辑器
Visual Studio Code是微软于2015年正式发布的项目,可以运行在Mac OS X、Windows和Linux之上,面向Web和云应用的一款跨平台源代码编辑器。
虽然它的名字与Visual Studio相近,但前者是代码编辑器,后者是集成开发环境(IDE)并且目前只运行在Windows上。
GitHub主页:
https://github.com/Microsoft/vscode
2、CNTK: 深度学习开源工具包
CNTK全称为The Microsoft Cognitive Toolkit, 将神经网络描述为计算机可处理的有向图,有向图的叶节点表示输入值或网络参数,其他节点表示输入对应的矩阵运算。CNTK便于实现并且也结合了很多流行计算模型如前馈DNN,卷积网(CNN)和复现网络(RNN / LSTM)。它可以跨多个GPU和服务器实现随机梯度下降(SGD,误差反向传播)学习与自动微分和并行化。
可以在Python或者C++语言中如同库版应用,也可以使用其自有的描述语言BrainScript单机化使用。CNTK可适用于64位的Linux和Window,于2015年4月开源。
GitHub地址:
https://github.com/Microsoft/CNTK
3、TypeScript:开源编程语言,JavaScript的超集
TypeScript是JavaScript强类型的超集,可以编译成纯JavaScript。由微软开发的自由和开源的编程语言,可以运行在各类浏览器和操作系统之上。
GitHub主页:
https://github.com/Microsoft/TypeScript/
4、Azure相关:文档、SDK和代码示例
微软支持开发者们将各种开源软件工具和技术带入Azure。Azure 应用市场支持很多Linux 分发,包括 Ubuntu、Debian 和 SUSE;也支持借助支持 Node.js、PHP、Python 和 Java 的 Azure 应用服务,生成 Web 和移动应用。在GitHub上Azure相关的存储库有1700+个。
地址:https://azure.microsoft.com/zh-cn/overview/open-source/
5、BashOnWindows:解决Ubuntu Bash在Windows的使用问题
微软在Build 2016大会上宣布了一条振奋人心的消息,大家惊呼Ubuntu on Windows。Bash on Windows 为开发者们提供了Bash shell、Linux类似环境,在不需要Linux虚拟机的情况下,大部分的Linux命令行工具基本上可以不经修改地运行在Windows上。
GitHub地址:
https://github.com/Microsoft/BashOnWindows
6、Donnet:采用系统虚拟机运行的编程平台
.NET是微软研发的XML Web services平台,此框架支持多种语言(如C#、F#、VB.Net、C++、Python等)的开发。.NET框架历经亟待,最终于2014年开源。C#通常被认为是微软专属,是.NET框架上最常用的编程语言之一, 其著名竞争对手是Java。
GitHub主页:
https://github.com/Microsoft/dotnet/network
7、PowerShell :为任何系统提供Windows的命令行工具
一个跨平台(Windows、Linux和macOS)自动化和配置工具/框架,可与现有工具完美配合,并优化用于处理结构化数据(例如JSON,CSV,XML等)、REST API 和对象模型。 它包括命令行shell,相关的脚本语言和用于处理cmdlet的框架。
GitHub地址:
https://github.com/PowerShell/PowerShell
8、MSOpenTech/redis: 在Windows使用Redis
官方只支持64位,可自行构建32位版。该开源项目,在2.8版本中,替代UNIX fork()API中的内存映射文件模拟写时复制行为。 版本3.0类似,为了便于系统文件分页,删除了内存映射文件,在管理堆碎片方面进行了改进。
Redis对文件描述符的值做了一些假设,微软构建了一个虚拟文件描述符映射层。
GitHub地址:
https://github.com/MSOpenTech/redis
9、WinObjc:Windows下的Objective-C
为Visual Studio提供了一个Objective-C开发环境并支持iOS API。通过重新使用Objective-C代码和iOS API,配以Windows自有Cortana(中文名:微软小娜,微软发布的全球第一款个人智能助理)和通知等功能,用户可以创建通用Windows平台(UWP)应用程序并运行在Windows设备上。
GitHub地址:
https://github.com/Microsoft/WinObjC
GitHub地址:
https://github.com/Microsoft/api-guidelines
10、ASP.NET之MVC核:模型(model)-视图(view)-控制器(controller)框架
旨在TDD友好,用于创建符合最新Web标准的复杂应用程序、构建动态网站,可以在IIS中托管或自我托管。
GitHub地址:
https://github.com/aspnet/Mvc
11、.Net 开源核心类库:运行环境和编译器
.Net的核心类库,运行环境和编译器都已经开源,如今整套.Net环境都可以在Linux,Mac下运行。
Github主仓库:
https://github.com/Microsoft/dotnet
12、ChakraCore :开源JavaScript解释器
随着Windows10一起面世的Edge浏览器是微软的洗心革面之作,运行效率得到了极大的提升,多项测试中执行效率甚至超过了Chrome。 ChakaraCore,作为Edge浏览器的JavaScript解释器,是其中的秘密武器。在ChkraCore开源后,原本就火热的JavaScript后端开发领域或许会迎来新的推动力。
Github主仓库:
https://github.com/Microsoft/ChakraCore
13、PerfView:CPU 和内存性能分析工具
PerfView 是微软开源的 CPU 和内存性能分析工具。它能以多种方式收集和观察 ETL 文件,拥有强大的群组运算能力。
在 Visual Studio 中打开 src/PerfView/Perfview.sln 文件,选择 Build -> Build Solution ,即可创建。生成的 PerfView.exe 文件是以 src/PerfView/bin/BuildType/PerfView.exe 命名,配置好后即可使用。
需要工具:Visual Studio 2013 或更高版本,建议 Visual Studio 2015 。
详情:https://www.oschina.net/p/perfview
14、vcpkg:VC++ 打包工具
vcpkg 是微软 C++ 团队开发的在 Windows 上运行的 C/C++ 项目包管理工具,可以在 Windows 平台上获取 C 和 C++ 库.
vcpkg 自身也是使用 C++ 开发的,整合了 git,构建系统整合的 CMake,并且 vcpkg 能够帮助用户在 Visual Studio 中更好的使用这些安装好的库.
详情:https://www.oschina.net/p/vcpkg
15、Checked C:C/C++ 更加安全的库
Checked C允许程序员在C/C++中编写“确保边界检查”的代码。该规范确定了变量操作行为,包括指针类型的间接寻址、数组引用、赋值、指针加法、比较、取址(&)、含边界检查数组类型和指针类型的转换等。编译器可以通过增加参数在指针非正常使用时发出警告或者错误。
Checked C 包含规范、一个clang的实现和一个LLVM的实现。
详情:https://www.oschina.net/p/checked-c
16、monaco-editor :基于浏览器的代码编辑器
Monaco Editor 是微软开源的基于 VS Code 的代码编辑器,运行在浏览器环境中。编辑器提供代码提示,智能建议等功能。供开发人员远程更方便的编写代码。
详情:https://www.oschina.net/p/monaco-editor
亚马逊开源软件
1、DDSTNE:开源深度学习工具
DDSTNE是亚马逊推荐系统中使用的深度学习工具,为多GPU节点和松散数据结构进行了专门优化.
Github主仓库:
https://github.com/amznlabs/amazon-dsstne
2、opsworks-cookbooks:开源运维辅助工具
亚马逊为开源运维工具Chef编写的配置和运维策略集。如果你想在AWS上尝试Chef,这是亚马逊为你进行的专门定制。在其他平台上尝试Chef,亚马逊的opsworks-chookbooks也有一定的参考意义.
Github主仓库:
https://github.com/aws/opsworks-cookbooks
3、Amazon Ion:开源数据存储格式
亚马逊开源的数据存储格式,同时支持便于查看的文本格式和便于高效存储和传输的二进制格式。提供了C,Java,Python语言的支持。
Github主仓库:
https://github.com/amznlabs/ion-java
谷歌开源软件
1、Android:开源移动操作系统
世界最流行的操作系统,市场占有量甚至超过了Windows。 成功很大程度来源Android操作系统相比竞争对手采用了开源的策略,使得手机制造商能够大量生产基于Android操作系统的手机。
地址:
https://source.android.com
2、Chromium:开源浏览器
Chromium是Chrome的开源版本,几乎所有的浏览器新特性都会首先出现在Chromium上再逐步往Chrome“下放”。由于Chromium的开源属性,几乎所有的国产浏览器里都有着Chromium的开源代码。
地址:
https://www.chromium.org/
3、TensorFlow:AI和机器学习
TensorFlow是Google开源的用于机器学习库。用于构建和训练神经网络,编写AI程序。去年横扫人类围棋高手的Google AI程序,就是基于TensorFlow编写的。TensorFlow可以运行在CPU,也可以运行在GPU之上。
Github主仓库:
https://github.com/tensorflow/tensorflow
4、Go:开源编程语言
发布于2007年的编程语言。Go尝试成为一种在保留住灵活性和性能的同时最大程度去处C系编程语言复杂度的新系统语言。虽然社区里一直有对Go特性不足的抱怨,但创始人坚决认为这对保持这一语言的成功是必不可少的。 Go语言目前主要运用于服务器编程领域。
Github主仓库:
https://github.com/golang/go
5、AngularJS:前端框架
AngularJS是一个用来编写单页Web应用的前端框架。虽然AngularJS的目标是简化Web应用的开发过程,但其自身引入的众多概念带来的复杂性也受不少诟病。
Github主仓库:
https://github.com/angular/angular/
6、Kubernetes:容器集群管理系统
Kubernetes 是来自 Google 云平台的开源容器集群管理系统。基于 Docker 构建一个容器的调度服务。该系统可以自动在一个容器集群中选择一个工作容器供使用。其核心概念是 Container Pod。
Github地址:
https://github.com/kubernetes/kubernetes
7、Protocol Buffers:分布式计算
用于不同进程和服务器之间进行数据通信的数据序列化工具。服务器上不同的程序能通过Protocol Buffers来进行通信和分工协作。相比XML和JSON,Protocal Buffers有着更高的性能,但你也不再能仅凭文本编辑器就查看到自己的数据。
Github主仓库:
https://github.com/google/protobuf
8、Dart:开源编程语言
另一个由Google支持的开源编程语言。Dart着力于Web应用,移动App和物联网设备。和Go不同,Dart不是一种编译型语言。它和Python或Java一样运行在自己的虚拟机之上,但也能转换成JavaScript放入浏览器中运行。
Github主仓库:
https://github.com/dart-lang/sdk
9、Fuchsia OS:操作系统
神秘的全新开源操作系统,和之前的Android不同,Fuchsia OS没有基于Linux内核,而是另起炉灶打造里一套更能被Google控制的操作系统内核. Google是准备打造IOT(物联网)领域的新Android,还是仅仅是个试验项目,现在还不得而知。
地址: https://fuchsia.googlesource.com
10、GWT:Google web工具包
Google 网页工具包——GWT 提供了一组基于Java语言的开发包,
开发出来的Java应用将由GWT开发包提供的编译工具编译后声生成对应的、应用了Ajax技术的Web应用,Java应用中出现的、和服务器之间的交互动作被自动生成的异步调用代码所代替。
详情:http://www.oschina.net/p/google-web-toolkit/
11、Google Mock:C++模拟测试框架
Google Mock在google内部超过100个项目中使用过,这个框架能够在Linux,Windows 和Mac OS X上使用。
下载地址:
http://download.csdn.net/download/liulangren615/4681174
12、GRPC:RPC 框架
GRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。目前提供 C、Java 和 Go 语言版本,分别是:grpc,grpc-java,grpc-go。其中 C 版本支持 C,C++,Node.js,Python,Ruby,Objective-C,PHP 和 C# 支持。
GRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。
开源中国组织翻译的《gRPC 官方文档中文版》:
http://doc.oschina.net/grpc
13、Gumbo:纯C语言实现的HTML5解析库
Gumbo 是 Google 的一款用C语言实现的HTML5解析库,无需任何外部依赖。目标及特征:
遵循 HTML5 规范
功能强大,可处理一些不规范的 HTML 标签
简单的 API
支持源位置和指针回到原始文本
轻巧、没有外部依赖
通过 html5lib-0.95 兼容测试
已在超过25亿个来自谷歌索引的页面中进行过测试
Github地址:
https://github.com/google/gumbo-parser
14、Google API for Java
Google API Client Library for Java 是由Google开发的一个Java客户端类库,用于访问其提供的各种基于HTTP的服务。具有灵活、高效、强大等特点。这是访问基于REST或JSON-RPC的Google API推荐类库。
Github地址:
https://github.com/google/google-api-java-client
15、MDL:前端开发工具组
MDL (Material Design Lite) 是 Google 推出的网站前端开发工具组。Material Design Lite (MDL)可以让你添加一个 Material Design 的外观和感觉到你的静态内容网站,不依赖于任何的 JavaScript 框架和库。MDL 可以优化跨设备的使用体验,可以在旧版的浏览器进行平滑的切换,提供非常快速的访问体验。
浏览器支持:
IE9-11,Chrome,Opera,Firefox,Safari,Chrome(Android),Mobile Safari。
详情:https://www.oschina.net/p/mdl
16、Google JS Test
Google JS Test是一个运行于V8 JavaScript引擎下的Javascript单元测试框架,其在Google内部负责对Chrome的快速JS执行速度进行测试。
详情:https://www.oschina.net/p/google-js-test
17、Bazel:代码构建工具
Bazel 是 Google 的一款可再生的代码构建工具。它主要是用于构建 Google 的软件,处理出现在谷歌的开发环境的构建问题,比如说:大规模数据构建问题,共享代码库问题,从源代码构建的软件的相关问题。
Bazel 支持多种语言并且跨平台,还支持自动化测试和部署、具有再现性(Reproducibility)和规模化等特征。Bazel 在谷歌大规模软件开发实践能力方面起着至关重要的作用。
详情:https://www.oschina.net/p/bazel
GitHub地址:
https://github.com/bazelbuild/bazel
18、SyntaxNet:全球最精准自然语言解析器
SyntaxNet 是一个框架,即学术圈所指的SyntacticParser,他是许多NLU系统中的关键组件。在这个系统中输入一个句子,他会自动给句子中的每一个单词 打上POS(part-of-Speech)标签,用来描述这些词的句法功能,并在依存句法树中呈现。这些句法关系直接涉及句子的潜在含义。
详情:https://www.oschina.net/p/syntaxnet
19、AnyPixel.js:可令用户自己创造交互展示
AnyPixel.js 是 Google 开源的一个软件和硬件框架,可以用来构建各种由“像素”构成的展示,每个像素可以是任何一种可交互的实体对象,如 LED 灯、气球等。
详情:https://www.oschina.net/p/anypixel-js
20、PerfKit:云基准测试工具
PerfKit 提供一组基准测试方法用来测量和比较云服务。当前支持 Google 自己的 Compute Engine、亚马逊的 AWS 和微软的 Azure 云。PerfKit 同时还提供一个可视化工具 PerfKit Explorer 用来比较测试结果。
详情:https://www.oschina.net/p/perfkit
21、Gson:Java的JSON类库
Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。
详情:https://www.oschina.net/p/google-json
GitHub地址:
https://github.com/google/gson
22、Eclipse ADT:Eclipse ADT logoAndroid开发插件
Eclipse ADT 是 Eclipse 平台下用来开发 Android 应用程序的插件。
在线安装地址:
https://dl-ssl.google.com/android/eclipse/
23、LevelDB:K/V数据库
Leveldb是一个google实现的非常高效的kv数据库,目前的版本1.2能够支持billion级别的数据量了。 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计。特别是LSM算法。
LevelDB 是单进程的服务,性能非常之高,在一台4个Q6600的CPU机器上,每秒钟写数据超过40w,而随机读的性能每秒钟超过10w。
Github地址:
https://github.com/google/leveldb/
在企业使用开源和贡献开源方面,Google一直是行业的典范。一直以来,Google都在极力推广和倡导开源,并发布了一系列开源项目。开源中国社区目前收录了Google 259 款开源软件,此处不一一列举。
IBM开源软件
1、Apache SystemML :机器学习语言
SystemML 是灵活的,可伸缩机器学习 (ML) 语言,使用 Java 编写。机器学习 (ML) 是指无需显式的编程即可让计算机学习的能力。
SystemML 先进的机器学习主要基于两方面:SystemML 语言,声明式机器学习 (DML)。
SystemML 包含线性代数原语,统计功能和 ML 指定结构,可以更容易也更原生的表达 ML 算法。算法通过 R 类型或者 Python 类型的语法进行表达。DML 通过提供灵活的定制分析表达和独立于底层输入格式和物理数据表示的数据显著提升数据科学的生产力。
其次,SystemML 提供自动优化功能,通过数据和集群特性保证高效和可伸缩。SystemML 可以在 MapReduce 或者 Spark 环境运行。
详情:https://www.oschina.net/p/systemml
2、Kitura:Swift 的 Web 框架
Kitura,来自IBM的基于Swift的Web框架,也是一个HTTP服务器。
特性:
URL路由(GET, POST, PUT, DELETE)
URL参数
静态文件服务
支持FastCGI
支持SSL/TLS
JSON解析
可插拔的中间件
详情:https://www.oschina.net/p/kitura
GitHub地址:
https://github.com/IBM-Swift/Kitura
3、TJ Bot:开源 DIY 纸板机器人
TJBot 延续了手工社区的精神,它是一套 DIY 工具包,可让你建立由 Waston 驱动的可编程纸板机器人。该机器人由一块切割的纸板(可以是 3D 打印或者激光切割)、Raspberry Pi 和多种插件(包括一个 RGB LED 灯、一个麦克风、一个伺服电机和一个摄像头)构成。
详情:https://www.oschina.net/p/tj-bot
4、OpenWhisk:无服务器计算平台
OpenWhisk 是一个由 IBM 开源的、事件驱动的无服务器计算平台,你可以将操作代码发送给 OpenWhisk,然后提供 OpenWhisk 代码要处理的数据流。OpenWhisk 负责处理计算资源的扩展,这些资源是处理工作负载所需要的;你只需要处理操作代码以及触发这些操作的数据。
OpenWhisk 简化了微服务的部署,消除了管理自己的消息代理或部署自己的工作服务器的需求。OpenWhisk 适用于你不希望管理任何基础架构的项目,只需为已完成的工作付费,不会将金钱浪费在空闲的服务器上。OpenWhisk 很容易管理活动峰值,因为它可以外扩来满足该需求。
详情:https://www.oschina.net/p/openwhisk
GitHub地址:
https://github.com/bjustin-ibm/openwhisk
5、Quarks:物联网传感器数据应用开发工具
Quarks 是 IBM 开发的一个开源开发工具,用于帮助制造商和程序员开发高效的基于物联网传感器数据的应用。
详情:https://www.oschina.net/p/quarks
6、Node Application Metrics:Node.js 应用监控工具
Node Application Metrics 提供了一个基础设施,来为基于 Node.js 的应用收集资源和性能监控数据。Node Application Metrics 创建所基于的数据收集性能,是 Health Center 开发工具所使用的,同时也是基于 Eclipse 的 IBM 监控和诊断工具的一部分。
Node Application Metrics 公开了 JavaScript 和 C 的 API,这使得开发者工具、管理和扩展工具、性能监控工具,比如 StatsD with Graphite 或 Elasticsearch with Kibana,都可以实现数据采集。
详情:https://www.oschina.net/p/node-application-metrics
7、Clouseau:全文搜索库
Clouseau 通过类似 Erlang 的节点使用 Scalang 来公开 Lucene 的功能。在每个独立的终端窗口运行。
详情:https://www.oschina.net/p/clouseau
8、Dreyfus:全文搜索库
Dreyfus 管理 Clouseau 节点来表现全文搜索特性。
详情:https://www.oschina.net/p/dreyfus
Facebook开源软件
1、React Native:移动开发框架
React Native是Facebook在2015年开源的基于React.js的移动开发框架,它的设计理念是让移动应用既拥有Native的用户体验,同时又可以保留React的开发效率,提高代码的复用率。React Native的宗旨是,学习一次,高效编写跨平台原生应用。开发者可以使用JavaScript编写应用,并利用相同的核心代码就可以创建Web、iOS 和Android平台的原生应用,目前已经实现了对iOS和Android两大平台的支持。
GitHub主页:
https://github.com/facebook/react-native
2、GraphQL:数据查询语言
GraphQL是Facebook开源的数据查询语言。Facebook在构建移动应用程序时,需要用API获取足够强大的数据来描述所有的脸谱,同时简单易学易用,于是开发了GraphQL,并支持每天千亿级的调用。GraphQL不是像MySQL或Redis这样直接面向数据的接口,而是面向已经存在的应用代码的接口。你可以把GraphQL看作是为了调用应用服务器上的方法的一些内嵌的RPC。
GitHub主页:
https://github.com/facebook/graphql
3、Presto:大数据查询引擎
Presto是Facebook开发的一款分布式SQL引擎,主要用于针对各种大小的数据源(从GB到PB)来运行交互式分析查询。Facebook创建Presto的主要目的在于帮助他们更快地分析数据,因为Facebook的数据量一直在持续增长,产品周期的节奏也变得越来越快。自从2013年11月开源后,Presto的用户量呈现了爆发式增长。诸如Airbnb、京东、Dropbox以及Netflix等公司都将Presto作为自己的交互式查询引擎。
GitHub主页:
https://github.com/prestodb/presto
4、HHVM:PHP执行引擎
HHVM(HipHop Virtual Machine)是Facebook于2013年开源的PHP执行引擎。它采用一种JIT(just-in-time)的编译机制实现了高性能,同时又保持对 PHP 语法的充分支持。HHVM常常用作独立的服务器,用于替代Apache与mod_php,旨在执行使用Hack与PHP所编写的程序。它使用了即时编译方法来实现超高的性能,同时又保持了PHP开发者所习惯的灵活性。
GitHub主页:
https://github.com/facebook/hhvm
5、React:JavaScript库
React是Facebook开发的用于构建用户界面的JavaScript库,现已为很多公司所用,因为它采用了一种不同的方式来构建应用:借助于React,开发者可以将应用分解为彼此解耦的独立组件,这样就可以独立维护并迭代各种组件了。2015年,React有两个主要的发布,同时还发布了React Native,并且发布了新的开发者工具。现在已经有越来越多的公司(包括Netflix与WordPress)开始使用React构建自己的产品了。
GitHub主页:
https://github.com/facebook/react
6、RocksDB:键值存储系统
RocksDB是Facebook开源的嵌入式、可持久化键值存储系统,它基于Google的LevelDB,但提高了扩展性可以运行在多核处理器上,可以有效使用快速存储,支持IO绑定、内存和一次写负荷。过去一段时间,RocksDB在社区非常流行,Facebook分析其原因在于它能够对由于网络延迟等原因造成的慢查询响应时间起到消除的作用,RocksDB非常灵活,完全可以针对各种新兴的硬件发展趋势进行定制。LinkedIn与Yahoo都是RocksDB的重度使用者。
GitHub主页:
https://github.com/facebook/rocksdb
7、Big Sur:人工智能硬件平台
近些年,人工智能和机器学习方向取得了长足的发展。据Kevin Lee透露,Facebook的AI软件已经能够阅读故事、回答相关场景的问题、玩游戏以及通过一些例子来学习非指定的内容。作为计算密集型的应用,AI软件的性能与数据集规模/硬件性能密切相关。尤其是硬件方面,高性能微处理器、存储器以及图形处理器(Graphics Processing Unit,GPU)的发展为AI算法的快速运行提供了坚实基础。为了进一步更好地服务大规模AI计算,Facebook推出了基于GPU的、用于训练神经网络的“Big Sur”硬件系统。
8、ATC:网络模拟测试工具
Augmented Traffic Control(ATC)能够利用Wi-Fi网络模拟2G、2.5G(Edge)、3G以及LTE 4G移动网络环境,测试工程师们可以快速在各种不同的模拟网络环境中切换,从而实现对智能手机和App在不同国家地区和应用环境下的性能表现进行测试。ATC是Facebook内部团队在2013年的一次Hackathon活动上开发出来的工具,其原理实际是利用了Linux流量控制系统,通过纯Python的网络库pyroute2调用netlink的API控制,而开发其的目的是为了确保更多的用户获得最好的应用体验。
GitHub主页:
https://github.com/facebook/augmented-traffic-control
9、HydraBase:开源数据库
HydraBase是HBase数据库的升级版。Facebook是HBase的重度用户,Facebook的HBase数据库系统存储着Facebook的很多关键业务数据,包括内部监控系统、搜索索 引、流数据分析以及数据抓取等。HydraBase相比HBase稳定性和可用性更高,可以减少服务器宕机时间。HydraBase能够让一个数据域分布在多个域服务器中,域服务器之间能相互备份,因此能够大大减少数据恢复所用的时间。Facebook声称HydraBase能将Facebook全年的宕机时间缩减到不到5分钟。
Facebook已经将HydraBase捐赠给Apache,目前很多代码都已经被合并到HBase中。
详情:https://www.oschina.net/p/hydrabase
10、WebScaleSQL:关系型数据库
WebScaleSQL是基于MySQL 5.6 社区版本改编的MySQL通用分支,基于GPL开源协议发布。WebScaleSQL目前已经做了很多性能改进工作,包括:客户端异步协调、逻辑预读、查询限流、服务端线程池优化、InnoDB大页支持等等。WebScaleSQL上的功能都是很“Web Scale”和接地气的。比如线程池优化,WebScaleSQL基于Mariadb的线程池实现进行重写并优化,对读写队列进行分离,重新设计队列优先级策略,避免了饿死现象。要知道线程饿死在有些场景下是很严重的。尤其是在并发连接数往往很大的互联网应用里面。
GitHub主页:
https://github.com/webscalesql/webscalesql-5.6
11、Phabricator:代码审查工具
代码审查方面,Facebook开源了可视化工具Phabricator。工程师可以在页面上非常方便的针对每一段(单行或者多行)代码进行交互讨论;负责审查的工程师可以接受代码改变,可以提出疑问要求原作者继续修改,可以提出自己不适合以推出该代码审查,等等。只有代码被明确接受之后才能被工程师提交到服务器端的代码库,这一点集成到提交工具中强制执行。
GitHub主页:
https://github.com/phacility/phabricator
12、Proxygen:C++HTTP框架
Proxygen是一款Facebook开源的支持SPDY 3.1的HTTP框架。其目的不是替换Apache,而是有能力创建一个专用的高性能Web服务器,使其可以嵌入到Facebook提供Web服务的现有应用中。Facebook从2011年开始构建一款代理服务器(Proxygen这个名字也是由此而来),在该项目演进并在生产环境中测试了数年之后,Facebook将其代码开源了。 Facebook内部做的基准测试表明,在一个Proxygen echo服务器上,每秒可以支撑多达304 197次基于SPDY 3.1的内存GET请求。
GitHub主页:
https://github.com/facebook/proxygen
13、Pop:开源动画库
Pop是Facebook推出的一个可扩展的iOS 和OS X动画库,其新闻聚合阅读应用Paper背后的核心技术就是由Pop支持。除了增加基本的静态动画外,还支持Spring和衰变动态动画,可非常方便的构建现实的、基于物理的交互。Pop动画库的动画效果非常流畅,因为它使用了CADisplayLink来刷新画面(帧),一秒钟刷新帧数为60帧,接近于游戏开发引擎。Pop动画的自成体系,与系统的CoreAnimation有很大的区别,但使用上非常相似。
GitHub主页:
https://github.com/facebook/pop
14、Infer:静态代码分析工具
Infer是Facebook的开发团队在代码提交内部评审时,用来执行增量分析的一款静态分析工具,在代码提交到代码库或者部署到用户的设备之前找出bug。由OCaml语言编写的Infer目前能检测出空指针访问、资源泄露以及内存泄露,可对C、Java或Objective-C代码进行检测。
Facebook使用Infer自动验证iOS和安卓上的移动应用的代码,bug报告的正确率达80%。Infer通过捕获编译命令,把要被编译的文件转换为可用于分析潜在错误的中间语言格式。整个过程是增量进行的,意味着通常只有那些有修改过并提交编译的文件才会被Infer分析。Infer还集成了大量的构建或编译工具,包括Gradle、Maven、Buck、Xcodebuild、clang、make和javac。
GitHub主页:
https://github.com/facebook/infer
15、osquery:操作系统监控工具
osquery是一款面向OSX和Linux的操作系统检测框架。它将操作系统暴露为一个高性能的关系型数据库,允许用户编写SQL查询查看操作系统数据。在osquery中,SQL表代表像下面这样的抽象概念:
正在运行的进程
已加载的内核模块
打开的网络连接
GitHub主页:
https://github.com/facebook/osquery
16、Flow:JavaScript静态类型检查工具
Flow是Facebook出品的一个JavaScript代码的静态类型检查工具,该工具采用开放源码的OCaml(Objective Caml)语言开发,。Flow能够帮助开发人员查找出JavaScript代码中的类型错误,从而提高开发效率和代码质量。Flow已经能够捕获JavaScript代码中的常见问题,如静态类型转换不匹配、空指针引用等问题。同时,Flow还为JavaScript新增了类型语法,如类型别名。
GitHub主页:
https://github.com/facebook/flow
17、Flux:Web应用架构
Flux是一个Facebook开发的、利用单向数据流实现的应用架构,用于 React。Flux应用有三个主要的部分组成:调度程序、存储和视图(React 组件)。
GitHub主页:
https://github.com/facebook/flux
18、Stetho:Android调试工具
Stetho是一个Android应用的调试工具。当Android应用集成Stetho时,开发者可以通过访问Chrome,在Chrome Developer Tools中查看应用布局、网络请求、sqlite、preference等等,可视化一切应用操作(更重要的是不用root)。开发者也可通过它的dumpapp工具提供的命令行接口来访问应用内部。
GitHub主页:
https://github.com/facebook/stetho
VMware开源软件
1、Cloud Foundry:开源PaaS平台
Cloud Foundry是VMware于2011年4月12日推出的业界第一个开源PaaS云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发 人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。
同时,它本身是一个基于Ruby on Rails的由多个相对独立的子系统通过消息机制组成的分布式系统,使平台在各层级都可水平扩展,既能在大型数据中心里运行,也能运行在一台桌面电脑中, 二者使用相同的代码库。
作为新一代云应用平台,Cloud Foundry专为私有云计算环境、企业级数据中心和公有云服务提供商所打造。Cloud Foundry云平台可以简化现代应用程序的开发、交付和运行过程,在面对多种公有云和私有云选择、符合业界标准的高效开发框架以及应用基础设施服务时, 可以显著提高开发者在云环境中部署和运行应用程序的能力。
Cloud Foundry为开发者构建了具有足够选择性的PaaS云平台,它同时支持多种开发框架、编程语言、应用服务以及多种云部署环境的灵活选择
详情:https://www.oschina.net/p/cloud+foundry
2、ESXi:虚拟化系统
ESXi (VMware vSphere Hypervisor)专为运行虚拟机、最大限度降低配置要求和简化部署而设计。只需几分钟时间,客户便可完成从安装到运行虚拟机的全过程,特别是在下载并安装预配置虚拟设备的时候。在VMware Virtual Appliance Marketplace 上有800多款为VMware hypervisor 创建的虚拟设备,如今,ESXi已经实现了与Virtual Appliance Marketplace的直接整合,使用户能够即刻下载并运行虚拟设备。这为即插即用型软件的交付与安装提供了一种全新和极其简化的方式。
详情:https://www.oschina.net/p/esxi
3、Harbor:企业级 Registry 服务器
Harbor 包括了权限管理(RBAC)、LDAP、审计、管理界面、自我注册、HA 等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能,欢迎使用和反馈意见。
作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。Harbor 支持安装在多个 Registry 节点的镜像资源复制,镜像全部保存在私有 Registry 中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor 也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。
详情:https://www.oschina.net/p/harbor
4、VMware View Open Client:虚拟桌面环境
VMware View Open Clien 是 VMware 以 LGPL V2.1 许可发布了一个开源的 Linux VDI(virtual desktop infrastructure)客户端。主要用于访问由 VMware View 所管理的个性化虚拟桌面环境。目前 VMware View Open Clien 提供下列功能:
支持使用 SSL 创建安全隧道
支持利用 RSA SecurID 进行双重认证
提供Novell SLETC Add-On RPM 包
全命令行界面
详情:https://www.oschina.net/p/vmware_view_open_client
5、Photon Controller:集群管理系统
Photon Controller 是开源的硬件,容器和集群管理系统。是一套分布式、API 驱动型多租户控制平台,旨在最大程度提升扩展能力与容器承载量,且能够根据开发者的实际需要支持 Docker Swarm、Cloud Foundry、Kubernetes 以及 Mesos 等多种相关方案。
详情:https://www.oschina.net/p/photon-controller
6、Serengeti:Hadoop部署管理和扩展
支持企业能够在虚拟和云环境中快速部署、管理和扩展Apache Hadoop。此外,VMware与Apache Hadoop社区共同合作研发扩展功能,让主要组件可以“感知虚拟化”以支持灵活扩展,并进一步提高Hadoop在虚拟化环境中的性能。
Serengeti基于Apache 2.0许可证。它是一键式部署工具包,支持企业能够利用VMware vSphere平台在几分钟内部署高度可用的Apache Hadoop集群,包括Apache Pig和Apache Hive等常见的Hadoop组件。通过使用Serengeti在VMware vSphere上运行Hadoop,企业可以轻松享受到值得信赖、广泛部署的全球虚拟化平台的高可用性、容错性和现场迁移能力,从而实现Hadoop集群的可用性和可管理性。
详情:https://www.oschina.net/p/serengeti
GitHub地址:
https://github.com/vmware-serengeti
eBay开源软件
1、Apache Griffin:开源数据质量解决方案
Apache Griffin是一个应用于分布式数据系统中的开源数据质量解决方案。在Hadoop, Spark, Storm等分布式系统中,提供了一整套统一的流程来定义和检测数据集的质量并及时报告问题。
Apache Griffin填补了开源世界里在大数据质量领域的空白。就像空气质量,水和食品安全等无时不刻地在影响人类的生命一样,数据质量在数据科学领域是至关重要的。在大数据时代,企业决策调整,商机发现等越来越依赖于大数据的数据分析和数据挖掘,而数据质量的保证是所有一切数据分析和数据挖掘的基础。
详情:https://www.oschina.net/p/griffin
2、Turmeric:开源SOA平台
Turmeric是eBay公司开发的SOA开源平台。这个平台拥有一个完整的安全措施驱动的保安系统,它基于Java,遵守WSDL, SOAP, XML, JSON, XACML, REST等主要标准,支持各种协议和数据格式的可插拔,可用于SOA的服务端以及应用端的开发、部署、安全保护、运行和监控。平台提供了Eclipse 插件,辅助SOASOA的服务端以及应用端程序的开发。当前发布的版本是1.0.0 GA,包括eBay公司内部使用的类似平台的大部分组件,只是将其中依赖于商业产品的一些功能去除,并代之以开源的等价实现。
详情:https://www.oschina.net/p/turmeric
3、REST Superman:Web服务器监控和管理
REST Superman 已改名REST Commander是 eBay 开发的一个使用快速并行的异步 HTTP/REST/SOAP 客户端开发的服务用来监控和管理10000台 Web 服务器,可在 10 秒内发送请求到 1000 台服务器,或者 50 秒内发送请求到 10000 台服务器。
详情:https://www.oschina.net/p/restsuperman
GitHub地址:
https://github.com/eBay/restcommander
4、Apache Eagle:Hadoop 数据安全方案
Apache Eagle提供一套高效分布式的流式策略引擎,具有高实时、可伸缩、易扩展、交互友好等特点,同时集成机器学习对用户行为建立Profile以实现实时智能实时地保护Hadoop生态系统中大数据的安全。
Eagle 是开源分布式实时Hadoop数据安全方案,支持数据行为实时监控,能立即监测出对敏感数据的访问或恶意的操作,并立即采取应对的措施。Eagle具有如下特点:高实时、可伸缩、简单易用、用户Profile。
详情:https://www.oschina.net/p/apache-eagle
5、Parallec:HTTP/SSH/TCP/Ping并行客户端
Parallec是一个基于Akka的快速并行异步HTTP(S)/SSH/TCP/UDP/Ping 客户端的Java库。它是eBay云计算部门开发并在REST Superman基础上开源的。
详情:https://www.oschina.net/p/parallec
GitHub地址:
https://github.com/eBay/parallec
6、fabio:HTTP(S) 路由器
fabio 由 eBay Classifieds Group 开发, 用于处理 marktplaats.nl 和 kijiji.it 的流量。Marktplaats 所有的流量都经过 fabio ,每秒有数千个请求,分发于数个 fabio 实例。但我们并没有观察到任何延迟。
详情:https://www.oschina.net/p/fabio
GitHub地址:
https://github.com/fabiolb/fabio
7、Ebay Pulsar:实时大数据分析平台
Pulsar 作为一个复杂事件处理平台,具有快速,准确,灵活的特性,保证点到点的低延时和高可靠,从而很好得满足了的eBay秒级实时数据分析的需求。同时每秒百万级流量处理能力,给客户带来更好的个性化体验,帮助客户监控实时业务信息并定制实时营销策路,及时监测网络欺诈行为并减少机器人干预。并且Pulsar是基于标准的分布式云架构部署并跨越多个数据中心,从而保证了在系统升级和拓扑更新时没有集群停机时间。
详情:https://www.oschina.net/p/ebay-pulsar
Twitter开源软件
1、Typeahead.js:jQuery插件,快速、全功能的自动完成库
Typeahead.js是Twitter的一个jQuery插件,支持远程和本地的数据集。比较有特色的地方在于,你可以将数据集使用本地存储(local storage)来保存在本地,有效的提高用户体验。同时也拥有很多远程数据集的处理选项,例如请求频率,最大的并发请求数,等等。
GitHub主页:
https://github.com/twitter/typeahead.js
2、Twemoji:JavaScript库
Twemoji是Twitter于2014年开源的完整的Emoji表情图片,Twemoji包含872个表情,兼容最新的Unicode 7.0。Emoji,来自日本的小巧符号,通过图像表达感情,已经征服了移动互联网的信息世界。现在,你可以在虚拟世界中随处使用它们。开发者可以去GitHub下载完整的表情库,并把这些表情加入到自己的应用或网页中。
GitHub主页:
https://github.com/twitter/twemoji
3、Hogan.js:JavaScript模板引擎
Hogan.js是Twitter团队所制作的一个针对mustache模板的语法解析器。Hogan.js不依赖其他任何库或框架,同时保证了高效率的模板解析,而其体积却仅有2.5K。用它作为你的一部分资产打包编译模板提前或将它包括在你的浏览器来处理动态模板。
GitHub主页:
http://twitter.github.com/hogan.js
4、Finagle:RPC框架
Finagle是一个允许开发者使用Java、Scala或其他JVM语言来构建异步RPC服务器和客户端的库,主要用于Twitter的后端服务。Finagle是Twitter基于Netty开发的支持容错的、协议无关的RPC框架,该框架支撑了Twitter的核心服务。
Twitter面向服务的架构是由一个庞大的Ruby on Rails应用转化而来的。为了适应这种架构的变化,需要有一个高性能的、支持容错的、协议无关且异步的RPC框架。在面向服务的架构之中,服务会将大多数的时间花费在等待上游服务的响应上,因此使用异步的库能够让服务并发地处理请求,从而充分发挥硬件的潜能。Finagle构建在Netty之上,并不是直接在原生NIO之上构建的,这是因为Netty已经解决了许多Twitter所遇到的问题并提供了干净整洁的API。
GitHub主页:
https://github.com/twitter/finagle
5、Diffy:自动化测试工具
Diffy是一个开源的自动化测试工具,它能够自动检测基于Apache Thrift或者基于HTTP的服务。使用Diffy,只需要进行简单的配置,之后不需要再编写测试代码。
Diffy主要基于稳定版本和它的副本的输出,对候选版本的输出进行比较,以检查候选版本是否正确。因此,Diffy首先假设候选版本应该和稳定版本有“相似”的输出。即不论候选版本和稳定版本系统模块是否相同,他们的最终输出应该是“相似”的。这里一直使用“相似”,而不是使用相同,是因为相同请求可能会有一些Diffy不需要关心的干扰。
GitHub主页:
https://github.com/twitter/diffy
6、Scalding:Scala库
Scalding是一个Scala库,简化了Hadoop MapReduce作业开发,基于Cascading构建。Scalding跟Pig类似,但提供更紧密的Scala集成。Scalding是用于Cascading的Scala API。Cascading是一个构建于Hadoop上的API,用来创建复杂和容错数据处理工作流,它抽象了集群拓扑结构和配置,允许开发者快速开发复杂分布式的应用,而不用考虑背后的MapReduce。
GitHub主页:
https://github.com/twitter/scalding
7、Heron:数据实时分析平台
在Twitter,Heron作为主要的流媒体系统,运行数以百万计的开发和生产topologies。由于Heron可高效使用资源,在迁移Twitter所有的topologies后,整体硬件减少了3倍,导致Twitter的基础设置效率有了显著的提升。
GitHub主页:
https://github.com/twitter/heron
8、SecureHeaders:Web安全开发工具
SecureHeaders是Twitter送给Web开发者的一份大礼,作为一款Web安全开发工具,Secureheaders能够自动实施安全相关的header规则,包括内容安全政策(CSP),防止XSS、HSTS等攻击,防止火绵羊(Firesheep)攻击以及XFO点击劫持等。
GitHub主页:
https://github.com/twitter/secureheaders
9、Twemproxy:代理服务器
Twemproxy是一个快速的单线程代理程序,支持Memcached ASCII协议和更新的Redis协议。它全部用C写成,使用Apache 2.0 License授权。Twemproxy的强大之处在于可以通过配置的方式让它禁用掉失败的结点,同时还能在一段时间后进行重试,抑或使用指定的键->服务器映射。这意味着在将Redis用作数据存储时,它可以对Redis数据集进行分片(禁用掉结点驱逐);在将Redis用作缓存时,它可以启用结点驱逐以实现简单的高可用性。
GitHub主页:
https://github.com/twitter/twemproxy
10、Bootstrap:Web 前端 UI 框架
Bootstrap 是快速开发 Web 应用程序的前端工具包。它是一个 CSS,HTML 和 JS 的集合,它使用了最新的浏览器技术,给你的 Web 开发提供了时尚的版式,表单,buttons,表格,网格系统等等。
GitHub地址:
https://github.com/twbs/bootstrap
从Twitter的GitHub账户中可以看到,Twitter已经开源的开源项目有近200个,领域涉及分布式架构、大数据、异步网络传输(客户端、服务端)、Web、工具等,本文列举常用到的项目。
写给读者
越来越多的公司正走向开源,编程语言、操作系统、框架、平台、数据库等方方面面开源软件也越来越多,这些开源项目为我们的工作带来很多方便,可以直接“拿来”解决技术问题,不用重复造轮子,提高效率的同时也极大地降低了研发成本。
除了软件可以开源之外,研发实践也可以开源共享,第六届TOP100全球软件案例研究峰会将于11月9-12日在北京国家会议中心举办,甄选100个本年度最具行业代表性的软件研发案例,现场解读其解决方案和背后的技术逻辑,帮助研发团队快速提高效能。
更多TOP100案例信息及日程请前往[官网]查阅。4天时间集中分享2017年最值得学习的100个研发案例实践。本平台共送出10张开幕式单天免费体验票,登录TOP100summit官网即可申请,数量有限,先到先得。