分类 观点 下的文章

作为软件开发人员,我认为我们可以认同开源代码 注1 已经改变了世界。它的公共性质去除了壁垒,可以让软件可以变的最好。但问题是,太多有价值的项目由于领导者的精力耗尽而停滞不前:

“我没有时间和精力去投入开源了。我在开源上没有得到任何收入,所以我在那上面花的时间,我可以用在‘生活上的事’,或者写作上……正因为如此,我决定现在结束我所有的开源工作。”

—— Ryan Bigg,几个 Ruby 和 Elixir 项目的前任维护者

“这也是一个巨大的机会成本,由于我无法同时学习或者完成很多事情,FubuMVC 占用了我很多的时间,这是它现在必须停下来的主要原因。”

—— 前 FubuMVC 项目负责人 Jeremy Miller

“当我们决定要孩子的时候,我可能会放弃开源,我预计最终解决我问题的方案将是:核武器。”

—— Nolan Lawson,PouchDB 的维护者之一

我们需要的是一种新的行业规范,即项目领导者将总是能获得(其付出的)时间上的补偿。我们还需要抛弃的想法是, 任何提交问题或合并请求的开发人员都自动会得到维护者的注意。

我们先来回顾一下开源代码在市场上的作用。它是一个积木。它是实用软件,是企业为了在别处获利而必须承担的成本。如果用户能够理解该代码的用途并且发现它比替代方案(闭源专用、定制的内部解决方案等)更有价值,那么围绕该软件的社区就会不断增长。它可以更好,更便宜,或两者兼而有之。

如果一个组织需要改进该代码,他们可以自由地聘请任何他们想要的开发人员。通常情况下为了他们的利益会将改进贡献给社区,因为由于代码合并的复杂性,这是他们能够轻松地从其他用户获得未来改进的唯一方式。这种“引力”倾向于把社区聚集在一起。

但是它也会加重项目维护者的负担,因为他们必须对这些改进做出反应。他们得到了什么回报?最好的情况是,这些社区贡献可能是他们将来可以使用的东西,但现在不是。最坏的情况下,这只不过是一个带着利他主义面具的自私请求罢了。

有一类开源项目避免了这个陷阱。Linux、MySQL、Android、Chromium 和 .NET Core 除了有名,有什么共同点么?他们都对一个或多个大型企业具有战略性重要意义,因为它们满足了这些利益。聪明的公司商品化他们的商品,没有什么比开源软件便宜的商品了。红帽需要那些使用 Linux 的公司来销售企业级 Linux,Oracle 使用 MySQL 作为销售 MySQL Enterprise 的引子,谷歌希望世界上每个人都拥有电话和浏览器,而微软则试图将开发者锁定在平台上然后将它们拉入 Azure 云。这些项目全部由各自公司直接资助。

但是那些其他的项目呢,那些不是大玩家核心战略的项目呢?

如果你是其中一个项目的负责人,请向社区成员收取年费。开放的源码,封闭的社区。给用户的信息应该是“尽你所愿地使用代码,但如果你想影响项目的未来,请为我们的时间支付。”将非付费用户锁定在论坛和问题跟踪之外,并忽略他们的电子邮件。不支付的人应该觉得他们错过了派对。

还要向贡献者收取合并非普通的合并请求的时间花费。如果一个特定的提交不会立即给你带来好处,请为你的时间收取全价。要有原则并记住 YAGNI

这会导致一个极小的社区和更多的分支么?绝对。但是,如果你坚持不懈地构建自己的愿景,并为其他人创造价值,他们会尽快为要做的贡献而支付。合并贡献的意愿是稀缺资源。如果没有它,用户必须反复地将它们的变化与你发布的每个新版本进行协调。

如果你想在代码库中保持高水平的概念完整性,那么限制社区是特别重要的。有自由贡献政策的无领导者项目没有必要收费。

为了实现更大的愿景,而不是单独为自己的业务支付成本,而是可能使其他人受益,去众筹吧。有许多成功的故事:

众筹有局限性。它不适合大型项目。但是,开源代码也是实用软件,它不需要雄心勃勃、冒险的破局者。它已经一点点地渗透到每个行业

这些观点代表着一条可持续发展的道路,也可以解决开源的多样性问题,这可能源于其历史上无偿的性质。但最重要的是,我们要记住,我们一生中只留下那么多的按键次数,而且我们总有一天会后悔那些我们浪费的东西。

  • 注 1 :当我说“开源”时,我的意思是代码许可以某种方式来构建专有的东西。这通常意味着一个宽松许可证(MIT 或 Apache 或 BSD),但并非总是如此。Linux 是当今科技行业的核心,但是是以 GPL 授权的。

感谢 Jason Haley、Don McNamara、Bryan Hogan 和 Nadia Eghbal 阅读了这篇文章的草稿。


via: http://wgross.net/essays/give-away-your-code-but-never-your-time

作者:William Gross 译者:geekpi 校对:wxy

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

2017 年 11 月 18 日至 19 日,2017 中国开源年会在上海交大召开,来自集慧智佳的高级咨询师薛亮在开源治理分论坛上发表了题为《ABC 时代 GPL 许可证传染性问题探讨》的演讲,现将演讲的内容进行整理和补充,以飨读者。

我们目前所处的时代被称为“ABC(AI、Big Data、Cloud)时代”,也是大量采用开源软件的时代。在这个过程中,不可避免地会遇到开源软件合规的问题,而其中最让人感到困惑的,可以说就是 GPL 许可证传染性问题。那么 GPL 软件是不是真的像传说中的避之唯恐不及,其传染性风险令人谈之色变呢?本次演讲和大家简要探讨一下 GPL 传染性问题。

演讲内容主要包括四个部分,第一部分为“从合规到牟利”,简要介绍目前开源软件合规环境的变化情况。第二部分为“ GPL 传染性判断”,介绍从实务角度考虑,GPL 传染性判断的流程、方法和原则。第三部分为“MongoDB 案例”,介绍了采用 AGPL 许可证的 MongoDB 案例。第四部分为“开源智慧专栏”,简单介绍集慧智佳与 Linux 中国合作开办的“开源智慧专栏”。

第一部分题目为“从合规到牟利”,介绍了近些年开源软件合规和诉讼态势发生的变化,已经从单纯的“寻求合规”转变为“追求牟利”,而这种变化使得开源软件用户的合规风险变得越来越严重。

以最为严格的 GPL 许可证来说,自由软件基金会和自由软件管理机构是全球推行 GPL 许可的主要机构,其追求的主要目标之一是实现 GPL 的合规,对于那些在无意中违反 GPL 许可证的行为,本着“惩前毖后,治病救人”的原则,大多数还是以教育和帮助为主,并不会刻意追求罚款、赔偿等。

但是,随着开源软件合规和诉讼生态的发展,涌现了更多类型的新玩家。根据国外律师的观察,除了诸如 SFLC、SFC 等传统的合规机构之外,近年来出现了比较激进的例如 McHardy 这样的 版权流氓 Copyright Troll ,或者说是 GPL 牟利者,其主要目标已经从合规转变为牟利,要求对违规行为颁发禁令或进行赔偿。

根据“开源智慧专栏”发表的翻译文章《如何应对开源软件的版权牟利者? 开源律师说这样做!》,GPL 牟利者 McHardy 已经骚扰了 50 多个目标,据说有些国内企业也在其中。

面对越来越复杂的开源软件合规态势,作为开源软件用户来说,对于许可证合规问题,需要引起重视,而 GPL 传染性显然是其中最让人头疼的问题。

第二部分我们具体探讨一下“GPL 传染性判断”,主要是根据我们的研究和实务经验,对于如何评估和判断GPL软件的传染性进行梳理和总结。

对于软件企业的技术人员来说,开源代码是否好用,是他们选用开源代码的重要标准之一,而不会过多考虑许可证问题。但对于企业的合规和法律部门来说,自己企业的技术人员使用了哪些开源软件,这些开源软件采用哪些许可证,则是需要进行排查和梳理,做到心中有数。而对于采用 GPL 许可证的软件,为了避免传染性,是不是必须简单地“一刀切”,绝对禁止使用呢?

我们认为,根据 GPL 软件类型和使用场景的不同,其传染性风险也存在不同。其中一个关键的分界点,在于自用与分发。

自用的范畴比较广泛,在公司个人、部门使用,甚至在公司内部分发,都可以自由使用。

对于编译器、解释器等工具类软件,其主要作用是对代码进行加工,可以归为自用的范畴,但也要区分 GPL 工具类软件是否将自身代码混进其所加工的代码。例如 GCC 是 GPL 编译器,但使用 GCC 不会感染被编译的源文件。

对于采用 GPL、LGPL 许可证的软件,如果放在服务器/云上以 SaaS 方式对外提供服务,也可以算作自用的范畴。但是,采用 AGPL 许可证的软件除外,AGPL 专门针对 SaaS 方式进行约束。

我们接着再来看分发,对于一些必须分发出去的 GPL 软件,其类型也有多种。对于一些相对独立的软件,需要注意与自有代码是各自独立还是复杂的糅合,是否构成了结合作品。对于诸如 MQTT 等协议实现类的软件,其实现方式有多种,可以选择采用宽松许可证的开源软件。许多开源软件也采用双重授权,如果担心开源版本的风险问题,可以选择花钱购买其商业授权版本。

对于自有代码与 GPL 软件的链接/混合,也分几种情况。例如对于自有模块 A 和 GPL 模块 B,需要根据两者之间的通信亲密程度以及传输数据的复杂程度,判断两者是否构成了结合作品。对于 GPL 插件,需要分析自有代码主程序对其调用的方式,判断是否造成传染。

对于自有代码与 GPL 库的链接,根据 GPL 许可证,无论是采用静态链接或动态链接方式,都会造成自有代码被传染,必须进行公开。而之后发表的 LGPL 许可证,则对 GPL 库的链接稍微放松了限制。由于 LGPL 专门针对库而制定,采用 LGPL 的库相对来说应该已经考虑了对调用程序的影响,更容易避免被“传染”。

我们再来看一下“自用”,GNU 官方问答对于自用的解释非常宽泛,在一个企业集团的总公司、分公司、子公司等使用,都可以算作自用的范畴,不构成分发。

对于采用 GPL、LGPL 许可证的软件,如果放在服务器/云上以 SaaS 方式对外提供服务,不构成分发,但如果将其部署在用户终端上,则构成分发,带来传染性问题。

对于采用 AGPL 许可证的软件,即便是运行在服务器/云上,如果后续用户对其源代码进行了修改,也必须将修改版本发布出来。

需要注意的是,某个GPL软件的使用场景如果发生变化,之前对其传染性风险的判断也有可能变化,需要根据新的使用场景重新评估。

第三部分我们来看一个案例,MongoDB 是一个非常典型的使用 AGPL 许可证的开源软件。国外有文章甚至开玩笑说,正是因为有了 MongoDB,人们对 AGPL 许可证的看法有了明显改变,从 “never use AGPL” 转变成 “never use AGPL except for Mongo DB”。

具体看一下 MongoDB 的许可政策。MongoDB 的数据库部分采用严格的 AGPL v3.0 许可证,并且是双重许可,用户既可以选择开源版本,也可以选择商业授权版本。MongoDB 的驱动部分则采用宽松的 Apache v2.0 许可证。

通过对数据库和驱动分别适用不同的许可证,MongoDB 在坚守其自由软件本质的同时,也为用户大开方便之门。

其中需要注意,如果用户修改了 MongoDB 核心数据库的源代码,则必须将修改版本发布出来,回馈给社区。

反之,如果用户的程序仅是使用 MongoDB 数据库,没有对数据库源代码进行修改,则不必发布该用户程序。Copyleft 仅适用于 mongod 和 mongos 数据库,而驱动则采用 Apache 许可证,所以用户的程序如果通过 MongoDB 官方推荐的驱动与数据库进行交互,也不被视为 AGPL 范畴下的结合作品,而是单独的程序或作品,无需担心被传染。

从 MongoDB 这个案例可以看出,一些开源软件的著作权人为了保护和推广自己的开源项目,可以说是“煞费苦心”,绞尽脑汁地在许可证方面进行精巧的设计,给出一些“例外声明”,为用户“开后门”,让用户可以相对比较放心地使用,推动了这些开源软件的迅速普及。

“开源智慧专栏”由集慧智佳与国内领先的开源社区 Linux 中国合作创办,聚焦开源软件的知识产权问题,旨在传播域外动态,梳理经典判例,翻译重要文本,关注行业热点,分享实务经验。

在第三部分简要介绍了 GPL 传染性判断的方法和原则,其主要依据是自由软件基金会发布的 GPL 许可证官方问答。我们也对这个问题进行了翻译,陆续发表在本专栏中。此外,对于此前闹得沸沸扬扬的 Facebook 公司 react 许可证事件,我们也进行了实时的跟踪和解读。

以上所列为本专栏从创办至今所发表的文章列表,大家可以登录 Linux 中国的“开源智慧专栏”查看,或者扫描关注微信公众号,接收实时推送的相关文章。

最后,简单介绍一下我本人。我所供职的单位——集慧智佳是中国第一家在新三板挂牌(838286)的知识产权咨询公司,对开源知识产权问题一直进行持续的跟踪和研究,曾承担国家级的开源知识产权研究课题,并为国内知名的互联网软件企业提供开源知识产权风险排查服务。

我在集慧智佳互联网事业部担任高级咨询师,擅长专利检索、专利分析、专利布局、竞争对手跟踪、FTO 调查、开源软件知识产权风险分析;长期为联想、中国移动、海尔、东软等互联网企业、高科技公司提供知识产权咨询服务;担任“开源智慧专栏”主要撰稿人。

  • 2017 年 10 月 14 日,在 GNOME 2017 亚洲峰会上发表题为《开源软件的知识产权风险》演讲。
  • 2017 年 11 月 18 日,在 2017 中国开源年会上发表题为《ABC 时代 GPL 许可证传染性问题探讨》演讲(PDF)。

欢迎大家围绕开源软件知识产权问题与我进行交流!

Red Hat 已经学会了跟随开源社区,并将其商业化。你也可以。

开源中最强大但最困难的事情之一就是社区。红帽首席执行官 Jim Whitehurst 在与 Slashdot 的最近一次采访中宣称:“有强大社区的存在,开源总是赢得胜利”。但是建设这个社区很难。真的,真的很难。尽管预测开源社区蓬勃发展的必要组成部分很简单,但是预测这些部分在何时何地将会组成像 Linux 或 Kubernetes 这样的社区则极其困难。

这就是为什么聪明的资金似乎在随社区而动,而不是试图创建它们。

可爱的开源寄生虫

在阅读 Whitehurst 的 Slashdot 采访时,这个想法让我感到震惊。虽然他谈及了从 Linux 桌面到 systemd 的很多内容,但 Whitehurst 关于社区的评论对我来说是最有说服力的:

建立一个新社区是困难的。我们在红帽开始做一点,但大部分时间我们都在寻找已经拥有强大社区的现有项目。在强大的社区存在的情况下,开源始终是胜利的。

虽然这种方法 —— 加强现有的、不断发展的社区,似乎是一种逃避,它实际上是最明智的做法。早期,开源几乎总是支离破碎的,因为每个项目都试图获得足够的成员。在某些时候,人们开始聚集两到三名获胜者身边(例如 KDE vs. Gnome,或者 Kubernetes vs. Docker Swarm 与 Apache Mesos)。但最终,很难维持不同的社区“标准”,每个人都最终围拢到一个赢家身边(例如 Kubernetes)。

参见:混合云和开源:红帽数字化转型的秘诀(Tech Pro Research)

这不是投降 —— 这是培养资源和推动标准化的更好方式。例如,Linux 已经成为如此强大的力量的一个原因是,它鼓励在一个地方进行操作系统创新,即使存在不同的分支社区(以及贡献代码的大量的各个公司和个人)不断为它做贡献。红帽的发展很快,部分原因是它在早期就做出了聪明的社区选择,选择了一个赢家(比如 Kubernetes),并帮助它取得更大的成功。

而这反过来又为其商业模式提供动力。

从社区混乱中赚钱

对红帽而言一件很好的事是社区越多,项目就越成功。但是,开源的“成功”并不一定意味着企业会接受该项目,这仅仅意味着他们愿意这样做。红帽公司早期的直觉和不断地支付分红,就是理解那些枯燥、平庸的企业想要开源的活力,而不要,好吧,还是活力。他们需要把它驯服,变得枯燥而又平庸。Whitehurst 在采访中完美地表达了这一点:

红帽是成功的,因为我们沉迷于寻找方法来增加我们每个产品的代码价值。我们认为自己是帮助企业客户轻松消费开源创新的。

仅举一例:对于我们所有的产品,我们关注生命周期。开源是一个伟大的开发模式,但其“尽早发布、频繁发布”的风格使其在生产中难以实施。我们在 Linux 中发挥的一个重要价值是,我们在受支持的内核中支持 bug 修复和安全更新十多年,同时从不破坏 API 兼容性。这对于运行长期应用程序的企业具有巨大的价值。我们通过这种类型的流程来应对我们选择进行产品化的所有项目,以确定我们如何增加源代码之外的价值。

对于大多数想要开源的公司来说,挑战在于他们可能认识到社区的价值,但是不知道怎么不去销售代码。毕竟,销售软件几十年来一直是一个非常有利可图的商业模式,并产生了一些地球上最有价值的公司。

参看红帽如何使 Kubernetes 乏味并且成功

然而, 正如 Whitehurst 指出的那样,开源需要一种不同的方法。他在采访中断言:“你不能出售功能, 因为它是免费的”。相反, 你必须找到其他的价值,比如在很长一段周期内让开源得到支持。这是枯燥的工作,但对红帽而言每年值数十亿美元。

所有这一切都从社区开始。社区更有活力,更好的是它能使开源产品市场化,并能赚钱。为什么?嗯,因为更多的发展的部分等价于更大的价值,随之让自由发展的项目对企业消费而言更加稳定。这是一个成功的公式,并可以发挥所有开源的好处,而不会将它受制于二十世纪的商业模式。


via: https://www.techrepublic.com/article/most-companies-cant-buy-an-open-source-community-clue-heres-how-to-do-it-right/

作者:Matt Asay 译者:geekpi 校对:wxy

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

本文由高级咨询师薛亮据自由软件基金会(FSF)的英文原文翻译而成,这篇常见问题解答澄清了在使用 GNU 许可证中遇到许多问题,对于企业和软件开发者在实际应用许可证和解决许可证问题时具有很强的实践指导意义。

  1. 关于 GNU 项目、自由软件基金会(FSF)及其许可证的基本问题
  2. 对于 GNU 许可证的一般了解
  3. 在您的程序中使用 GNU 许可证
  4. 依据 GNU 许可证分发程序
  5. 在编写其他程序时采用依据 GNU 许可证发布的程序
  6. 将作品与依据 GNU 许可证发布的代码相结合
  7. 关于违反 GNU 许可证的问题

3、在您的程序中使用 GNU 许可证

3.1 如何从 (L)GPLv2 升级到 (L)GPLv3?

首先,在您的软件包中包含新版本的许可证。如果您在项目中使用 LGPL v3,请确保一同包含了 GPL v3 和 LGPL v3 的副本,因为 LGPL v3 现在被写成在 GPL v3 基础上的一系列附加许可。

其次,将所有现有的 v2 许可证 通知 notice (通常位于每个文件的顶部)替换为“如何使用 GNU 许可证”上新的推荐文本。它更加面向未来,因为它不再包括 FSF 的邮政地址。

当然,任何涉及软件包许可证的描述性的文本(如在 README中)也应该被适当更新。

3.2 您能一步一步地指导我如何将GPL应用到我的程序吗?

请参阅 GPL 说明书页面

3.3 为什么我要使用 GNU GPL,而不是其他自由软件许可证?(同 1.3)

使用 GNU GPL 将要求所有发布的改进版本都是自由软件。这意味着您可以避免与您自己作品的专有修改版本进行竞争的风险。不过,在某些特殊情况下,最好使用一个更宽松的许可证

3.4 为什么 GPL 要求程序的每个副本必须包含 GPL 许可证副本?(同 2.14)

作品包含许可证副本至关重要,因此获得程序副本的每个人都可以知道他们的权利是什么。

包括一个指向许可证的 URL,而不是将许可证本身包含在内,这是一种看起来很诱人的做法。但是您不能确定该 URL 在五年或十年后仍然有效。二十年后,我们今天所知道的 URL 们可能已不复存在。

不管网络将发生什么样的变化,确保拥有该程序副本的人员能够继续看到 GPL 许可证的唯一方法是,将许可证的副本包含在该程序中。

3.5 只需将 GNU GPL 的副本放在我的存储库中就可以了吗?

仅将 GNU GPL 的副本放在存储库中的文件中,并不能明确地声明可以依据 GNU GPL 使用同一存储库中的代码。如果没有这样的声明,并不能完全清楚地表明许可证中的权限真的可以适用于任何特定的源文件。一个明确的声明将消除所有的疑问。

文件仅包含许可证文本,而没有一个声明规定某些其他文件被该许可证覆盖,类似于文件包含一个其他任何地方都不会调用的子例程。但这种相似之处并不完美:律师和法院可能应用常识得出结论,因为您希望以 GPL 方式许可代码,所以您必定要将GNU GPL 的副本放在那里。或许律师和法院不会这样做。但为什么要留下不确定性呢?

每个源文件中都应该包括声明文本。只要能够伴随代码,程序的 README 文件中的清晰声明从法律上来说就足够了,但是它们很容易分离。所以,为什么要给您的代码许可证带来不确定性的风险呢?

这与 GNU GPL 的具体内容无关。对于任何自由许可证来说都是正确的。

3.6 为什么要在每个源文件中放置许可证 通知 notice

您应该在每个源文件的起始处放置通知,说明它所携带的许可证,以避免代码与其许可证被断开的风险。如果您存储库的 README 文件声明源文件遵循 GNU GPL,如果有人将该文件复制到另一个程序,会发生什么呢? 其他上下文可能无法表明该文件的许可证是什么。它似乎有一些其他许可证,或根本没有许可证(这将使代码变成非自由软件)。

在每个源文件的开始添加版权声明和许可证通知很容易,造成这种混乱的可能性不大。

这与 GNU GPL 的具体内容无关。对于任何自由许可证来说都是正确的。

3.7 如果作品不是很长,那该怎么办?(同 2.15)

如果整个软件包中只有很少的代码——我们使用的基准是不到 300 行,那么您可以使用一个宽松的许可证,而不是像 GNU GPL 这样的左版许可证(除非代码特别重要)。我们建议这种情况使用 Apache 许可证 2.0

3.8 为了节省空间,我是否可以省略 GPL 的引言部分,或者省略如何在自己的程序上使用 GPL 的 指导 instructions 部分吗?(同 2.21)

引言和指导是 GNU GPL 的组成部分,不能省略。事实上,GPL 是受版权保护的,其许可证规定只能逐字复制整个 GPL。(您可以使用法律条款制作另一个许可证,但该许可证不再是 GNU GPL。)

引言和指导部分共约 1000 字,不到 GPL 总文字数量的 1/5。除非软件包本身很小,否则引言和指导不会对软件包的大小产生大幅度的改变。在软件包很小的情况下,您可以使用一个简单的 全权 all-permissive 许可证,而不是 GNU GPL。

3.9 如何获得我的程序的版权,以便依据 GPL 发布?

根据 《伯尔尼公约》 Berne Convention ,所有书写成文的内容都将自动受版权保护。所以你没有必要做任何事情来“获得”你所写代码的版权——只要没有其他人声称拥有你的作品。

不过,在美国注册版权是一个很好的主意。这将给你在美国应对侵权者带来更多的影响力。

其他人可能声称拥有版权的情况是,如果您是雇员或学生;那么雇主或学校可能会声称你为他们做了工作,并且版权属于他们。他们是否存在有效的权利主张将取决于你所居住地方的法律,以及你的雇佣合同和你所做的工作。如果有任何疑问,最好咨询律师。

如果您认为雇主或学校可能会提出权利主张,您可以通过获得公司或学校适当授权的官员签署的版权免责声明来明确解决该问题。(您的直接上司或教授通常无权签署此免责声明。)

3.10 如果我的学校想将我自己的程序应用到学校的专有软件产品,我该怎么办?

现在许多大学试图通过限制他们所开发的知识和信息的使用来筹集资金,其实际上与商业业务有所不同。 (参见刊载于 2000 年 3 月 《大西洋月刊》 Atlantic Monthly 《受缚的大学》 The Kept University ,该文章对这个问题及其影响进行了一般性的讨论。)

如果您在某种程度上认为您的学校可能拒绝允许您的程序作为自由软件发布,最好尽早提出这个问题。程序越接近于有用的作品,行政部门越有动机从你手里拿回该程序,并在没有你的情况下完成它。在更早的阶段,你有更多的影响力。

所以我们建议你在程序只进行一半的时候接触他们,说:“如果你同意将它作为自由软件发布,我会完成它。”不要以为这是虚张声势。要取得胜利,你必须有勇气说:“我的程序如果不能成为自由软件,我宁愿不把它写出来。”

3.11 我想发布一个我依据 GNU GPL 编写的程序,但是我想在非自由程序中使用相同的代码。

发布一个非自由程序总是有道德上的污点,但从法律上来说没有任何障碍阻止你这样做。如果您是代码的版权所有者,您可以在不同时间以各种不同的非独占许可证发布。

3.12 依据 GPL 分发的程序的开发人员是否可以将其授权给另一方专用?

不可以,因为公众已经有权利使用遵循 GPL 的该程序,这个权利是不能撤销的。

3.13 美国政府可以依据 GNU GPL 发布一个程序吗?

如果这个程序是由美国联邦政府雇员在雇用过程中编写的,那么它是处于公有领域,这意味着它不受版权保护。由于GNU GPL是基于版权的许可证,所以这样的程序不能依据 GNU GPL 发布。(它仍然可以是自由软件,公有领域的程序是自由软件。)

不过,当美国联邦政府机构使用承包商来开发软件时,那就是不同的情况。合同可以要求承包商依据 GNU GPL 进行发布(GNU Ada 是以这种方式开发的)。或者合同可以将版权 分配 assign 给政府机构,然后政府机构可以依据 GNU GPL 发布该软件。

3.14 美国政府可否对遵循 GPL 的程序进行改进并发布?

可以。如果这些改进是由美国政府雇员在雇佣期间编写的,那么这些改进属于公有领域。不过,GNU GPL 仍然涵盖了整体的改进版本。在这种情况下没有问题。

如果美国政府使用承包商来完成这项工作,那么改进本身可以被 GPL 覆盖。

3.15 程序里为什么要说“GPL 的版本 3 或任何更新的版本”?

随着时间的推移,我们会不断更改 GPL——有时要澄清一下,有时允许以前不允许的某些用途,有时会收紧要求。(最后两次更改是在 2007 年和 1991 年。)当我们更新 GPL 时,在每个程序中使用这个“间接指针”可以让我们有可能针对整个 GNU 软件集合更改分发条款。

如果每个程序缺少间接指针,我们将被迫与许多版权持有者进行长时间的讨论,这在事实上是不可能实现的。在实践中,为 GNU 软件制定统一分发条款的机会将为零。

假设一个程序里说“GPL 的版本 3 或任何更新的版本”,并且一个新版本的 GPL 被发布。如果新的 GPL 版本提供了额外的许可,那么该权限将立即提供给程序的所有用户。但是,如果新的 GPL 版本要求更严格,则不会对使用当前版本的程序形成限制,因为该程序仍然可以依据 GPL 版本 3 进行使用。当程序里说“GPL 的版本 3 或任何更新的版本”,用户将被永远允许使用它,甚至可以依据 GPL 版本 3 的条款进行更改,即使在后续版本的 GPL 可用后也是如此。

如果GPL的新版本中更严格的要求不需要被现有软件遵守,那么它还有用吗?一旦 GPL 版本 4 可用,大多数遵循 GPL 的程序的开发人员将发布其程序的后续版本,阐明其采用“GPL 的版本 4 或任何更新的版本”。那么用户将不得不遵循 GPL 版本 4 中更严格的要求,以便使用程序的后续版本。

然而,开发人员没有义务这样做;如果这是他们的偏好,开发人员可以继续被允许使用以前版本的 GPL。

3.16 使用一个声明某个程序只能依据最新版本的 GNU GPL 进行使用的许可证是个好主意吗?

您不应该这样做,原因是它可能会导致未来某一天自动撤回用户以前拥有的一些权限。

假设一个程序是在 2000 年依据“最新的 GPL 版本”进行发布。当时,人们可以依据 GPL 版本 2 使用它。在 2007 年发布 GPL 版本 3 的那一天,每个人都将被迫不得不依据 GPL 版本 3 使用该程序。

有些用户甚至可能不知道 GPL 版本 3——但是他们将被要求使用它。他们可能会无意中违反该程序的许可证,只因为他们没有得到 GPL 版本 3发布的消息。这不是个对待别人的好方法。

除非因为违规,我们认为收回已经授予的权限是错误的做法。如果您的自由可以被撤销,那么这不是真正的自由。因此,如果您获得遵循某个版本许可证的某个版本程序的副本,则应始终具有该版本许可证授予的权限。依据“GPL 的版本 N 或任何更新的版本”进行发布维护了该原则。

3.17 有没有一些方法可以让使用我的程序的人们得到的输出物遵循 GPL?例如,如果我的程序用于开发硬件设计,我可以要求这些设计必须是自由的吗?

一般来说,这在法律上是不可能的;针对人们通过使用您的程序获取数据形成的输出物如何使用,版权法并没有赋予您任何发言权。如果用户使用您的程序输入或转换自己的数据,输出物的版权属于他,而不是您。更一般来说,当程序将其输入物转换成其他形式时,输出物的版权状态将继承其得以生成的输入物的版权状态。

所以您对输出物的使用拥有发言权的唯一方式是输出物的实质部分(或多或少)是从您程序的文本中复制出来。例如,如果我们在这种具体情况下没有例外,那么Bison的一部分输出物(参见问题 5.2)将被 GNU GPL 所涵盖。

所以,即使没有技术原因,您也可以人为制作一个程序,将某些文本复制到其输出物中。但是,如果复制的文本没有实际用途,用户可以简单地从输出物中删除该文本,并且仅使用其余的内容。那么他就不必满足重新分发所复制文本的条件。

3.18 手册为什么不使用 GPL 许可证?(同 1.7)

手册也可以使用 GPL 许可证,但对于手册来说,最好使用 GFDL(自由文本授权,GNU Free Documentation License)许可证。

GPL 是为软件程序设计的,它包含许多复杂的条款,对于程序来说至关重要;但对于图书或手册来说,这将是麻烦和不必要的。例如,任何人如果(以 GPL)出版纸质图书,就要么必须为每份印刷版本配置该图书的机器可读形式“源代码”,或提供书面文件,表明将稍后发送“源代码”。

同时,GFDL 中包含了帮助免费手册的出版商从销售副本中获利的条款,例如,出售封面文字。 背书 Endorsements 部分的特殊规则使得 GFDL 可以作为官方标准。修改版本的手册是被允许的,但该修改版本不能被标记为“该标准”。

使用 GFDL,我们允许对手册中涵盖其技术主题的文本进行修改。能够修改技术部分非常重要,因为修改程序的人理所当然地要去修改对应的文档。人们有这样做的自由,它是一种道德责任。我们的手册还包括阐述我们对自由软件政治立场的部分。我们将它们标记为 “不变量” invariant ,使得它们不被更改或删除。 GFDL 中也为这些“不变部分”做出了规定。

3.19 GPL 如何适用于字体?

字体许可是一个复杂的问题,需要认真考虑。以下许可证例外是试验性的,但被批准用于一般用途。我们欢迎关于这个问题的建议——请参阅这个解释性文章,并写邮件到 [email protected]

要使用此例外,请将该文本添加到软件包中的每个文件的许可证通知中(尽可能),在文本末尾说明该文件依据 GNU GPL 分发:

作为一个特殊的例外,如果您创建一个使用此字体的文档,并将该字体或该字体未更改的部分嵌入到文档中,则此字体本身不会导致生成的文档被 GNU 通用公共许可证 GNU General Public License 覆盖。然而,这个例外不会使文档可能被 GNU 通用公共许可证涵盖的任何其他原因无效。如果您修改此字体,您可以将此例外扩展到您的字体版本,但是您没有义务这样做。如果您不想这样做,请从您的版本中删除此例外声明。

3.20 我正在编写一个网站维护系统(有人称之为“内容管理系统”)或者是其他一些从模板生成网页的应用程序。我应该为这些模板使用什么许可证?

模板很小,不值得使用 左版 copyleft 来保护它们。在小作品上使用左版通常是无害的,但模板是一种特殊情况,因为它们与应用程序用户提供的数据结合使用,并且其组合被分发。因此,我们建议您以简单的许可条款许可您的模板。

一些模板调用 JavaScript 函数。由于 JavaScript 通常是不一般的作品,因此它值得用左版保护。由于模板与用户数据相结合,因此模板 + 用户数据 + JavaScript 可能被版权法看作是一个作品。需要在 JavaScript(受左版保护)和用户代码(通常遵循不兼容的条款)之间划清界限。

以下是执行此操作的 JavaScript 代码的一种例外:

作为 GPL 的一个特殊例外,仅对此代码进行函数调用并且为此目的通过引用将其包括在内的 HTML 文件,将被视为版权法意义下的单独作品。此外,此代码的版权所有者可以让您将该代码与依据 GNU LGPL 发布的自由软件库相结合。您可以按照此代码所遵循的 GNU GPL 条款以及此库所遵循的 LGPL 条款复制和分发这样一个系统。如果您修改此代码,则可以将此例外扩展到您的代码版本,但是您没有义务这样做。如果您不想这样做,请从您的版本中删除此例外声明。

3.21 我可以发布一个使用非自由工具开发的遵循 GPL 的程序吗?

您使用什么程序来编辑、编译、研究、记录源代码,通常对于该源代码的许可问题没有任何影响。

但是,如果将非自由库与源代码链接,那么它就是一个您需要进行处理的问题。它不阻碍依据GPL发布源代码,但是如果这些库不符合 “系统库” system library 例外情况,那么您应该附加一个明确的通知,允许您的程序与它们进行链接。有关使用 GPL 不兼容库的 FAQ 条目提供了如何执行此操作的更多信息。

3.22 我使用公钥加密来对我的代码进行签名,以确保其真实性。GPL v3 是否强制要求我发布我的私人签名密钥?

否。只有在您将遵循 GPL 的软件传递给用户产品之中,您才需要发布签名密钥,并且其硬件会在功能启动之前检查该软件来获得有效的密码签名。在这种具体情况下,您将被要求提供密钥给任何拥有该设备的人员,使其按照要求在设备上签名并安装修改后的软件,以便其运行。如果具体每个设备使用不同的密钥,那么您只需要为每个购买者提供相应的密钥。

3.23 GPL v3 是否要求投票人能够修改在投票机中运行的软件?(同 2.41)

不要求。企业分发包含遵循 GPL v3 软件的设备,最多只需要为拥有目标代码副本的人提供软件的源代码和安装信息。使用投票机(如同任何其他信息亭一样)的选民不能拥有它,甚至不能暂时拥有,所以选民也不能拥有二进制软件。

不过,请注意,投票是一个非常特殊的情况。仅仅因为计算机中的软件是自由软件,并不意味着您可以信任计算机,并进行投票。我们认为电脑不值得信任,不能被用作投票。投票应在纸上进行。

3.24 GPL v3 中的担保和免责声明似乎是依据美国法律的。我可以将自己的免责声明添加到我自己的代码中吗?

可以。GPL v3 第 7 节允许您添加自己的免责声明,具体来说是 7(a)。

3.25 我的程序具有非视觉性的交互式用户界面。如何遵守 GPL v3 中的 适当法律声明 Appropriate Legal Notices 要求?

所有您需要做的是确保适当法律声明对于您界面中的用户来说唾手可得。例如,如果您已经编写了一个音频接口,您可以包括一个大声朗读该声明的命令。

Cyber​​Shaolin 联合创始人 Reuben Paul 将在布拉格的开源峰会上发表演讲,强调网络安全意识对于孩子们的重要性。

Reuben Paul 并不是唯一一个玩电子游戏的孩子,但是他对游戏和电脑的痴迷使他走上了一段独特的好奇之旅,引起了他对网络安全教育和宣传的早期兴趣,并创立了 Cyber​​Shaolin,一个帮助孩子理解网络攻击的威胁的组织。现年 11 岁的 Paul 将在[布拉格开源峰会](LCTT 译注:已于 10 月 28 举办)上发表主题演讲,分享他的经验,并强调玩具、设备和日常使用的其他技术的不安全性。

Cyber​​Shaolin 联合创始人 Reuben Paul

我们采访了 Paul 听取了他的故事,并讨论 Cyber​​Shaolin 及其教育、赋予孩子(及其父母)的网络安全危险和防御知识。

Linux.com:你对电脑的迷恋是什么时候开始的?

Reuben Paul:我对电脑的迷恋始于电子游戏。我喜欢手机游戏以及视频游戏。(我记得是)当我大约 5 岁时,我通过 Gameloft 在手机上玩 “Asphalt” 赛车游戏。这是一个简单而有趣的游戏。我得触摸手机右侧加快速度,触摸手机左侧减慢速度。我问我爸,“游戏怎么知道我触摸了哪里?”

他研究发现,手机屏幕是一个 xy 坐标系统,所以他告诉我,如果 x 值大于手机屏幕宽度的一半,那么它是右侧的触摸。否则,这是左侧接触。为了帮助我更好地理解这是如何工作的,他给了我一个线性的方程,它是 y = mx + b,并问:“你能找每个 x 值 对应的 y 值吗?”大约 30 分钟后,我计算出了所有他给我的 x 对应的 y 值。

当我父亲意识到我能够学习编程的一些基本逻辑时,他给我介绍了 Scratch,并且使用鼠标指针的 x 和 y 值编写了我的第一个游戏 - 名为 “大鱼吃小鱼”。然后,我爱上了电脑。

Linux.com:你对网络安全感兴趣吗?

Paul:我的父亲 Mano Paul 曾经在网络安全方面培训他的商业客户。每当他在家里工作,我都会听到他的电话交谈。到了我 6 岁的时候,我就知道互联网、防火墙和云计算等东西。当我的父亲意识到我有兴趣和学习的潜力,他开始教我安全方面,如社会工程技术、克隆网站、中间人攻击技术、hack 移动应用等等。当我第一次从目标测试机器上获得一个 meterpreter shell 时,我的感觉就像 Peter Parker 刚刚发现他的蜘蛛侠的能力一样。

Linux.com:你是如何以及为什么创建 Cyber​​Shaolin 的?

Paul:当我 8 岁的时候,我首先在 DerbyCon 上做了主题为“来自(8 岁大)孩子之口的安全信息”的演讲。那是在 2014 年 9 月。那次会议之后,我收到了几个邀请函,2014 年底之前,我还在其他三个会议上做了主题演讲。

所以,当孩子们开始听到我在这些不同的会议上发言时,他们开始写信给我,要我教他们。我告诉我的父母,我想教别的孩子,他们问我怎么想。我说:“也许我可以制作一些视频,并在像 YouTube 这样的频道上发布。”他们问我是否要收费,而我说“不”。我希望我的视频可以免费供在世界上任何地方的任何孩子使用。Cyber​​Shaolin 就是这样创建的。

Linux.com:Cyber​​Shaolin 的目标是什么?

Paul:Cyber​​Shaolin 是我父母帮助我创立的非营利组织。它的任务是教育、赋予孩子(和他们的父母)掌握网络安全的危险和防范知识,我在学校的空闲时间开发了这些视频和其他训练材料,连同功夫、体操、游泳、曲棍球、钢琴和鼓等。迄今为止,我已经在 www.Cyber​​Shaolin.org 网站上发布了大量的视频,并计划开发更多的视频。我也想制作游戏和漫画来支持安全学习。

Cyber​​Shaolin 来自两个词:网络和少林。网络这个词当然是来自技术。少林来自功夫武术,我和我的父亲都是黑带 2 段。在功夫方面,我们有显示知识进步的缎带,你可以想像 Cyber​​Shaolin 像数码技术方面的功夫,在我们的网站上学习和考试后,孩子们可以成为网络黑带。

Linux.com:你认为孩子对网络安全的理解有多重要?

Paul:我们生活在一个技术和设备不仅存在我们家里,还在我们学校和几乎任何你去的地方的时代。世界也正在与物联网联系起来,这些物联网很容易成为威胁网(Internet of Threats)。儿童是这些技术和设备的主要用户之一。不幸的是,这些设备和设备上的应用程序不是很安全,可能会给儿童和家庭带来严重的问题。例如,最近(2017 年 5 月),我演示了如何攻入智能玩具泰迪熊,并将其变成远程侦察设备。孩子也是下一代。如果他们对网络安全没有意识和训练,那么未来(我们的未来)将不会很好。

Linux.com:该项目如何帮助孩子?

Paul:正如我之前提到的,Cyber​​Shaolin 的使命是教育、赋予孩子(和他们的父母)网络安全的危险和防御知识。

当孩子们受到网络欺凌、中间人、钓鱼、隐私、在线威胁、移动威胁等网络安全危害的教育时,他们将具备知识和技能,从而使他们能够在网络空间做出明智的决定并保持安全。而且,正如我永远不会用我的功夫技能去伤害某个人一样,我希望所有的 Cyber​​Shaolin 毕业生都能利用他们的网络功夫技能为人类的利益创造一个安全的未来。


作者简介:

Swapnil Bhartiya 是一名记者和作家,专注在 Linux 和 Open Source 上 10 多年。


via: https://www.linuxfoundation.org/blog/cybershaolin-teaching-next-generation-cybersecurity-experts/

作者:Swapnil Bhartiya 译者:geekpi 校对:wxy

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

这就是为什么商业机构应该选择开源模式的原因

在相同的基础上,开源软件要优于专有软件。想知道为什么?这里有六个商业机构及政府部门可以从开源技术中获得好处的原因。

1、 让供应商审核更简单

在你投入工程和金融资源将一个产品整合到你的基础设施之前,你需要知道你选择了正确的产品。你想要一个处于积极开发的产品,它有定期的安全更新和漏洞修复,同时在你有需求时,产品能有相应的更新。这最后一点也许比你想的还要重要:没错,解决方案一定是满足你的需求的。但是产品的需求随着市场的成熟以及你商业的发展在变化。如果该产品随之改变,在未来你需要花费很大的代价来进行迁移。

你怎么才能知道你没有正在把你的时间和资金投入到一个正在消亡的产品?在开源的世界里,你可以不选择一个只有卖家有话语权的供应商。你可以通过考虑发展速度以及社区健康程度来比较供应商。一到两年之后,一个更活跃、多样性和健康的社区将开发出一个更好的产品,这是一个重要的考虑因素。当然,就像这篇 关于企业开源软件的博文 指出的,供应商必须有能力处理由于项目发展创新带来的不稳定性。寻找一个有长支持周期的供应商来避免混乱的更新。

2、 来自独立性的长寿

福布斯杂志指出 90%的初创公司是失败的 ,而他们中不到一半的中小型公司能存活超过五年。当你不得不迁移到一个新的供应商时,你花费的代价是昂贵的。所以最好避免一些只有一个供应商支持的产品。

开源使得社区成员能够协同编写软件。例如 OpenStack 是由许多公司以及个人志愿者一起编写的,这给客户提供了一个保证,不管任何一个独立供应商发生问题,也总会有一个供应商能提供支持。随着软件的开源,企业会长期投入开发团队,以实现产品开发。能够使用开源代码可以确保你总是能从贡献者中雇佣到人来保持你的开发活跃。当然,如果没有一个大的、活跃的社区,也就只有少量的贡献者能被雇佣,所以活跃贡献者的数量是重要的。

3、 安全性

安全是一件复杂的事情。这就是为什么开源开发是构建安全解决方案的关键因素和先决条件。同时每一天安全都在变得更重要。当开发以开源方式进行,你能直接的校验供应商是否积极的在追求安全,以及看到供应商是如何对待安全问题的。研究代码和执行独立代码审计的能力可以让供应商尽可能早的发现和修复漏洞。一些供应商给社区提供上千的美金的漏洞奖金作为额外的奖励来鼓励开发者发现他们产品的安全漏洞,这同时也展示了供应商对于自己产品的信任。

除了代码,开源开发同样意味着开源过程,所以你能检查和看到供应商是否遵循 ISO27001、 云安全准则 及其他标准所推荐的工业级的开发过程。当然,一个可信组织外部检查提供了额外的保障,就像我们在 Nextcloud 与 NCC小组合作的一样。

4、 更多的顾客导向

由于用户和顾客能直接看到和参与到产品的开发中,开源项目比那些只关注于营销团队回应的闭源软件更加的贴合用户的需求。你可以注意到开源软件项目趋向于以“宽松”方式发展。一个商业供应商也许关注在某个特定的事情方面,而一个社区则有许多要做的事情并致力于开发更多的功能,而这些全都是公司或个人贡献者中的某人或某些人所感兴趣的。这导致更少的为了销售而发布的版本,因为各种改进混搭在一起根本就不是一回事。但是它创造了许多对用户更有价值的产品。

5、 更好的支持

专有供应商通常是你遇到问题时唯一能给你提供帮助的一方。但如果他们不提供你所需要的服务,或者对调整你的商务需求收取额外昂贵的费用,那真是不好运。对专有软件提供的支持是一个典型的 “柠檬市场”。 随着软件的开源,供应商要么提供更大的支持,要么就有其它人来填补空白——这是自由市场的最佳选择,这可以确保你总是能得到最好的服务支持。

6、 更佳的许可

典型的软件许可证充斥着令人不愉快的条款,通常都是强制套利,你甚至不会有机会起诉供应商的不当行为。其中一个问题是你仅仅被授予了软件的使用权,这通常完全由供应商自行决定。如果软件不运行或者停止运行或者如果供应商要求支付更多的费用,你得不到软件的所有权或其他的权利。像 GPL 一类的开源许可证是为保护客户专门设计的,而不是保护供应商,它确保你可以如你所需的使用软件,而没有专制限制,只要你喜欢就行。

由于它们的广泛使用,GPL 的含义及其衍生出来的其他许可证得到了广泛的理解。例如,你能确保该许可允许你现存的基础设施(开源或闭源)通过设定好的 API 去进行连接,其没有时间或者是用户人数上的限制,同时也不会强迫你公开软件架构或者是知识产权(例如公司商标)。

这也让合规变得更加的容易;使用专有软件意味着你面临着苛刻的法规遵从性条款和高额的罚款。更糟糕的是一些 开源内核 open core 的产品在混合了 GPL 软件和专有软件。这违反了许可证规定并将顾客置于风险中。同时 Gartner 指出,开源内核模式意味着你不能从开源中获利。纯净的开源许可的产品避免了所有这些问题。取而代之,你只需要遵从一个规则:如果你对代码做出了修改(不包括配置、商标或其他类似的东西),你必须将这些与你的软件分发随同分享,如果他们要求的话。

显然开源软件是更好的选择。它易于选择正确的供应商(不会被供应商锁定),加之你也可以受益于更安全、对客户更加关注和更好的支持。而最后,你将处于法律上的安全地位。


作者简介:

一个善于与人打交道的技术爱好者和开源传播者。Nextcloud 的销售主管,曾是 ownCloud 和 SUSE 的社区经理,同时还是一个有多年经验的 KDE 销售人员。喜欢骑自行车穿越柏林和为家人朋友做饭。点击这里找到我的博客


via: https://opensource.com/article/17/10/6-reasons-choose-open-source-software

作者:Jos Poortvliet Feed 译者:ZH1122 校对:wxy

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