为什么要发布开源项目?一是开源能够帮助他人更快地开发软件,促进世界创新,主要是社会价值层面的考虑。二是开源能够倒逼工程师写出更好的代码。三是开源能够更有效利用社区的力量,帮助企业一起解决难题。开源,让世界更美好,不是吗?
写在前面
Google,亚马逊,微软,和阿里巴巴都是体量最大的几个互联网公司,也都是作为云厂商的几个大玩家。 在这几家技术公司的合力推动之下,云计算的时代真正来到了我们身边。优秀的技术公司不会缺少自己的技术思考,这些思考有些深藏在云端,我们难以窥见,但不少也会凝结成开源软件这种最能体现互联网技术创新的人类文明成果,推动整个行业的进步。
下面就让我们一起观察这几家公司的重点开源项目,来尝试一探行业未来的风向。如果下文列出的开源项目代码仓库托管在 Github 平台,本文还会列出该项目的 Github Star 数,这是评判一个开源项目受关注程度的最好指标。
Google 重点开源软件列表
Google 长期一来一直是开源软件的重要推动力量,自己也靠着开源软件形成的生态维护着国外搜索引擎市场的王者地位。虽然 Google 开源从去年底陆续传出停止支持 ntpd;新开源首页效果酷炫但不友好等一些负面消息,但以其多年的耕耘,Google 在开源世界的地位,其他公司一时还仍然难以撼动。
- 开源移动操作系统 Android
世界最流行的操作系统,市场占有量甚至超过了 Windows。 成功很大程度来源 Android 操作系统相比竞争对手采用了开源的策略,使得手机制造商能够大量生产基于 Android 操作系统的手机。
- 项目地址:https://source.android.com
- 开源浏览器 Chromium
大多数人都听过 Google 旗下的浏览器 Chrome ,但少有人知道 Chromium。 事实上 Chromium 是 Chrome 的开源版本,几乎所有的浏览器新特性都会首先出现在 Chromium 上再逐步往 Chrome“下放”。由于 Chromium 的开源属性,几乎所有的国产浏览器里都有着 Chromium 的开源代码。 Google 凭借着 Chromium 的开源,一举颠覆了 IE 在浏览器市场的统治地位.
- 项目地址: https://www.chromium.org/
- AI 和机器学习 TensorFlow
TensorFlow 是 Google 开源的用于机器学习库。用于构建和训练神经网络,编写 AI 程序。去年横扫人类围棋高手的 Google AI 程序,就是基于 TensorFlow 编写的。TensorFlow 可以运行在 CPU,也可以运行在 GPU 之上。
- 开源编程语言 Go
发布于 2007 年的编程语言。Go 尝试成为一种在保留住灵活性和性能的同时最大程度去处 C 系编程语言复杂度的新系统语言。虽然社区里一直有对 Go 特性不足的抱怨,但创始人坚决认为这对保持这一语言的成功是必不可少的。 Go 语言目前主要运用于服务器编程领域。
- 前端框架 AngularJS
AngularJS 是一个用来编写单页 Web 应用的前端框架。虽然 AngularJS 的目标是简化 Web 应用的开发过程,但其自身引入的众多概念带来的复杂性也受不少诟病。
- 分布式计算 Protocol Buffers
用于不同进程和服务器之间进行数据通信的数据序列化工具。服务器上不同的程序能通过 Protocol Buffers 来进行通信和分工协作。相比 XML 和 JSON,Protocal Buffers 有着更高的性能,但你也不再能仅凭文本编辑器就查看到自己的数据。
- 开源编程语言 Dart
另一个由 Google 支持的开源编程语言。Dart 着力于 Web 应用,移动 App 和物联网设备。和 Go 不同,Dart 不是一种编译型语言。它和 Python 或 Java 一样运行在自己的虚拟机之上,但也能转换成 JavaScript 放入浏览器中运行。
- 操作系统 Fuchsia OS
神秘的全新开源操作系统,和之前的 Android 不同,Fuchsia OS 没有基于 Linux 内核,而是另起炉灶打造里一套更能被 Google 控制的操作系统内核. Google 是准备打造 IOT(物联网) 领域的新 Android,还是仅仅是个试验项目,现在还不得而知。
微软重点开源软件列表
微软,老牌软件巨人。历史上长时期被看成开源世界最大的敌对势力, 微软也曾经把开源旗帜项目 Linux 称呼为 “毒瘤”。时光飞逝,转眼十多年过去,原本一出帝国和起义军对立的经典故事在 Web 和移动互联网两波技术大潮的洗礼下如今已经面目全非。 Linux 成了世界上使用最广泛的操作系统,开源技术成了技术发展的主流。 可帝国也没有陨落,传统强项企业服务成功往云端转移,凭借 Azure 业务又在公有云计算领域获得高速增长。 曾经口中的 “毒瘤”,如今成了爱的对象,更是成了核心产品 Windows10 的组成部分。 如此可见微软对开源的态度发生了多大的变化。
- 开源 IDE Visual Studio Code
集成开发环境 (IDE) 是微软的一个传统强项,虽然和 Windows 专属版本比起来仍然有一些不足。 但可以支持从 Linux 到 Mac,Windows 的 Visual Studio Code 仍然由于其轻量可扩展的特性获得了社区的追捧。
- 开源 JavaScript 扩展 TypeScript
微软的开源 JavaScript 扩展,为 JavaScript 添加了类型支持。如果你在开发必须使用 JavaScript 的 Web 应用而又觉得类型系统不可获取,TypeScript 非常值得尝试。
- .Net 开源核心类库,运行环境和编译器
微软的.Net 开发环境和 C# 语言在编程语言领域一直被认为是功能最为强大和全面的开发平台之一,但长期以来一直只能工作在 Windows 环境下,极大限制了.Net 在更广大的领域施展身手。随着近年来微软的转型,微软终于下决心对.Net 进行了全面的开源。如今.Net 的核心类库,运行环境和编译器都已经开源,如今整套.Net 环境都可以在 Linux,Mac 下运行。不知这迟来的开源能否挽回开发者的心呢?
- 开源 JavaScript 解释器 ChakraCore
微软开源的 JavaScript 执行环境。自从 Chrome 横空出时,微软的 IE 就一直被看成是个低效,笨拙的浏览器,这让微软自己都无法忍受。随着 Windows10 一起面世的 Edge 浏览器是微软的洗心革面之作,运行效率得到了极大的提升,多项测试中执行效率甚至超过了 Chrome。 ChakaraCore,作为 Edge 浏览器的 JavaScript 解释器,是其中的秘密武器。在 ChkraCore 开源后,原本就火热的 JavaScript 后端开发领域或许会迎来新的推动力。
- 开源 Linux 环境 BashOnWindows
以过去微软的视角来看最不可能出现的开源软件。 BashOnWindows 不仅仅能让 Bash 脚本在 Windows 上像在 Linux 环境下一样运行,它甚至带有一个完整的 Ubuntu 环境,绝大多数原来只能在 Linux 下运行的开源程序现在可以通过 BashOnWindows 在 Windows 下运行。
亚马逊重点开源软件列表
亚马逊是国外最大的电商公司,它同时也是国外最大的公有云计算公司之一。AWS 目前统治者国外云计算领域最大的市场份额。但相比前文提到的另外两家国外科技巨头和云计算行业竞争者,亚马逊在开源方面显得较为保守。为社区作出的贡献相比自己的体量显得甚为微小。
- 开源深度学习工具 DDSTNE
DDSTNE 是亚马逊推荐系统中使用的深度学习工具,为多 GPU 节点和松散数据结构进行了专门优化.
- 开源数据存储格式 Amazon Ion
亚马逊开源的数据存储格式,同时支持便于查看的文本格式和便于高效存储和传输的二进制格式。提供了 C,Java,Python 语言的支持。
阿里巴巴重点开源软件列表
阿里巴巴是国内最大的互联网公司之一,也是国内最大的云计算公司。由于其天生的平台基因,不光进入云计算市场的时间和目前的市场份额在国内遥遥领先甚至全球范围内相比也不输国外巨头,根据最新第三方市场报告,阿里云目前已占中国云计算市场份额 50%。在开源软件领域,阿里巴巴把自己多项核心技术成果以开源软件的形式提供了出来,近年来还频繁参与国际开源社区的发展。我们甚至惊喜的发现阿里巴巴近期开始了对因 Google 退场而陷入困境的 NTPD 项目/NTF 基金会的支持。
- 开源移动 UI 层框架 Weex
开源的移动端高性能动态化,跨平台 UI 框架。 Weex 的出现解决了困扰移动开发领域长期以来的一份设计,多次重复开发的问题,使得开发者能够通过一次代码编写即可为 Androdi,IOS,H5 生成美观高性能的界面。
由于 Weex 已经捐赠到了 Apache 基金会孵化,所以代码主仓库已经迁移到了 Apache 组织下。
- 开源 React 组件库 Ant Design
阿里在 React 技术栈基础上开源的全功能通用组件库,沉淀了大量交互设计最佳实践。 如果你以 React 的方式开发你的前端应用 Ant Design 不容错过。Ant Design 最近还提供了移动版 Ant Design Mobile ,同样风格的组件库现在可平顺的过度到移动 Web 环境。
- 开源 JSON 解析和生成器 FastJSON
FastJSON 是一个超高性能的 JSON 解析和生成器,在对外零依赖的情况下实现了对多种常用数据结构到 JSON 的解析和生成。评测数据长期以来一直在同类工具间遥遥领先。对 JSON 的处理是众多服务端程序最频繁执行的任务,启用 FastJSON 或许能让你的后端应用获得不小的性能提升。
- 开源分布式开发框架 Dubbo
高性能服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入,可以和 Spring 框架无缝集成。 是阿里大规模分布式系统的秘密武器。
- 开源 Android 平台容器化开发框架 Atlas
随着移动应用规模的增长,大型移动应用,特别是平台级应用往往由团队协同开发。如何实现不同功能模块的组件化、解耦化,同时还具备动态性是 Android 应用开发的一个核心挑战。Atlas 在遵循安卓系统设计规范的情况下,通过反射和轻量的 hook 方案来实现了这一目标,并将大量的工作放到了编译期,提高了稳定性。
- 开源消息队列 RocketMQ
企业级互联网架构的核心产品,基于高可用分布式集群技术,搭建了包括发布订阅、消息轨迹、资源统计、定时(延时)、监控报警等一套完整的消息队列服务。
- 开源 Android 构建工具 Freeline
Freeline 是一个 Android 平台上的构建工具,构建速度是其最大特点。它可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并部署到设备上,有效地减少了日常开发中的大量重新编译与安装的耗时。
- 开源 MySQL 数据库分枝 AliSQL
AliSQL 是基于广泛使用的数据库产品 MySQL 的一个开源分支,在 MySQL 社区版的基础上做了大量的性能与功能的优化改进。尤其适合电商、云计算以及金融等行业环境。最新的 AliSQL 版本不仅从其他开源分支比如:Percona,MariaDB,WebScaleSQL 等社区汲取精华,也沉淀了阿里巴巴多年在 MySQL 领域的经验和解决方案。
写在最后
通过梳理 Google,微软,亚马逊和阿里巴巴这几家全球领先的云计算公司的开源项目情况和社区关注度。我们可以看出不少有趣的现象,比如大数据,AI 和移动开发领域,汇聚了大公司体现技术实力的开源技术成果和社区的密切关注,必定是当前和未来技术发展的热点。Google 和微软等国外一线公司继续在编程语言和操作系统等底层技术层面耕耘,而中国以阿里巴巴为代表的一流技术公司已经开始在框架,平台,数据库等中间层发力推动着整个行业的技术进步并取得了不输国外公司的成绩。在云计算这样比拼技术的行业,或许通过观察开源项目发展情况一探究竟,更能让我们获取一些枯燥市场份额数据之外的行业认知。