跳到主要内容
Distinguish between source and vendor

作者:David A. Wheeler,Linux基金会

区分""是很重要的。来源"(商品或服务的任何来源)从""一词中删除。供应商"(有报酬并有合同关系的来源),特别是在讨论软件的时候。这就是原因。

Thomas Depierre的2022年博文 "我不是一个供应商" 这篇文章触动了整个开源软件(OSS)社区许多人的神经,因为它指出了一个真正的问题。许多组织在使用开放源码软件时,并没有为其付费,也没有与开放源码软件项目达成任何形式的合同协议/关系,但 要求 即开放源码软件维护者为他们提供无尽的免费帮助(如创建代码改进或代表他们填写合规表格)。

一个惊人的例子是,当 Daniel Stenberg(curl项目的负责人)收到一封邮件 要求提供正式和详细的Log4Shell/log4j安全响应。请求者不是他的客户,但 要求的 免费工作。

丹尼尔-阿佩尔奎斯特的 "当软件不是一种 "供应 "时 建议 "我们应该考虑在某些情况下采用稍微不同的术语。当背景是一般的开放源码开发者社区时,使用软件依赖链这个术语可能更合适。或者说,我们作为一个行业,需要向开源开发者非常清楚地解释我们所说的软件供应链是什么意思,以及不是什么意思。" 我同意他的观点,即术语需要澄清。以下是我对如何澄清事情的建议。

首先,术语"软件供应链"和"网络供应链"已被 广泛 使用过的 许多 作为 包括 OSS.最近的许多工作讨论了保护开放源码软件供应链的问题,包括一个 Ladisa等人的分类法, SLSA, S2C2F,以及 博客文章.如果没有供应链,"保护开放源码软件供应链 "是没有意义的。试图改变 "软件(或网络)供应链 "的含义  现在 将几乎肯定是不成功的,而且肯定会造成混乱。所以我们不要把注意力放在这些术语上。

相反,我认为 真正的 问题出在 "供应商 "这个词上。因此,我建议人们停止使用 "供应商 "这个模棱两可的术语,而改为:

  • 使用""一词。卖家" 指一个提供货物或服务(如软件)的实体,被提供付款(金钱或其他)、 有某种合同关系(明示或暗示)。
  • 使用""一词。来源" 指的是 任何 货物或服务(如软件)的来源,无论是否存在付款或合同。

所有供应商都是来源,但不是所有来源都是供应商。未能区分这两种情况,造成了许多问题。

鉴于这些定义,这种脱节的根本原因很容易解释:开放源码软件项目是 来源 但通常不会 供应商,而组织有时并不了解其中的区别。如果一个组织想要那些额外的供应商服务,这些组织应该准备自己去做。 为他们支付费用(例如,通过向某人支付费用来充当该开放源码软件的供应商)。丹尼尔-斯坦伯格的回答正是我所期望的;如果一家公司希望为他们提供特殊服务(如代码修改、评估报告或保证),该公司应该准备为该服务付费。

典型的开放源码软件许可证是很清楚的,软件是免费的,按现状提供的,而且软件没有免费的保证。如果需要保修,那也可以,但这是一个单独的谈判--要求无偿工作是不合理的。有许多供应商为开放源码软件提供支持和其他服务。一个开放源码软件项目甚至可以自己充当一个供应商(虽然这 具体 样的 直接付费支持 是罕见的;通常供应商是独立的或特定的维护者)。简而言之,当有支付与特定客户的合同时,客户可以要求什么和不要求什么就比较清楚了。将供应商这个词与源头区分开来,可以减少混乱,帮助用户认识到有时他们可能需要自己做一些事情,做出贡献,或者付费。

区分这些术语也可以帮助解决可持续的开放源码软件项目资源的挑战。许多开放源码软件项目得到了很好的支持,但有些却没有。一些开放源码软件项目没有足够资源的原因之一是,一些组织认为 "免费获得当前版本的软件 "意味着 "我们也将免费获得我们要求的任何改进和答案"。一旦说清楚了,这根本就没有意义。许多开放源码软件项目提供了比软件更多的东西,包括努力回答问题,修复缺陷,提供快速的漏洞响应,以及增加功能--这很好!但是,用户必须承认,开放源码软件项目提供的东西是免费的!然而,用户必须承认,开放源码软件项目的维护者有他们自己的目标,并不 需要 当用户没有为服务付费时,他们愿意做得更多。

经济学家经常被开放源码软件所迷惑。我认为问题的一部分在于他们混淆了实物商品和智力作品。有形商品需要资源来制作每一份拷贝,但制作一个智力作品(如软件)的数字拷贝基本上是免费的。对开放源码软件的维护者来说,昂贵的不是制作拷贝,昂贵的是提供进一步的服务。

这篇文章的早期版本使用了 "供应商 "一词,而不是 "来源 "作为一般术语。许多人对使用 "供应商 "这一术语作为一般术语没有意见。然而,其他人认为 "供应商 "一词很容易与 "供应商 "相混淆。 Thomas Depierre的2022年博客文章 反对其标题中的 "供应商 "一词。 安全代码 说,"供应商 "一词是 "供应商 "的同义词,在讨论开放源码软件时,它最终使用了长长的绕口令,如 "源自开放源码软件(OSS)的存储库"。 这份欧盟文件 不厌其烦地不使用 "供应商 "这个词作为开放源码软件项目。对于常见的情况有一个单一的词是很有帮助的,在与其他人讨论之后,我能找到的最好的通用词是 "源"。这还有其他的类比;一个湖泊可能被称为 "水源",可以被视为 "水供应链 "的一部分--但一个湖泊通常不被称为 "水供应商 "或 "水供应商"。术语 "源 "也许可以与 "源代码 "相混淆,但在实践中,它似乎并不令人困惑。

ǞǞǞ 开放源代码安全基金会(OpenSSF) 都是为了提高开放源码软件的安全性。但请注意,OpenSSF是 关于对开放源码软件项目提出无偿要求。OpenSSF已经进行了安全审计,提出了修复方案,提供了免费的MFA硬件令牌,提供了免费课程,提供了工具(如OpenSSF记分卡和OpenSSF最佳实践徽章)以帮助项目评估其安全态势,等等。有时我们付钱给人做这些工作,有时做这些工作的人是来自付钱给他们的组织的志愿者,有时做这些工作的人是无偿志愿者。要求开放源码软件项目像供应商一样行事,而他们是来源,但不是供应商,对任何人都没有帮助。

你能如何帮助?一小步是在你写的东西中明确区分供应商和来源(并鼓励字典也这样做)。另一个步骤是确定你的组织需要开放源码软件项目做什么的情况,并提供资源来帮助完成这项工作(贡献代码或文档,捐赠时间,支付现有维护者的工作,等等)。一种方法是向项目或特定的项目维护者付费。你也可以与许多开放源码软件基金会合作(例如,作为组织成员或只是参与),帮助处理和解决跨越许多开放源码软件项目的问题。如果很多人做一点,加起来就会有很多。

关于作者

David A WheelerDavid A. Wheeler博士 是开发安全软件和开放源代码软件(OSS)开发方面的专家。他撰写了关于如何开发安全软件的《安全编程HOWTO》一书,他在对抗恶意工具方面的工作(《通过多样化的双重编译(DDC)全面对抗信任》)被广泛引用。他是Linux基金会的开源供应链安全总监,并在乔治梅森大学(GMU)讲授开发安全软件的研究生课程。你可以通过以下方式联系大卫:<dwheeler at linuxfoundation dot org>。

这篇文章代表作者的观点,不一定反映所有OpenSSF成员的观点。