新软件卫生:声明许可,否则可能失去参与机会

目前还没有读者喜欢这篇文章。
User experience vs. design

Opensource.com

大约 25 年前,我有幸与 David Tilbrook 共事。他是我共事过的第一个人,他清晰地阐述了协作努力中适当的软件构建规范,并将其总结在标题为 清洁耳后:软件卫生原则 的文档中。

David 在万维网出现之前就阐述了这些实践。我们当时还未生活在一个网络如此彻底地消除了时间和空间对软件共享和协作的摩擦的世界中,即使是早期的互联网也实现了这一点。

开源定义尚未被创造出来。代码托管平台也尚未建立。

世界已经进步,现在需要一种新的软件卫生。早在 2012 年 5 月,我就了解到最受欢迎的软件协作平台之一 Github 并不要求项目创建者为其软件选择许可证。2012 年 9 月 17 日,James Governor (@monkchips) 发推文 提醒了我这种疯狂的做法

现在的年轻开发者关注的是 POSS - 后开源软件。管他妈的许可证和治理,直接提交到 github 就行了

我 (@stephenrwalli) 回复

治理意味着社区,但没有许可证的随意共享会导致软件传播疾病

很快,一场热闹的讨论就开始了,@nearyd@mmilinkov@webmink@dberkholz@tieguy 也加入了讨论。

问题是:政府使用版权法保护软件创作。不同政府对版权法的适用方式和术语略有不同的看法。一些国家担心作者的精神权利。另一些国家则不担心。各国对公共领域的含义以及如何在软件方面应用(或不能应用)公共领域也有不同的看法。本质上,与软件法律领域的所有事物一样,这很混乱。

免责声明:现在可能是提醒读者我不是律师的好时机。

在专有软件世界中,这相对“容易”。公司声明其版权作为对其软件产品的保护。随着软件发布和协作变得普遍,我们看到了自由和开源软件许可证的兴起。作者使用这些许可证来声明其作品的共享意图和期望。如果围绕项目出现协作社区,则这些许可证通常是在社区发展到治理声明和行为准则之前,对社会契约的初步声明。

问题来了。如果您在互联网上共享软件而未使用许可证,则该软件受您的版权保护,所有权利都归您所有。您没有声明它可能如何使用,或者您现在或将来会同意什么。如果您在像 Github 这样的随意网站上共享,鼓励 fork,并且您没有做出这样的共享声明,并且开始接受来自其他开发人员的未经许可的更改请求,那么您将共同创建一个版权烂摊子,最终会伤害使用您的软件的人。

由于不在乎,或者天真地认为这无关紧要,因为您认为“人们可以用我的软件做任何他们想做的事情”,或者更糟糕的是在您自己的手段中使用他人的未许可软件,您最终会达到一个阻碍您的软件增长的程度。

这不一定意味着您正在制造一个出处混乱,其中“肮脏”的知识产权会渗入其中(尽管我确信一些公司会试图挑起这种恐惧来向您推销东西,或者更糟糕的是向其他人推销东西以“保护他们”免受您的软件侵害)。您很可能会创造一种“软件传播疾病”,但您肯定在做的是限制您项目的增长。

专业开发人员对软件版权有一定的工作理解。我所说的专业人员是指比您知识渊博的开发人员,他们可以通过贡献使您的项目变得更好。当他们看到您的软件池中没有许可证时,如果您幸运的话,他们会要求您声明一个许可证,以便他们知道是否要采用和贡献。如果您不那么幸运,那么他们只会离开,您将失去他们可能为您的项目带来的任何贡献。

我不是在谈论会加入您的项目并留下的伟大的知识渊博的开发人员。如果您幸运的话,您会吸引一些比您更了解您所在领域的人,并与您分享他们的知识。这最终是一个良好运行的开源项目的经济实力。集体的力量让我们变得更好。我也不是在谈论当您构建大型社区时可能需要做的事情。

我只是在谈论分享您的软件才华。因为这就是您在 Github 这样的网站上发布的原因,对吧?这样您就可以分享和学习。如果您不添加许可证,您可能会失去有知识的参与。

因此,这里有一些保险杠贴纸标语,以帮助您记住新千年必要的软件卫生

  • 没有许可证的 Github 就像没有安全套的免费性行为。
  • 在互联网上实践安全的软件——使用许可证。
  • 实践良好的软件卫生——为您的软件许可。
  • 没有许可证就不要随意 fork。

具有宽松开源许可证的协作开发是万维网现象带来的最好的事情之一,有助于维持和发展它。明智地去做。

最初发布在 Outercurve 基金会博客。经许可重新发布。

User profile image.
我是一名技术主管、创始人、顾问、作家、国际商务人士、系统开发人员、软件构建极客和标准外交官。我喜欢构建让客户欣喜若狂的团队和产品。自 1980 年以来,我一直在 IT 行业工作,既是客户又是供应商。

4 条评论

就这专门是对 GitHub 的批评而言,我认为你夸大了至多只是一个小问题的问题。我花了很多时间浏览 GitHub 存储库,而且我很少看不到许可证的全局指示(这是我自然而然首先寻找的东西,因为我是律师)。

另一方面,人们确实会遇到公开可用的软件没有明确的许可信息(可能存在软件“开源”的模糊意图)的烦人情况,但这绝非 GitHub 独有,并且在 GitHub 上可能更少见。

顺便说一句,在某些情况下,不包含许可证是完全合理的。我将给你一个我在 GitHub 上发布的东西的例子(由我的同事 Brett Lentz 提供了有用的修复),一个用于在 OpenShift 上运行 Showoff 演示的快速入门
https://github.com/richardfontana/showoff-openshift-quickstart

我最初包含了一个 CC0 的副本,但正如你在这里看到的
https://github.com/richardfontana/showoff-openshift-quickstart/commit/0a78aaa95044f33f58f9f731a2123830afea8715
我删除了它,认为甚至暗示像这个小快速入门这样琐碎的东西是受版权保护的,并且值得 CC0 的复杂许可和放弃是冒犯性的。

虽然我相信您心中有更实质性的材料,但我确实不认为 GitHub 应该强制要求包含开源许可证,仅仅是因为在某些情况下许可证充其量是多余的。

我完全同意这篇文章!
包含许可信息非常重要,并且我不认为包含许可证会被认为是冒犯性的,无论内容多么微不足道。
我还想在这里给出一个很好的反例
Maven 中央仓库的入口策略。
Maven 是现代 java 项目管理标准(可以将其视为一种 Makefile,但功能更多)。
Maven 中央仓库是 java 软件(尤其是库)的默认包存储库。从某个时候开始,为了能够在 maven 中央仓库上发布软件,需要包含许可信息。
这非常好!
但仍然存在一个问题
许可信息由一个或多个许可证条目列表组成,每个条目都包含名称和 URL。名称是纯文本,这意味着,它可能是“GPL”、“GNU GPL”、“GNU General Public License”、“General Public License”,...
这正是实践中发生的事情。

因此,任何致力于强制执行许可证的人,请也包括一些机制来至少标准化通用许可证名称。

Google Code 在很久以前就尝试解决这个问题。从 2006 年到 2010 年,您得到了一个包含约 7-9 个可能的许可证选择的下拉菜单。仅此而已。结束。不允许许可证创新。他们希望减少许可证的扩散,您在上面谈到的那种混乱,以及个人作者会对其进行创新的许可证的微小自定义。他们发布了对其政策的理由,这是站得住脚的,无论每个人是否喜欢它。但自由市场当然可以选择其他东西。我敢打赌,如果 GitHub 愿意,它可以提出自己的理由。

在 2010 年,Google Code 放宽了限制,并允许了一个包罗万象的菜单选项“其他开源”许可证。因此,项目被引导到 9 个常用许可证,从而减少了扩散,但具有更具体需求的项目不会像以前那样被拒绝。这是一个合理的菜单驱动的社会工程。

“专业”软件开发人员有其他理由避免业余项目,而不仅仅是许可证的模糊性。因此,将许可证模糊性作为“我们不帮助你”的主要原因是不真诚的。年轻人有很多东西要学习,才能使一个开源项目对他人有价值,而这仅仅是其中之一。

在评估一个项目时,“你真的发布了可以工作的东西吗?”在我的优先事项列表中更高。我非常怀疑任何一直存在于源代码存储库中,但从不发布官方文件版本或软件包的项目。我对了解我是否可以构建你的软件不感兴趣!绝大多数具有这种态度的项目,即构建软件是我的工作,都有糟糕的构建,无法工作。我对决定一个项目是否值得的时间和精力障碍不感兴趣;如果他们如此不关心我作为潜在消费者或贡献者的时间,那么该项目可能不值得。

在邮件列表或论坛上没有沟通是一个坏兆头,尤其是当缺乏沟通已经持续多年时。“嘿,让我们开始一个邮件列表!”现象,项目开始时的大量沟通是一个坏兆头。如果他们停止喋喋不休并做任何实际工作,请稍后检查。

我远比对“只提交他妈的代码”的文化更同情。至少这是一种完成事情的文化。因此,它可能不会产生完全可用的许可证。也许它会崩溃并燃烧。孩子们总要以某种方式学习,而且大多数开源努力无论如何都会因各种原因而夭折。他们要么会重新站起来并再次尝试,吸取教训,要么不会。

多年来,我遇到了不止几个项目,这些项目都贴上了 GPL 或 LGPL 许可证。如果我足够关心他们所做的事情的价值,我会问他们为什么不提供 LGPL 或 MIT / BSD / zlib 许可证。一般来说,我对 Copyleft 限制不感兴趣,并试图根据库的合理用途来减少它们。我为充满争论的回应做好准备。但通常,开发人员根本没有过多考虑许可证,而是抓住了他们在开源领域找到的第一个谈论的东西。

© . All rights reserved.