标签 开源 下的文章

开源软件让谷歌可以快速而有效地构建系统而不用重复造轮子,可以让我们专注于解决新问题。我们站在巨人的肩膀上,因此我们熟谙这一切。这就是为什么我们支持开源,而且让谷歌人可以轻松地将他们内部开发的项目以开源方式发布的原因。

今天,我们发布了我们的第一个开源成绩单,展示我们最流行的项目、分享一些数据,并介绍一些我们在 2016 年发布的项目细节。

迄今为止,我们已经开源了超过 2 千万行的代码,你可以在我们的网站上找到我们最知名的项目的列表,下面是其中的一些:

  • Android - 用于移动设备的软件族,包括操作系统、中间件和关键性应用。
  • Chromium - 它包括 Google Chrome 浏览器背后的 Chromium 软件和 Google Chrome OS 设备背后的 Chromium OS 软件。
  • Angular - 一个 JavaScript 和 Dart 的 web 应用框架,关注于开发者的生产力、开发速度和测试能力。
  • TensorFlow - 一个使用 数据流图 data flow graphics 的数字计算库,支持从数据中心到嵌入式设备的跨平台的大规模机器学习。
  • Go - 一种静态类型的编译型编程语言,富有表现力、简洁而高效。
  • Kubernetes - 一个可以自动分发、操作和缩放的容器化应用系统。
  • Polymer - 一个构建于 Web 组件 API 之上的轻量级库,用于构建在 Web 应用中可重用的封装元素。
  • Protobuf - 一个可扩展的、语言无关和平台无关的串行化结构数据的机制。
  • Guava - 一套 Java 核心库,包括新的集合类型(比如 multimap 和 multiset)、 不可变集合 immutable collections 、知识图谱库、 函数类型 functional types 、内存缓存,以及并发 API/功能、I/O、哈希、 基类型 primitives 、反射、字符串处理等等。
  • Yeoman - 一个强壮而自足的框架工具集,它包括可以帮助开发者快速构建优美而引人入胜的 Web 应用的库和工作流。

统计谷歌开源的全部软件有点困难,不过我们可以从开源到 GitHub 上这部分软件获取一些有趣数据。现在谷歌在 GitHub 上已经有了 84 个组织和 3499 个项目仓库,而今年就创建了 773 个仓库!

谷歌人使用了从汇编到 XSLT 等等不计其数的各种编程语言,但是哪一个才是我们的最爱?GitHub 可以帮我们找到在这些软件仓库中我们使用最多的编程语言:

  1. JavaScript
  2. Java
  3. C/C++
  4. Go
  5. Python
  6. TypeScript
  7. Dart
  8. PHP
  9. Objective-C
  10. C#

我们可以通过 BigQuery 来了解各种 GitHub 开源数据,比如空格和制表符的使用对比最流行的 Go 语言软件包等等。谷歌人在 GitHub 上的开源项目提交了多少次?我们可以通过搜索 Google.com 的邮件地址来知道谷歌人的最低限度的提交量,比如使用这样的查询:

SELECT count(*) as n
FROM [bigquery-public-data:github_repos.commits]
WHERE committer.date > '2016-01-01 00:00'
AND REGEXP_EXTRACT(author.email, r'.*@(.*)') = 'google.com'

用上面的查询,我们发现从今年开始,谷歌人在 GitHub 上的开源项目做了 142,527 次提交。这个数据集始于 2011 年,如果从那时开始统计,那么提交次数是 719,012。不过,这只是最低限度的数据,因为我们没有统计谷歌人使用其它邮件地址的提交。

让我们来看看 2016 年有哪些令人激动的地方。我们发布了开源软件硬件数据集,今年发布的有这些:

Seesaw

Seesaw 是一个基于 Linux 虚拟服务器(LVS)的负载平衡平台,是由我们的 SRE 工程师用 Go 语言开发的。就像其它的项目一样,它也是为了解决我们切身之痒而产生的。

在我们发布它的公告中提到:“我们需要有为 单播 unicast 选播 anycast VIP 控制流量的能力,也需要对 NAT 和 DSR(也叫 DR)进行负载平衡,以及针对后端进行足够的健康检查。所有这些我们需要一个可以让我们轻松地管理的平台,包括自动分发改变的配置。”

供应商安全评估调查表 Vendor Security Assessment Questionnaire (VSAQ)

每年我们需要评估几百个供应商的安全情况,并且我们开发了一个流程来通过 VSAQ 自动化许多初始信息的收集。许多供应商发现我们的评估表直观而灵活,所以我们决定把它分享出来。VSAQ 框架包括可扩展的调查表模版,覆盖了 Web 应用、隐私程序、基础架构以及物理和数据中心安全。你可以在我们的发布公告中了解更多信息。

OpenThread

OpenThread 是由 Nest 发布的一个 Thread 协议的完整实现,用于家庭连接设备。它非常重要,这是由于这个领域如我们所见是非常碎片化的。OpenThread 的开发得到了 ARM、微软、高通、德州仪器等主要厂商的支持。

Magenta

我们可以使用机器学习来创建吸引人的艺术和音乐吗?这个问题的答案就是动画 Magenta,这个项目来自于谷歌大脑团队,基于 TensorFlow。它有助于推动机器智能在音乐和艺术创作中的发展,并为艺术家、程序员和机器学习研究人员构建了一个协作社区。阅读它的发布公告了解更多信息。

Omnitone

虚拟现实(VR)如果没有 空域音频 spatial audio 还做不到身临其境,而许多的 VR 开发都是在专有平台上进行的。 Omnitone 是一个由 Chrome 团队成员构建的开源库,它可以给该浏览器带来 空域音频 spatial audio 。Omnitone 基于标准的 Web 音频 API 构建,可以提供具有现场感的体验,也被用于类似 WebVR 这样的伴生项目。阅读该项目的发布公告了解更多信息。

科学日报 Science Journal

当今的智能电话带有许多传感器,可以告诉我们周围很多有趣的信息。我们启动科学日报项目,以帮助教育工作者、学生和科学爱好者们利用这些传感器。更多信息可以参阅我们的发布公告

Cartographer

Cartographer 是一个以 2D 和 3D 方式即时定位与地图构建(SLAM)的库,支持 机器人操作系统 Robot Operating System (ROS)。它合并了多种传感器的数据,这个库可以计算位置和地图表面。这是自动驾驶汽车、UAV 和机器人的关键因素,并在室内地图方面做了很多努力。关于 Cartographer 的更多信息可以参阅其发布公告

这只是我们今年发布的一小部分例子,请继续关注谷歌开源博客,为谷歌的开源软件、硬件和数据而欢呼吧。

如果你在开源项目中花费了很多时间的话,你可能会看到使用的术语 “copyleft”(GNU 官方网站上的释义:中文英文)。虽然这个术语使用比较普遍,但是很多人却不理解它。软件许可是一个至少不亚于文件编辑器和打包格式的激烈辩论的主题。专家们对 copyleft 的理解可能会充斥在好多书中,但是这篇文章可以作为你理解 copyleft 启蒙之路的起点。

什么是 copyright?

在我们可以理解 copyleft 之前,我们必须先介绍一下 copyright 的概念。copyleft 并不是一个脱离于 copyright 的法律框架,copyleft 存在于 copyright 规则中。那么,什么是 copyright?

它的准确定义随着司法权的不同而不同,但是其本质就是:作品的作者对于作品的 复制 copying (因此这个术语称之为 “copyright”:copy 's right)、表现等有一定的垄断性。在美国,其宪法明确地阐述了美国国会的任务就是制定版权法律来“促进科学和实用艺术的进步”。

不同于以往,版权会立刻附加到作品上——而且不需要注册。默认情况下,所有的权力都是保留的。也就是说,没有经过作者的允许,没有人可以重新出版、表现或者修改作品。这种“允许”就是一种许可,可能还会附加有一定的条件。

如果希望得到对于 copyright 更彻底的介绍,Coursera 上的教育工作者和图书管理员的著作权是一个非常优秀的课程。

什么是 copyleft?

先不要着急,在我们讨论 copyleft 是什么之前,还有一步。首先,让我们解释一下 开源 open source 意味着什么。所有的开源许可协议,按照 开源倡议的定义 Open Source Inititative's definition (规定),除其他形式外,必须以源码的形式发放。获得开源软件的任何人都有权利查看并修改源码。

copyleft 许可和所谓的 “ 自由 permissive ” 许可不同的地方在于,其衍生的作品中,也需要相同的 copyleft 许可。我倾向于通过这种方式来区分两者不同: 自由 permissive 许可向直接下游的开发者提供了最大的自由(包括能够在闭源项目中使用开源代码的权力),而 copyleft 许可则向最终用户提供最大的自由。

GNU 项目为 copyleft 提供了这个简单的定义(中文英文):“ 规则就是当重新分发该程序时,你不可以添加限制来否认其他人对于[自由软件]的自由。 the rule that when redistributing the program, you cannot add restrictions to deny other people the central freedoms [of free software]. ”这可以被认为权威的定义,因为 GNU 通用许可证 GNU General Public License,GPL 的各种版本的依然是最广泛使用的 copyleft 许可。

软件中的 copyleft

GPL 家族是最出名的 copyleft 许可,但是它们并不是唯一的。 Mozilla 公共许可协议 Mozilla Public License,MPL Eclipse 公共许可协议 Eclipse Public License,EPL 也很出名。很多其它的 copyleft 许可 也有较少的采用。

就像之前章节介绍的那样,一个 copyleft 许可意味着下游的项目不可以在软件的使用上添加额外的限制。这最好用一个例子来说明。如果我写了一个名为 MyCoolProgram 的程序,并且使用 copyleft 许可来发布,你将有使用和修改它的自由。你可以发布你修改后的版本,但是你必须让你的用户拥有我给你的同样的自由。(但)如果我使用 “ 自由 permissive ” 许可,你将可以将它自由地合并到一个不提供源码的闭源软件中。

对于我的 MyCoolProgram 程序,和你必须能做什么同样重要的是你必须不能做什么。你不必用和我完全一样的许可协议,只要它们相互兼容就行(但一般的为了简单起见,下游的项目也使用相同的许可)。你不必向我贡献出你的修改,但是你这么做的话,通常被认为一个很好的形式,尤其是这些修改是 bug 修复的话。

非软件中的 copyleft

虽然,copyleft 的概念起始于软件世界,但是它也存在于之外的世界。“做你想做的,只要你保留其他人也有做同样的事的权力”的概念是应用于文字创作、视觉艺术等方面的知识共享署名许可(中文英文)的一个显著的特点(CC BY-SA 4.0 是贡献于 Opensource.com 默认的许可,也是很多开源网站,包括 Linux.cn 在内所采用的内容许可协议)。GNU 自由文档许可证是另一个非软件协议中 copyleft 的例子。在非软件中使用软件协议通常不被建议。

我是否需要选择一种 copyleft 许可?

关于项目应该使用哪一种许可,可以用(已经有了)成篇累牍的文章在阐述。我的建议是首先将许可列表缩小,以满足你的哲学信条和项目目标。GitHub 的 choosealicense.com 是一种查找满足你的需求的许可协议的好方法。tl;drLegal 使用平实的语言来解释了许多常见和不常见的软件许可。而且也要考虑你的项目所在的生态系统,围绕一种特定语言和技术的项目经常使用相同或者相似的许可。如果你希望你的项目可以运行的更出色,你可能需要确保你选择的许可是兼容的。

关于更多 copyleft 的信息,请查看 copyleft 指南

(题图来自:behance.net


via: https://opensource.com/resources/what-is-copyleft

作者:Ben Cotton 译者:yangmingming 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

先说下 OpenOffice。可能你已经无数次地看到说 Apache OpenOffice 即将结束。上一个稳定版本是 4.1.2 (发布于 2015 年 10 月),而最近的一个严重安全漏洞用了一个月才打上补丁。编码人员的缺乏使得开发如爬行前进一般。然后,可能是最糟糕的消息了:这个项目建议用户切换到 MS Office(或 LibreOffice)。

丧钟为谁而鸣?丧钟为你而鸣,OpenOffice。

我想说些可能会惹恼一些人的话。你准备好了吗?

OpenOffice 的终止对开源和用户来说都将是件好事。

让我解释一下。

一个分支统治所有

当 LibreOffice 从 OpenOffice 分支出来后,我们看到了另一个情况:分支不只在原始基础上进行改进,而且大幅超越了它。LibreOffice 一举成功。所有之前预装 OpenOffice 的 Linux 发行版都迁移到了这个新项目。LibreOffice 从起跑线突然冲出,并迅速迈出了一大步。更新以极快的速度发布,改善内容丰富而重要。

不久后,OpenOffice 就被开源社区丢在了脑后。当 2011 年 Oracle 决定终止这个项目并把代码捐赠给 Apache 项目时,这种情况自然更加恶化了。从此 OpenOffice 艰难前进,然后把我们就看到了现在这种局面:一个生机勃勃的 LibreOffice 和一个艰难的、缓慢的 OpenOffice。

但我认为在这个相当昏暗的隧道末尾有一丝曙光。

合并他们

这听起来可能很疯狂,但我认为是时候把 LibreOffice 和 OpenOffice 合二为一了。是的,我知道很可能有政治考虑和自尊意识,但我认为合并成一个会更好。合并的好处很多。我首先能想到的是:

  • 把 MS Office 过滤器整合起来:OpenOffice 在更好地导入某些 MS Office 文件上功能很强(而众所周知 LibreOffice 正在改进,但时好时坏)
  • LibreOffice 有更多开发者:尽管 OpenOffice 的开发者数量不多,但也无疑会增加到合并后的项目。
  • 结束混乱:很多用户以为 OpenOffice 和 LibreOffice 是同一个东西。有些甚至不知道 LibreOffice 存在。这将终结那些混乱。
  • 合并他们的用户量:OpenOffice 和 LibreOffice 各自拥有大量用户。联合后,他们将是个巨大的力量。

宝贵机遇

OpenOffice 的终止实际上会成为整个开源办公套件行业的一个宝贵机遇。为什么?我想表明有些东西我认为已经需要很久了。如果 OpenOffice 和 LibreOffice 集中他们的力量,比较他们的代码并合并,他们之后就可以做一些更必要的改进工作,不仅是整体的内部工作,也包括界面。

我们得面对现实,LibreOffice 和(相关的) OpenOffice 的用户界面都是过时的。当我安装 LibreOffice 5.2.1.2 时,工具栏绝对是个灾难(见下图)。

LibreOffice 默认工具栏显示

尽管我支持和关心(并且日常使用)LibreOffice,但事实已经再清楚不过了,界面需要完全重写。我们正在使用的是 90 年代末/ 2000 年初的复古界面,它必须得改变了。当新用户第一次打开 LibreOffice 时,他们会被淹没在大量按钮、图标和工具栏中。Ubuntu Unity 的平视显示(Head up Display,简称 HUD)帮助解决了这个问题,但那并不适用于其它桌面和发行版。当然,有经验的用户知道在哪里找什么(甚至定制工具栏以满足特殊的需要),但对新用户或普通用户,那种界面是个噩梦。现在是做出改变的一个好时机。引入 OpenOffice 最后残留的开发者并让他们加入到改善界面的战斗中。借助于整合 OpenOffice 额外的导入过滤器和现代化的界面,LibreOffice 终能在家庭和办公桌面上都引起一些轰动。

这会真的发生吗?

这需要发生。但是会发生吗?我不知道。但即使掌权者决定用户界面并不需要重组(这会是个失误),合并 OpenOffice 仍是前进的一大步。合并两者将带来开发的更专注,更好的推广,公众更少的困惑。

我知道这可能看起来有悖于开源的核心精神,但合并 LibreOffice 和 OpenOffice 将能联合两者的力量,而且可能会摆脱弱点。

在我看来,这是双赢的。


via: http://www.techrepublic.com/article/its-time-to-make-libreoffice-and-openoffice-one-again/

作者:Jack Wallen 译者:bianjp 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

GitHub 又发布了一年一度的章鱼猫观察报告。在这个报告中,分别对开源和社区做了一些有趣的统计,现将其中一些有趣的数据和趋势撷取出来分享给大家。完整的报告请移步此处

GitHub 上最流行的开源项目

让阿波罗 11 号登月的代码开源课程,过去十二个月中,GitHub 上又涌现了一大批开源项目。以下是最流行的(得到星标最多)项目:

最流行的开源项目

其中使用最多的开源许可证是:MITApache-2.0GNU General Public License v3.0

GitHub 上最爱用的编程语言

GitHub 上存放的开源项目使用了多达 316 种不同的编程语言,其中在过去十二月中提交的 PR( 拉取请求 Pull Request ,用于向项目提交补丁) 使用最多的前 15 种编程语言是(其中的数字是 PR 数量):

PR 中最流行的 15 种语言

PR 中最流行的语言居然是 JavaScript,是因为 JavaScript 比较容易么?而且 JavaScript、C# 和 Go 语言的 PR 增长率达到了两倍,甚至,Swift 和 TypeScript 虽然总量不多,但是增长率达到了 3.5 倍。

贡献者的活跃程度

活跃 Active ”是指有过代码提交、写了备注、被星标和 问题汇报 issue 等行为。

这十二个月以来,有 580 万以上的活跃用户、33 万以上的活跃组织、1.9 亿以上的活跃仓库、1 千万以上的活跃问题汇报。

贡献者 contributors ”是指对项目/仓库推送了代码、对打开或评论了问题和 PR 的人,按照贡献者对项目和组织进行排名:

开源贡献者最多的前十个仓库

其中贡献者最多的仓库是 Font-Awesome 项目,这是一个图标字体的项目,不太理解为何有这么多的贡献者。其次是 dockernpm

开源贡献者最多的组织

开源贡献者最多的组织是微软,超过了 Facebook、docker,以及谷歌。看来微软这一年确实是在开源方面下了死力。

被最多分支的仓库

仓库被 分支 fork 的越多代表了对它感兴趣、甚至会参与到开发中的人越多。这个排名第一的 datasharing 是个啥项目,我去看看——居然是一篇文章……好吧,让我看看第二个 Spoon-Knife,这,是章鱼猫的一个教人如何分支仓库的例子……那么第三个 ProgrammingAssignment2 ,哎,也是一个课程上用的例子……

好吧,我收回之前对分支的看法,就不能有个“正常”点的仓库嘛?

还好,第四 bootstrap 和第五 tensorflow 都是比较正常的开源项目。总之,项目流行不流行,不要看分支数量了。

被最多用户评审过代码的仓库

这里的 代码评审者 reviewers 指的是对修改过的代码进行过评论的人,这也代表贡献者对仓库的关注度。好吧。我除了对第一名 homebrew 有点不解,其它的几名都觉得还算正常。

GitHub 的新增用户

GitHub 已经有超过 520 万的用户和超 30 万的组织。这十二月以来,有超过 81 万的人发起了人生第一个 PR,更有 280 万人创造了他自己的第一个仓库。

新用户注册增长最多的国家

而中国,是新用户注册增长最多的国家,基本上翻了一番。

GitHub 上的组织

GitHub 上已经有超过 8 千万的 PR,而这些 PR 中有超过 85% 的来自于组织。在 GitHub 上以组织形式活动的除了商业性组织以外,很多大公司也在其企业的开发中采用了 GitHub Enterprise ,其中不乏财富50强里面公司。

总结

报告就解读到这里,详细的图文并茂的报告,请移步 GitHub

谷歌是开源领域领先的贡献者之一,但是这个搜索巨头不是所有的开源许可证都喜欢。

来自多伦多的报道:Marc Merlin 从 2002 年起就在谷歌担任工程师,至今已经做了许多开源和 Linux 相关的工作。在本周召开的 LinuxCon 北美峰会上,Merlin 发表了演讲,为大家揭示了谷歌是如何使用开源和为开源做贡献的。

“没有开源软件就没有今天的谷歌”,Merlin 说。

Merlin 讲到,谷歌早期回馈到开源社区的资源有限,谷歌的第一代软件全都是写给内部用的,最初并不是为开源而设计的。他接着补充说,事实上开源并不是一件简单的事。也就是说,谷歌早期的软件最初并没有准备开源,不过谷歌发表了技术性论文描述了使用的方法和代码,以便其他人也可以用同样的原理来实现。

google open source

Marc Merlin at LinuxCon North America

在各种开源技术领域,谷歌早期的贡献主要是错误修复。

“我们通常是第一个发现并修复那些只在我们这个量级出现的错误的”,Merlin 说。

到现在,Merlin 说谷歌已经为 Linux 内核贡献了超过 5000 个补丁,补丁涵盖了从小的修复到完整的驱动程序和类似容器这样的子系统。

随着谷歌在开源领域的努力,现在已经在 GitHub 上发布了超过 3000 个开源项目。为了以法律的角度来管理整个过程,Merlin 说谷歌有六个人专门在内部从事使用和发布开源软件的合规管理。

为了保证法律上的一致性,谷歌将所有外部的开源代码存储在一个第三方体系内。Merlin 补充说,谷歌只允许使用谷歌能够遵循的许可证的开源软件。其中一个不能接受的许可证是 AGPL (Affero General Public License),它是一个互惠的许可证,要求使用该代码需提供一个到源代码的链接。

“确保我们没有在任何对外的产品中使用 AGPL 代码的代价太高,相较而言,不如找一个限制性更少的替代品或我们自己写一个”,Merlin 说。

对于那些贡献给谷歌项目的代码,谷歌要求开发者接受一个 贡献者许可协议 Contributor License Agreement (CLA),该 CLA 主要是让谷歌可以对贡献的代码重新颁发许可证,并为谷歌提供代码的专利授权。

“你仍然拥有你的代码,你只是授予谷歌一个许可而已”,Merlin 说。

“微软爱 Linux”,这是微软高管们在几个场合都宣称过的事情,微软公司也正不断将之付诸实施,对一些重要的软件进行了开源和维持更新。这家软件巨头正在不断地贴近开源世界。

而这种举动的最近一个动向是关于 PowerShell 的,它是微软的一种强大的基于任务的命令行外壳和脚本语言,使用于 Windows。而现在,微软宣布开源了 PowerShell,并支持 Linux 和 Mac OS X,这意味着它变成了跨平台的了。

该公司称这样将可以使 Windows 和 Linux 团队不再“各行其是,而是更容易彼此协作”,这是开源 PowerShell 的一个主要原因。

“我们以开源 PowerShell 的一小部分开始,并与一些在开源方面有经验、了解该如何做开源的合作伙伴们进行了沟通,”微软说,“我们发现 PowerShell 很适合开源,因为原来的 PowerShell 团队成员大多都具有深厚的 Unix 背景。”

在 Linux 上,目前 PowerShell 已经可以用在 Ubuntu、 CentOS 和 RedHat 上了,其 Alpha 版已经可从 GitHub 上下载了。

微软越来越爱 Linux 了

曾经有段时间,微软称 Linux 是“癌症”,但是随着时光流逝,现在微软已经认识到了开源世界的不断增长,除了在这个领域加大投入之外别无选择。

微软已经启动了几个开源项目,希望能吸引一些 Linux 用户,其中一个新的 Skype 版本就是建立在社区反馈之上的。该公司也试着将这种模式应用到 Windows 10 之中,它的许多面世的产品中的部分功能就是基于用户反馈进行开发和改进的。

Linux 世界已经越来越大了,微软从其中看到了成长的机会。微软披露说, 其 Azure 云上面有 1/3 的虚拟机是 Linux,而 Azure 云市场中的第三方 IaaS 有 60% 包括了开源软件。