[博客翻译]如何处理开源项目的身份问题


原文地址:https://lucumr.pocoo.org/2024/3/31/skin-in-the-game/


写于 2024年3月31日,星期日

最近有一些关于颠覆开源项目的小争议。那起事件让我思考一些通常在我脑海中的事情。那个想法再次被那起事件触发,但并不是对它的回应。我想谈谈作为一个开源贡献者和维护者的一些压力,但特别是关于一些多年来我一直不确定的事情:匿名性和使用化名。

多年来,很明显有些人在开源领域做出贡献,但不想让自己的名字与他们的贡献联系起来。我不打算判断他们是否有合理的理由这样做,或者化名是好是坏。这种情况的发生,只是生活中的一个事实。然而,这样做的后果是相当有趣的,我认为值得讨论。

当我谈论名字时,我主要考虑的是能够将一个在线用户名和一个贡献与一个真实的人联系起来的能力。这并不意味着人们找到这些信息应该是微不足道的,但至少在原则上应该是可能的。这一切显然是有平衡的,但鉴于“在互联网上做事”确实有真实的后果,必须有办法与背后的人取得联系。所以就“命名一个人”而言,这里不太关心特定的名字,而是能够识别背后的人。

虽然我们可能相信互联网上的事情无关紧要,法律不适用,但实际上并非如此。特别是在开源方面,我们都在利用版权法和执行合同的能力来共同工作。不管我们怎么写“本软件由版权持有者和贡献者“按原样”提供,以及任何明示或暗示的保证”,并不是所有的法律后果都可以放弃。

这使我想到了我在过去20年观察到的互联网匿名性的一些发展,我认为值得反思。当我开始从事开源时,化名似乎不那么常见。至少对我来说,与法律系统的距离感觉比今天要近得多。我给你一些这方面的例子:当我开始在互联网上做事,如果你做了一些真正愚蠢的事,有人会打电话给你的ISP,然后你会进行一场愤怒的对话。因为那条线的订阅者是已知的。早期互联网上的很多系统都是基于比今天可接受的更多的信任。一个愤怒的ISP并不是你会遇到的最糟糕的事情,很多人因为今天被忽视的事情(比如大多数DDOS攻击)被指控进行电信诈骗。当我创建我的第一个SourceForge账户时,“真实姓名”字段是必填的,CLA谈到了名字并要求签名。当我的东西被打包进Debian时,一些最先来到我这里的事情是人们向我解释一些我之前不知道的关于许可证的法律问题。在我开始参与Ubuntu之后,我去了一个密钥签名派对,在那里我向其他人展示我的护照,以证明我存在。当我成为Python核心贡献者时,我为CLA签署了一份实体纸张。

很多这些今天感觉很不典型。我们不再做很多这些事情,我相信这主要是因为人们不再经常因为开源项目去法庭。这可能也是因为随着时间的推移,开源变得更加成熟。如果你今天通过GitHub做出贡献,即使是服务条款也可能通过明确说明公共存储库的贡献方式(你在存储库的许可下做出贡献)来帮助解决版权问题。

但有时人们确实会上法庭。在许多方面,开源项目是不同贡献的不清晰混合体,我们只是集体希望我们都同意贡献是在项目根目录中的文件的相同许可下进行的。Linux内核曾经不接受来自匿名用户的贡献。它这样做是有充分理由的。他们需要知道贡献的人是谁,这样他们就知道在许可冲突的情况下该怎么办,而且Linux涉及的诉讼不止一个。即使在DCO实施后,这也是真的。今天,化名被接受了。不仅在Linux中,还在许多大型项目中。CNCF的一个例子就找到了一个关于名字和你签名的中间地带:“真实姓名不需要是法律姓名,也不需要是出生姓名,也不需要是任何出现在官方身份证件(例如护照)上的姓名。你的真实姓名是你传达给社区中的人们让他们用来识别你的名字。”最重要的是这部分:“你的真实姓名不应该是一个匿名id或虚假姓名,误导你是谁。”与这个人取得联系的需求存在,而且并没有消失。它一直存在,很可能会继续存在。有很好的理由想知道这个人是谁。也许这个人贡献了他们没有版权的代码,也许他们的雇主给你写了一封愤怒的邮件。关于许可的担忧是人们想知道贡献者是谁的一个常见原因。也许制裁或其他法律限制阻止接受来自那个人的贡献。你可能需要与作者联系以更改许可证的另一个原因。你可能还记得很多项目试图从GPL v2转移到GPL v2或更高版本。这样的变化需要之前每个贡献者的同意。联系人有时并不是最容易的任务。

然而,除了匿名贡献外,匿名贡献也急剧增加。特别是多亏了GitHub拉取请求,现在从那些只有一个虚构用户名、没有可见电子邮件地址和GitHub生成的一些默认头像的人那里得到提交变得非常普遍。

这不一定是一个问题,但对我来说,这似乎是一个我不确定如何处理的趋势。它创造了一种相当复杂的互动形式,其中一个人可能公开出现,另一个人可能完全匿名。我们这些在早期进入开源的老手中,许多人都有一个相当稳固的在线身份(无论是通过“真实姓名”还是化名)。我也认为,我们这些做了一段时间的人,对我们创造的东西感到相当大的压力和责任,至少对我来说是非常真实的。多年来,我多次听到或在线上读到,一个人选择匿名贡献是因为他们的雇主禁止开源工作。一方面,人们找到了一种避开这些限制的方法,另一方面,如果这被发现,你可能会和别人的法律团队进行一些不友好的谈话。

虽然实际上我的代码没有足够重要,我认为会发生这样的事情,但我绝对可以看到这发生在大型开源项目上,其中一个恶意雇员在他们雇主的时间或以其他方式贡献了专有代码。

我听到过几次这样的情绪,即应该审查贡献,而不是贡献者。这绝对是真的。然而,同时我们中的许多人坦率地假设有好的行为者,只是很高兴得到贡献。有时我们合并拉取请求时并不是在最好的状态下,有时我们感到压力。发现后门和敌对提交可能相当困难,特别是如果另一方足够有动机。但问题是:你知道我是谁,我不知道很多向我的库发送拉取请求的人是谁。一种我需要处理的不对称性。

促使我写这篇文章的是,我感觉到这些天的贡献中有很大的不对称性。这些天对开源的贡献要容易得多,这是一件好事。但它也有代价。你不可能偶然发现自己成为了全世界部署的关键软件。你的用户更新到你的代码的最新版本,没有自己的审查。然而,责任的重担落在你身上,与项目相关的人。一个可能被知道的人。然而,许多贡献是随机的人,你可能没有好的机会识别他们。有时甚至不是贡献,它已经是问题跟踪器上的匿名用户增加了压力。

我发现这种环境有时是情感上的压力,比以前更多。我甚至不维护特别受欢迎的开源库,但我对那种经验的压力感到更加紧张,而且其中的一个相当大的元素是,我觉得很多问题和提交是来自那些出现一次然后离开的人。也许是因为我年纪大了,或者因为我生活中还有其他不是开源的东西,但情况就是这样。

这让我回到身份问题。对很多人来说,他们的在线身份与现实世界的身份没有明确联系可能很好。我觉得不太好的是,随着这种真实身份的丧失,许多现实世界的法律后果就落在了我身上,一个可以被识别的人。我不认为知道贡献者是谁会解决任何问题,顺便说一下。虽然我确实有一些可能不现实的希望,如果执法机构能更容易地介入,如果他们能更好地识别坏人,我甚至不确定他们是否对介入有多大兴趣。对我来说,这主要是一种心理安慰。

每个人对一个项目的贡献以某种方式变成了一个永久的责任。我按下合并按钮的那一刻,我就承担了别人的提交责任。虽然无论如何,许多这些贡献都是良性的,但你确实开始在一段时间后信任重复的贡献者。互联网上一个稳固的身份创造了一种内心的平静,越来越多地将一个项目交给你不认识的人则不然。然而,这完全可以逐渐发生。也许验证身份是一种幻觉,但有时这些幻觉就是让人感到更放松的全部所需。

我不认为我们应该强迫人们在互联网上有一个现实世界的身份,但我们也可能需要退一步,看看我们是怎么来到这里的,以及我们是否喜欢这种方式。从某种意义上说,这是一个关于怀念“美好的旧时光”的通用抱怨(可能从来没有过),那时人们面对面地交谈。相反,越来越多的互联网互动感觉像是与你可能永远不会见面、交谈或写信的无面人物发生。

所以剩下的是什么?我不知道。我也不知道这是不是只有我感觉到的问题,也不知道如果是一个问题的话解决办法是什么。我所能说的是,这些天我发现开源在很多方面比以前更有压力。