除了 Android, Google 还有哪些开源项目?

1,662 阅读7分钟

文|Google 开放源代码计划办公室 Josh Simmons

开放源代码软件帮助 Google 快速而高效地开发软件,而无需从零开始,这样,我们可以专注于解决新问题。我们深知:我们站在巨人的肩膀上。正因如此,我们支持开放源代码并让 Google 员工能够以开放源代码的形式轻松发布公司内部正在开发的项目。
今天,我们分享了我们的第一张开放源代码报告卡,其中重点介绍了我们最受欢迎的项目,分享了我们在 2016 年发布的部分项目的一些统计数据和详细情况。

迄今为止,我们已经开放了超过 2000 万行的源代码,您可以在我们的网站上找到我们部分最为人熟知的项目发布列表:

developers.google.com/open-source/projects

以下是我们最为人熟知的一些项目:

  • Android – 适用于移动设备的一整套软件,包括操作系统、中间件和关键应用。

  • Chromium – 此项目包含 Chromium(Google Chrome 背后的软件)和 Chromium OS(Google Chrome 操作系统设备背后的软件)。

  • Angular – 一个适用于 JavaScript 和 Dart 的网络应用框架,注重开发者效率、速度和可测试性。

  • TensorFlow – 一个使用数据流图形进行数字计算的库,其支持可扩展的跨平台机器学习,从数据中心到嵌入式设备,均可适用。

  • Go – 一种静态设置类型和编译的编程语言,其特点是表达清晰、简洁、干净、高效。

  • Kubernetes – 一个用于自动化部署、操作和调整容器化应用的系统。

  • Polymer – 一个基于 Web Components API 构建的轻量级库,用于构建网络应用中可重用的封装元素。

  • Protobuf – 一种用于序列化结构化数据的机制,其特点是可扩展且独立于语言和平台。
  • Guava – 一组 Java 核心库,其包含新的集合类型(例如 multimap 和 multiset)、不可变集合、图形库、函数类型、内存缓存以及用于处理并发运算、I/O、散列、原语、反射和字符串等的 API/实用工具。
  • Yeoman – 一组可靠而极具特色的基础工具,其包括各种库和一个工作流,能够帮助开发者快速构建美观而具有吸引力的网络应用。

尽管很难衡量 Google 内部开放源代码的全部范围,但我们可以使用 GitHub 上列出的部分项目来收集一些有趣的数据。如今,我们在 GitHub 上的影响力巨大,共有 84 个组织加入,总共创建了 3499 个存储区,其中 773 个都是今年创建的。

Google 员工使用的语言五花八门,从 Assembly 到 XSLT,那么哪些语言是他们的最爱呢?GitHub 上标注了某个存储区中使用量最大的语言,我们可以据此找到答案。

Google 员工最常用的语言如下:

  • JavaScript
  • Java
  • C/C++
  • Go
  • Python
  • TypeScript
  • Dart
  • PHP
  • Objective-C
  • C#

许多数据都可使用 BigQuery 上的开放源代码 GitHub 数据集收集,例如标签和空间的使用量对比以及最热门的 Go 程序包。如何分析 Google 员工在 GitHub 上提交开放源代码项目的次数呢?我们可以搜索 Google.com 电子邮件地址来获得 Google 员工的保守提交次数。以下是我们的查询:

通过这种方法,我们了解到:自今年年初以来,Google 员工在 GitHub 上总共提交了 142527 次开放源代码项目。此数据集可以回溯到 2011 年,我们可以调整此查询,发现自那时以来,Google 员工总共提交了 719012 次。需要再次说明的是,这只是一个保守数字,因为它并没有计入以其他电子邮件地址进行的提交。

回顾我们在 2016 年开放源代码的项目,我们发现有许多令人兴奋的成果。我们发布了开放源代码软件硬件数据集。了解一下今年发布的部分应用。

Seesaw

Seesaw 是一个由我们的网站可靠性工程师使用 Go 开发的基于 Linux 虚拟服务器 (LVS) 的负载平衡平台。与许多项目一样,Seesaw 只是我们自己的兴趣而已。
以下内容摘自此项目的发布公告:“我们需要能够处理单播和任播 VIP 的通信,利用 NAT 和 DSR(也称为 DR)执行负载平衡,并对后端执行充分的运行状况检查。最重要的是,我们需要一个平台让我们能够轻松管理,包括自动化部署配置变更。”

供应商安全性评估调查问卷 (VSAQ)

我们每年都会评估成百上千的供应商的安全性,我们制定了一套流程,可以通过 VSAQ 自动化收集大部分初步信息。许多供应商发现我们的调查问卷直观、灵活,因此,我们决定分享这些调查问卷。VSAQ 框架包括四个可扩展的调查问卷模板,涵盖网络应用、隐私计划、基础架构以及物理安全性和数据中心安全性。在我们的公告博文中,您可以了解更多详情。

OpenThread

由 Nest 发布的 OpenThread 是对 Thread 协议的完整实现,该协议适用于家中的互联设备。我们目前在此领域看到的都是零零散散的信息,因此这一实现尤其重要。OpenThread 的开发得到 ARM、Microsoft、Qualcomm、Texas Instruments 和其他大型供应商的支持。

Magenta

我们可以使用机器学习来创造令人心动的艺术和音乐吗?这正是赋予 Magenta 生命力的问题,该项目由 Google Brain 团队基于 TensorFlow 构建而成。其目标是:将机器智能的发展水平推进到音乐和艺术时代,组建一个由艺术家、程序员和机器学习研究人员组成的合作社区。如需了解详细信息,请阅读发布公告

Omnitone

没有空间音频,虚拟现实 (VR) 就无法实现真正的沉浸式体验,而 VR 开发的许多工作都是在专用平台上进行的。Omnitone 是一个由 Chrome 团队成员构建的开放库,该库将空间音频带入浏览器。Omnitone 基于标准的 Web Audio API 构建而成,旨在提供沉浸式体验,可随 WebVR 之类的项目一起使用。如遇了解详细信息,请参考此项目的发布公告博文

Science Journal

如今,智能手机都集成了传感器,可以告诉我们有关周围世界的有趣信息。我们启动了 Science Journal 项目,旨在帮助教师、学生和普通科研人员充分利用这些传感器。在我们的公告博文中,您可以了解有关此项目的更多详情。
Cartographer

Cartographer 是一个依靠 Robot Operating System (ROS) 的支持,以 2D 和 3D 模式实时同步定位和制图 (SLAM) 的库。该库综合来自各个传感器的数据来计算位置和地图周边环境信息。这是自动驾驶汽车、无人驾驶汽车和机器人的关键要素,也是知名建筑物室内地图工作的一部分。有关 Cartographer 的更多详情,可在我们的发布公告博文中找到。
以上只是从我们今年发布的项目中抽取了一小部分示例。关注 Google 开放源代码博客或“谷歌开发者”公众号,及时了解 Google 的开放源代码软件、硬件和数据发布。