分类 观点 下的文章

可能很多同学注意到了,我们的公众号文章前一段时间悄悄的变化了一些版式,最明显的就说各级标题从原来的渐变色条状变成了如今的样式:居中,无底色,以图标做分隔。喏,就是这样的:

这是一个示例的一级标题哈

这里可能有细心的同学会发现,这个图标是会动的,而且是一个“俄罗斯方块”游戏。是的,其实这个图标的原型来自于我之前给 Linux 中国设计的新徽标——当时还举办过徽标征集大赛,只是后来大家都觉得老的徽标更适应,所以没有更换。

不过我个人是挺喜欢这个样式的,所以这里就将它引入进来做标题图标了。

最初是将一个静态的 PNG 图片放到这里的,大家可以注意到开始有几天的公众号文章里面是用的静态的图标;然后几天后,我突然有了一些童心,觉得既然是模仿“俄罗斯方块”游戏的风格,为什么不能动起来呢?

说实在的,老王我是真没有动画基础,哦不,连美工基础都没有。虽然我能用一些软件拼凑出一些简单的洋葱头动画,但是要做到比较复杂和较多的帧数,那么动画 GIF 文件就会比较大。

正好我还会一点点 AI,于是用 AI 重新绘制了这个图标,并导出了 SVG 文件——我知道,这是纯文本的。然后我就可以用我心爱的文本编辑器(你猜是什么编辑器)打开直接修改代码了。

用编辑器打开后,啊哦,这里的数字都很不精确啊——不,很精确啊,都保留了小数点后好多位呢。有点强迫症的我给它们归并到一个比较舒服的整数和倍数上。

然后,怎么动起来呢?没学过,只能现去网上学习 SVG 动画的指令,一边看着别人做的极炫的动画流口水,一边反复地试错。

终于,能自己动了。但是又发现,这动画真是一帧一个状态啊,怎么计算呢?这个时候感觉自己的脑力不够了,于是就找张纸开始画分镜头图,反反复复地画了好几张。这是最终定稿的一张,就这也经过了大量涂改。

然后,最终的 SVG 代码大概是这样的:

虽然我还想加入一些更有趣的变化,比如旋转方向什么的,但是会搞得太复杂了。总之,这是老王第一次做 SVG 动画,肯定有很多浅陋之处,贻笑大方了。

最后,说一句,分镜头真的很痛苦,要一个个数据计算,一个数据错了,后面全错了。

顺便,这个 SVG 文件可以在这里下载: https://linux.cn/static/image/common/linux-logo-2019-t.svg

Linux 与 Windows 10 相比的一个优势是它更安全,但是 Linux 系统并不是绝对可靠的, 美国国家标准技术研究院 National Institute of Standards and Technology (NIST)的 国家漏洞数据库 National Vulnerability Database (NVD)的最新数据似乎证实了这一点。

Windows 中的安全缺陷更少

根据其数据,在 1999 - 2019 年期间,Debian Linux 是所有操作系统中带有安全漏洞最多的一个。在此期间,在 Debian Linux 中报告了 3067 个漏洞,在 Ubuntu 中报告了 2007 个漏洞。另一方面,Windows 7 受到了 1283 个漏洞的困扰,在 Windows 10 中才发现了 1111 个漏洞。

从历史上看,Windows 并不是为安全而设计的,但是从 Windows XP 开始微软更加重视 Windows 的安全性,在 Windows XP 中就包括了各种安全功能和强大的防火墙。为了应对日益增长的安全性问题,微软还开始给 Windows 更新更多的安全性和隐私功能,但是 Windows 的一个主要目标仍然是为大多数个人和商用计算机提供了动力。

另外,对于更早的 Windows 7 而言这个数字实际上要低于 Windows 10。例如,在 2019 年,Windows 7 中发现了 250 个安全缺陷,而 Windows 10 中发现了 357 个安全缺陷。

重要的是要知道,计算机上的许多漏洞都是由硬件组件(例如芯片组和驱动程序)引起的,而不是由操作系统本身引起的。 许多 Windows 漏洞都是针对企业的,因此,某些漏洞可能不会对最终用户造成不良影响。

不过,值得注意的是,Debian Linux 表示其社区通常会在几天内修复该漏洞。另一方面,Windows 用户有时必须等待一个月。

整体微软产品线安全缺陷最多

但是回溯这整整 20 年来看,这些数据所描述的景象更加完整。在查看整个公司的产品时,微软产品的安全缺陷比任何其他公司都要多。自 1999 年以来,微软产品总共发现了 6814 个漏洞。以下是前 5 名:

  1. 微软:6814 个安全缺陷
  2. 甲骨文:6115 个安全缺陷
  3. IBM:4679 个安全缺陷
  4. 谷歌:4572 个安全缺陷
  5. 苹果:4512 个安全缺陷

Android 的安全缺陷数量持续霸榜

近年来,在所有技术产品中,安全缺陷数量逐年保持稳定高位的是谷歌的 Android 操作系统。根据该数据报告,Android 在 2019 年、2017 年和 2016 年是所有操作系统中安全缺陷最多的一个。只有在 2018 年,Android 才从冠军席位上临时掉下来一次,当年 Debian GNU/Linux 的安全缺陷更多。在 2019 年,Android 凭借着 414 个安全缺陷位居榜首,而 Debian Linux 以 360 个安全缺陷“夺得”亚军,而 Windows 10/Windows Server 2016&2019 以 357 个安全缺陷“屈居”季军。

以下是历年来安全缺陷最多的产品:

也许最令人担忧的趋势是,随着操作系统和其他软件产品变得越来越复杂,漏洞在最近 20 年中才有所增加。1999 年,仅报告了 894 个技术漏洞。而在 2019 年报告了 12174 个技术漏洞,增长了 14 倍以上。

不过,对此数据的解读,Android 发言人发表了以下声明:

“我们致力于提高透明度,并每月发布有关 Android 中已解决的问题的公共安全公告,以加强生态系统的安全性。我们不同意这样的观点,即衡量操作系统中已解决的安全问题的数量来表示平台的安全性。这实际上是 Android 生态系统按预期工作的开放性的结果。”

Ref:softpedia.comfastcompany.comwindowslatest.com

这些主意都用到了有关的开源技巧。

人们可以做些什么来拯救地球?这个问题可能会让人感到压抑,因为有时我们感觉个人可以做的贡献太少了。但是作为地球公民,我们从来不是一个人。所以,我向我们的作家社区征集了一些开源软件或硬件可以帮助改变现状的方法。以下是他们的回复。

九种利用开源的方法来拯救地球的方式

1、在你的终端禁用闪烁的光标

这听起来可能有点傻,但是那个无关紧要的闪烁的光标可能导致每小时两瓦特的额外电力开销。如果要禁用光标闪烁,可以通过更改终端设置: 编辑 Edit > 偏好设置 Preferences > 光标 Cursor > 光标闪烁 Cursor blinking > 禁用 Disabled

由 Mars Toktonaliev 推荐

2、减少有关动物产品和加工食物的消费

这样做的一种方法是在你的手机中添加这些开源的 App:Daily Dozen、OpenFoodFacts、OpenVegeMap 和 Food Restrictions。这些 App 可以帮助你准备一份健康的素食饮食计划,为你找到素食主义者和严格素食主义者可以就餐的餐厅,还可以帮助你把你的饮食需求告诉别人,即使他们不和你讲同一种语言。如果想要了解更多有关这些的 App 的信息,你可以阅读《4 款“吃草”的开源应用》。

由 Joshua Allen Holm 推荐

3、让旧电脑重焕新生

怎么做?当然是用 Linux。通过给那些自己得不到新电脑的人创造一台新电脑来传递爱心,同时也可以避免让这台电脑进到垃圾填埋场。可以在 The Asian Penguins 看看我们是怎么做的。

由 Stu Keroff 推荐

4、在你不使用设备时关闭它们

你可以使用带有主插座和控制插座的“智能插座板”。把你的电脑连接到主插座上,这样的话当你打开电脑时所有你连接到控制插座上的设备如显示器,打印机等也都会打开。一个更简单的、技术含量更低的方法是使用一个带有计时器的插座板。我在家里就是用的这个。你可以用计时器上的开关设定一个定时开关电源的时间表。这样可以在没有人在家时自动关闭网络打印机。或者以我的用了六年的笔记本电脑为例,我通过一个交替使用外接电源(插座打开)和使用电脑电池(插座关闭)的电源计划延长了电脑电池的寿命。

由 Jim Hall 推荐

5、减少供暖通风系统(HVAC)的使用

在夏天,透过窗户的阳光可以为室内提供很多热量。使用 Home Assistant 可以基于一天中的时间的,甚至是基于太阳高度角自动调节窗帘和遮阳棚。

由 Michael Hrivnak 推荐

6、出门就把恒温器关闭或调低

如果你的家用恒温器具有“离开”功能,你很容易忘记在出门时启用它。借助自动化,任何连接到网络的恒温器都可以在你不在家时自动节省能量。Stataway 就是一个这样项目。它通过调用你的手机的 GPS 坐标来决定是将你的恒温器设置为“在家”还是“离开”。

由 Michael Hrivnak 推荐

7、为未来储蓄算力

我有一个主意:创建一个可以读取可选的能量阵列(如风能或太阳能)的输出的脚本。这个脚本应该将计算集群中的服务器从睡眠模式更改为激活模式,直到过量的电能(超出可以储存的部分)被用尽。然后在高产能时段使用这些过量的电能来进行需要大量计算的项目,比如渲染。这个过程本质应该是免费的,因为使用的能量无法被储存起来挪作它用。我相信现有的监控、能量管理和服务器阵列工具一定可以实现这个功能。那么剩下的只是一些整合上的问题,就可以让整个系统工作起来。

由 Terry Hancock 推荐

8、关掉你的灯

根据 人工夜空亮度图集 World Atlas of Artificial Night Sky Brightness 的说法,光污染影响了全世界超过 80% 的人口。这一结论在 2016 年(遵循 CC-NC 4.0 协议)发表在公开访问的期刊《 科学进展 Science Advances 》上。关闭外部照明是一个可以使野生生物、人类健康受益并让我们享受夜晚的天空的快速途径,而且可以减少能量消耗。访问 darksky.org 来查看更多减少外部照明影响的方法。

由 Michael Hrivnak 推荐

9、减少你的 CPU 数量

就我个人而言,我记得我以前有很多在地下室运行的电脑作为我的 IT 游乐场/实验室。我现在对于能源消耗更加注意了,所以确实大大地减少了我的 CPU 数量。我现在更喜欢利用虚拟机、区域和容器等技术。另外,我很高兴有小型电脑和 SoC 电脑这种东西,比如树莓派,因为我可以用一台这样的电脑做很多事情,比如运行一个 DNS 或者 Web 服务器,而无需使整个屋子变热并积累昂贵的电费账单。

P.S. 这些电脑都运行于 Linux、FreeBSD,或者 Raspbian 系统!

由 Alan Formy-Duvall 推荐


via: https://opensource.com/article/19/4/save-planet

作者:Jen Wike Huger 选题:lujun9972 译者:MFGJT 校对:wxy

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

谷歌字体和开放字体库中的免费 Web 字体已经改变了游戏规则,但仅在有限的范围内。

毫无疑问,近些年来互联网的面貌已经被开源字体所改变。早在 2010 年之前,你在 Web 浏览器上几乎只能看到微软制作的通常“Web 安全”的核心字体。但这一年(2010)正好是好几轮技术革新开始的见证之年: Web 开放字体格式 Web Open Font Format (WOFF)的引入为通过 HTTP 有效地传输字体文件提供了一个开放的标准,以及像谷歌字体 开放字体库 Open Font Library 这样的 Web 字体服务的推出,使得 Web 内容发布者可以在开源许可证之下免费使用海量的字体库。

这些事件对 Web 排版的积极影响再夸大都不过分。但是要将 Web 开放字体的成功与整个开源排版等同起来,并得到结论——挑战已经远离了我们,困难悉数被解决了——却很容易。然而事实并非如此,如果你很关注字体,那么好消息是你有好多机会参与到对这些字体的改进工作当中去。

对新手来说,至关重要的是必须要意识到谷歌字体和开放字体库提供了专用的服务(为网页提供字体),而没有为其他使用情况制定字体解决方案。这不是服务方面的缺点,这只是意味着我们必须去开发其它的解决方案。

需要解决的问题还非常多。可能最明显的例子就是给 Linux 桌面计算机的其他软件安装字体所遇到的尴尬情况。你可以通过任何一种服务下载任何一种 Web 字体,但是你得到的只是一个最普通的压缩包文件,里面有一些 TTF 或 OTF 二进制文件和一个普通文本文件的许可证。接下来会发生什么完完全全需要你去猜。

大部分用户很快学会了“正确”的步骤就是手动地复制这些字体二进制文件到他们硬盘里几个特殊文件夹里的某一个里。但是这样做只能使这个文件对操作系统可见。它并不能为用户体验带来什么提升。再强调一遍,这不是 Web 字体服务的缺陷,相反它佐证了对于关于服务到哪里停止和需要在其他方面做更多工作的观点。

在用户视角来说,一个巨大的提升可能就是在“只是下载”这个阶段,操作系统或者桌面环境变得更智能。系统或桌面环境不仅会把字体文件安装到正确的位置上,更重要的是,当用户选择要在一个项目中使用的字体时,它会自己添加用户所需要的重要的元数据。

这些附加信息包含的内容与它如何呈现给用户与另一个挑战有关:与其它操作系统相比,在 Linux 环境管理一个字体库显然不那么令人满意。字体管理器总是时不时的出现一下(例如 GTK+ 字体管理器,这是最近的一个例子),但是它们很少变得流行起来。我一直在思考一大堆这些软件让人失望的方面。一个核心的原因是它们把自己局限于只展示内嵌在二进制字体文件内的信息:基本字符集的覆盖、粗细/宽度和斜率的设定,内置的许可证和版权说明等等。

但是除了这些内嵌数据中的内容,在选择字体的过程中还涉及很多决策。严肃的字体用户,像信息设计者、杂志文章作者,或者书籍美工设计者,他们的字体选择是根据每一份文件的要求和需求做出的。这当然包含了许可证信息,但它还包含了更多,像关于设计师和厂商的信息、潮流风格的趋势,或者字体在使用中的细节。

举个例子,如果你的文档包含了英语和阿拉伯文,你多半想要拉丁文和阿拉伯文的字体由同时熟悉这两种 字母系统 script 的设计师所设计。否则,你将浪费一大堆时间来微调字体大小和行间距来使两种字母系统良好地结合在一起。你可能从经验中学到,某些设计师或字体厂商比其他人更善于多种字母系统设计。或许和你职业相关的是今天的时尚杂志几乎无一例外的采用 “Didone)”风格的字体,“Didone)”是指一种两百多年前最先被 Firmin DidotGiambattista Bodoni 设计出来的超高反差的字体风格。这种字体恰好就是现在的潮流。

但是像 Didone、Didot 或 Bodoni 这些术语都不可能会出现在二进制文件的内置数据当中,你也不容易判断拉丁文和阿拉伯文是否相得益彰或其它关于字体的历史背景。这些信息有可能出现在补充的材料中,类似某种字形样本或字体文件中,如果这些东西存在的话。

字形样本 specimen 是一份设计好的文档(一般是 PDF),它展示了这种字体的使用情况,而且包括了背景信息。字形样本经常在挑选字体时充当市场营销和外观样例的双重角色。一份精心设计的样本展示了字体在实际应用中的情况和在自动生成的字符表中所不能体现的风格。字形样本文件也有可能包含了一些其他重要信息,比如怎样激活字体的 OpenType 特性、提供的数学表达式或古体字,或者它在支持的多种语言上的风格变化。在字体管理应用程序中向用户提供此类材料,对于帮助用户找到适合其项目需求的字体将大有帮助。

当然,如果我们希望一个字体管理软件能够处理文件和样本问题,我们也必须仔细观察一下各种发行版提供的字体包所随附的内容。Linux 的用户刚开始只有自动安装的那几种字体,并且发行版存储库提供的包是大部分用户除了下载通用的压缩包档案之外的唯一字体来源。这些包往往非常的“简陋”。商业字体总的来说都包含了样本、文档,还有其他的支持项目,然而开源字体往往没有这些配套文件。

也有一些优秀的开放字体提供了高质量的样本和文档(例如 SIL GentiumBungee 是两种差异明显但是都有效的方案),但是它们几乎不涉足下游的打包工作链。我们显然可以做的更好一些。

要在系统的字体交互方面提供更丰富的用户体验上面还存在一些技术问题。一方面,AppStream 的元数据标准定义了一些字体文件特有的参数,但是到现在为止,这些参数没有包含样本、设计师/厂商和其他相关细节的任何信息。另外一个例子,SPDX 软件包数据交换 Software Package Data Exchange )格式也没有包含太多用于分发字体的软件许可证(及许可证变体)。

最后,就像任何一个唱片爱好者都会告诉你的,一个不允许你编辑和完善你的 MP3 曲库中的 ID3 信息的音乐播放器很快就会变得令人失望(LCTT 译注:ID3 信息是 MP3 文件头部的元信息,用于存储歌曲信息)。你想要处理标签里的错误、想要添加注释和专辑封面之类的信息,本质上,这就是完善你的音乐库。同样,你可能也想要让你的本地字体库也保持在一个方便使用的状态。

但是改动字体文件的内置数据一直有所忌讳,因为字体往往是被内置或附加到其他文件里的。如果你随意改变了字体二进制文件中的字段,然后将其与你的演示文稿一起重新分发,那么下载这些演示文稿的任何人最终都会得到错误的元数据,但这个错误不是他们自己造成的。所以任何一个要改善字体管理体验的人都要想明白如何从策略上解决对内置或外置的字体元数据的重复修改。

除了技术角度之外,丰富的字体管理经验也是一项设计挑战。就像我在前面说的一样,有几种开放字体也带了良好的样本和精心编写的文档。但是更多的字体包这两者都没有,还有大量的更老的字体包已经没有人维护了。这很可能意味着大部分开放字体包想要获得样本和证明文件的唯一办法就是让社区去创建它们。

也许这是一个很高的要求。但是开源设计社区现在比以往任何时候都要庞大,它是整个自由开源软件运动中的一个高度活跃的组成部分。所以谁知道呢,也许明年这个时候会发现,在 Linux 桌面系统查找、下载和使用字体会变成一种完全不同的体验。

在这一连串关于现代 Linux 用户的文字设计上的挑战的思考中包含了打包、文档设计,甚至有可能需要在桌面环境加入不少新的软件部分。此外还有其他一系列的东西也需要考虑。其共通性就是在 Web 字体服务不可及的地方,事情就会变得更加困难。

从我的视角来看,最好的消息是现在比起以前有更多的人对这个话题感兴趣。我认为我们要感谢像谷歌字体和开放字体库这样的 Web 字体服务巨头让开放字体得到了更高的关注。


via: https://opensource.com/article/18/3/webfonts

作者:Nathan Willis 译者:Fisherman110 校对:wxy

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

多年来(或数十年),人们抱怨不使用Linux 的原因之一是它缺乏主流游戏。Linux 上的游戏在最近几年有了显著改进,特别是 Steam Proton 项目的引入使你可以在 Linux 上玩很多 Windows 专用的游戏

这也鼓励了一些以游戏为中心的 Linux发行版。以 Lakka 为例,你可以借助 Lakka Linux 将旧计算机变成复古的街机游戏机

另一个以游戏为中心的 Linux 发行版是 Draguer OS,我们今天将对其进行研究。

Drauger OS

根据该项目的网站,“Drauger OS 是 Linux 桌面游戏操作系统。它旨在为游戏玩家提供一个平台,使他们可以在不牺牲安全性的情况下获得出色的性能。此外,它旨在使任何人都可以轻松玩游戏,无论他们使用键盘和鼠标还是某种控制器。”

他们强调 Drauger OS 并非供日常使用。因此,大多数其他发行版附带的许多生产力工具都不在 Drauger OS 中。

Drauger OS 7.4.1

Drauger OS 基于 Ubuntu 之上。当前版本(7.4.1 Jiangshi)使用 “Liquorix 低延迟Linux 内核,这是一种预编译的 ZEN 内核,设计时考虑了延迟和吞吐量之间的平衡”。但是,这将在下一版本中更改。他们只有一个桌面环境可供选择,即一个修改版本的 Xfce

Drauger OS 开箱即用地安装了多个应用程序和工具,以改善游戏体验。这些包括:

它还具有一组与游戏无关的有趣工具。Drauger 安装器是 .deb 安装程序,是 Gdebi 的替代品。多软件库应用安装器(mrai)是“用于基于 Debian 的 Linux 操作系统的类似于 AUR-helper 的脚本”。Mrai 旨在与 apt、snap、flatpaks 配合使用,并且可以从 GitHub 安装应用程序。

有趣的是,Drauger OS 的名称是一个错误。开发负责人 Thomas Castleman(即 batcastle)曾打算为其发行版命名为 Draugr,但是却打错了名字。在 Drauger OS 播客的第 23 集中,Castleman 说会保留这个拼写错误的名称,因为要对其进行更正需要大量工作。根据 Wikipedia 的描述,Draugr 是“来自北欧神话中的不死生物”。

是的,你没看错。Drauger OS 是仅有的几个具有自己的播客的发行版之一。当被问到这个问题时,Castleman 告诉我:“无论他们的情况如何,我都希望确保我们的社区拥有最大的透明度。”多数情况下,播客是 Drauger OS 博客的音频版本,但有时他们会在没有时间撰写博客文章时使用它来发布公告。

Drauger OS 的未来

Drauger OS

Druager OS 背后的开发人员正在开发其下一个主要版本:7.5.1。此版本将基于 Ubuntu 19.10。将有三个主要变化。首先,将使用“我们内部构建的内核” 替换 Liquorix 内核。该内核将基于 Linux 内核 GitHub 存储库,“因此,它会变得越来越原汁原味”。

新版本的第二个主要变化将是为其桌面提供新布局。根据用户的反馈,他们决定将其更改为看起来更类似于 GNOME 的样子。

第三,他们放弃了 SystemBack 作为其备份工具和安装程序。相反,他们从头开始编写了新的安装程序

开发团队也正在研究 Drauger OS 的 ARM 版本。他们希望在 2022 年的某个时候发布它。

系统要求

Drauger OS 系统要求非常适中。请记住,Drauger OS 仅在 64 位系统上运行。

最低系统要求

  • CPU:双核、1.8GHz、64 位处理器
  • RAM:1 GB
  • 储存空间:16 GB
  • 图形处理器:集成
  • 屏幕分辨率:60Hz 时为 1024×768
  • 外部端口:1 个用于显示的端口(HDMI/DisplayPort/VGA/DVI),2 个用于安装 USB 驱动器和键盘的 USB 端口(鼠标可选,但建议使用)

推荐系统要求

  • CPU:四核、2.2Ghz、64 位处理器
  • RAM:4 GB
  • 储存空间:128 GB
  • 图形处理器:NVIDIA GTX 1050、AMD RX 460 或同等显卡
  • 屏幕分辨率:60Hz 时为 1080p
  • 外部端口:1 个用于显示的端口(HDMI/DisplayPort/VGA/DVI),3 个用于安装 USB 驱动器、键盘和鼠标的 USB 端口,1 个音频输出端口

如何为Drauger OS提供帮助

如果你有兴趣,可以通过多种方法来帮助 Drauger OS。他们一直在寻找财政支持以保持发展。

如果你想贡献代码,他们正在寻找具有 BASH、C++ 和 Python 经验的人员。他们所有的代码都在 GitHub 上。你也可以在社交媒体上联系他们。

结语

Drauger OS 只是这类项目之一。我还见过其他面向游戏的发行版,但 Drauger OS 在专注于游戏方面一心一意。由于我更喜欢休闲游戏,因此该发行版对我个人而言并不具有吸引力。但是,我可以看到它如何吸引游戏爱好者使用 Linux。祝他们在以后的发行中好运。

你对这个仅限于游戏的发行版有何想法?你最喜欢的 Linux 游戏解决方案是什么?请在下面的评论中告诉我们。


via: https://itsfoss.com/drauger-os/

作者:John Paul 选题:lujun9972 译者:wxy 校对:wxy

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

对于让开源软件变得如此出色的协作开发来说,开源软件许可以其不同于常规软件许可的方式提供了诸多支持。

人们在使用常规软件许可时产生的实践和期望,也许会让他们在面对开源软件时感到沮丧。“请给我看下许可证”这种简单的要求,可能得不到令人满意的答复。尽管有的时候这种答复非常简单,但开源软件的许可信息通常更为复杂,达不到常规软件许可所设定的那种期望。

这是怎么回事儿呢?开源软件许可是否出毛病了?然而并没有。许可条款类型以及软件开发方式的差异,都会导致软件许可信息的传送方式不同。律师便利性和开发人员便利性之间的折衷是造成这种状况的部分原因。

如果只是说开源软件可以“协作”开发,那还没有弄清楚开源开发活动与常规许可软件之间可能存在的差别程度。尽管有像常规许可软件一样由一个人或一个固定的小团体来维护的开源项目,但是在开源项目上的协作可能会在广泛的潜在贡献者之间进行。例如,根据 GitHub 的“2019 年 Octoverse 报告” ,有超过 35 万人对前 1000 个项目做出了贡献。但是,开源软件开发与常规许可软件开发的不同之处不仅仅是贡献者数量。除了被发现对该开源项目拥有某些共同兴趣,为开源项目做出贡献的人们之间可能没有任何联系。人们的参与情况可能会随着时间的推移而变化。原始开发人员可能会离开,留下其他人继续进行项目开发。所有这一切都可能在没有规划或总体治理组织的情况下发生。

除了遵循规范性的治理规则,开源协作活动还是轻量级的,而且可以比常规许可软件更加灵敏地响应。有关开源许可信息的实践与这种协作开发方式相适应。

  1. 针对二进制文件以及源代码,开源许可中的条款通过提供所需的权限(包括复制、修改和分发)促进了协作开发。事实证明, “开源定义” Open Source Definition (OSD)有助于将注意力集中在满足其要求的许可上。
  2. 开源软件的许可信息嵌入在源代码中。当获得源代码时,就会接收到相应的许可信息。想象一下每年以百万计的贡献规模,单独的许可管理是否完全可行呢?同样,通过将许可信息嵌入源代码中,可以反映与许可相关的详细信息,而这些细节在某些单独管理的许可流程中不可行。例如,将许可信息嵌入源代码,使得指示哪些许可条款适用于软件的哪些部分变得切实可行。

为了说明开源许可实践所能实现的效果,请考虑以下示例性软件项目:

该项目始于 5 年前;到目前为止,已有 50 位贡献者做出了贡献;通过改编其他项目中的部分软件,增加了一些功能;原始代码的开发者在三年后离开;几家商业企业已经在其内部或一部分产品中依赖该软件;如果考虑到其他软件和计算机世界方面相关的变化,则该软件未来可能还会有 5-10 年的发展。

在开源项目中现有和常用的表示许可信息的方法,很容易适应这样一个项目的过程。没有预先规划,贡献者可以从项目中来来去去;项目的各个部分遵循不同的许可条款;如果与其他公司的合作破裂,商业企业可以继续以很少的管理开销成本分担软件维护工作,同时保持完全独立开发其软件分支的能力。

相反,传统的软件许可方法将如何支持这种开发呢?甚至这样的合作有可能发生吗?我们是否将拥有一个完整的许可基础结构来跟踪数千个“主软件开发和分发协议”的适用性?我们是否要通过让某些公司控制一切来简化许可?

让我们回到“是什么许可?”这个问题。我谈论开源开发特征的目的,是说明存在重要的影响开源许可信息如何表示的非法律因素。开源软件中许可信息的表示形式通常不符合常规软件许可的期望。但是,存在差异并不代表系统出毛病了。相反,对于支持过去二十年中已被证明有效的大规模协作开发这种软件构建方法来说,差异的作用非常强大。

开源许可信息是什么样的呢?

通常,人们会考虑每个“软件组件”的许可条款。软件组件可能作为应用程序对用户可见,或者对于用户来说可能不那么明显,例如与大型程序结合使用时可提供某些功能的库。

对于许多软件组件而言,许可很简单:组件中的所有软件适用数十种最常见的开源许可证中的一种。除了最常见的许可证之外,还有很多文本有所变动的不经常使用的许可证。但是,在“开源定义”的指导下,开源许可条款中的权限和限制仍保持在一定范围内。

如果要进行将开源软件集成到其他软件中的软件开发,那么你需要了解适用于所集成软件的所有 “左版” Copyleft 条款(例如著名的 GPL 系列许可证)。

由于从我对开源软件开发方式的讨论中揭示的显而易见的原因,许可信息可能比单个许可证更为复杂。

  1. 尽管一个软件组件可能有一个主要的“项目许可”,但可能有一部分软件遵循其他许可证。这可能会导致在源代码的各个部分中出现不同的许可声明。
  2. 一些项目的做法是在每个源文件中放置版权声明。其他项目主要依靠放置包含许可文本的一个或多个文件。
  3. 版权声明指示谁可能是该软件部分的版权拥有者(但是,鉴于版权声明实践的多样性,该指示的作用可能微不足道)。
  4. 用来构建软件组件的源代码可以包括未反映在所得组件中的软件,例如与测试或构建相关的文件。这对于使用无 GPL 规则(项目中可能包含遵循 GPL 许可证的文件,但用于生成可执行程序的文件不得包含遵循GPL许可证的文件)的人可能很重要。

因为许多细节都与某些许可信息涉及的软件部分有关,这种细粒度的许可信息在源代码中最有效地进行了传达。在最详细的级别上,源代码即许可证。当许可信息在源代码中时,可以用与源代码相同的方式(例如在版本控制系统中)来维护该许可信息,并且该信息固有地可用于获得源代码的任何人。

从源代码中提取许可信息并创建许可条款概要似乎很简单。但是,对于一个人或一个公司来说足够了的摘要,可能对于另一个人或公司是不足的。不同的人可能关注不同的许可信息细节。一些人可能想确切地知道该软件的哪些组件遵循“左版”条款。其他人可能并不关心所有组件的许可条款概要。还有的人可能需要包括每个不同的版权声明在内的所有许可声明。

你想查看哪些许可信息的细节呢?在软件开发中有大量的工具可以使用。扫描、提取和报告现有许可信息的工具是持续开发的活跃主题。现在,“是什么许可?”可能会改写为“向我显示许可信息报告”,该报告可能包括一系列程度不同的详细信息,具体取决于对请求报告的人的重要性。在最详细的级别上,源代码即许可证。

因为软件可以采用不同的方式构建出来,常规软件许可和开源软件许可分别适用于不同的领域。两者之间可能存在差异,对于这一点要做好准备。


作者简介:Scott Peterson 是红帽公司法律团队成员。很久以前,一位工程师就一个叫做 GPL 的奇怪文件向 Scott 征询法律建议,这个致命的问题让 Scott 走上了探索包括技术标准和开源软件在内的协同开发法律问题的纠结之路。

译者简介:薛亮,集慧智佳知识产权咨询公司互联网事业部总监,擅长专利检索、专利分析、竞争对手跟踪、FTO 分析、开源软件知识产权风险分析,致力于为互联网企业、高科技公司提供知识产权咨询服务。