文|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) 的库。该库综合来自各个传感器的数据来计算位置和地图周边环境信息。这是自动驾驶汽车、无人驾驶汽车和机器人的关键要素,也是知名建筑物室内地图工作的一部分。
稿源:谷歌开发者