测试用例是指主要为了通过获得推翻既定法律或澄清某些有争议的法律问题的司法裁决来实现政策目标的诉讼。提起测试用例通常涉及仔细规划在何处、何时以及起诉谁,以及提出哪些法律论据,以最大限度地提高赢得预期结果的机会。在美国,我们经常看到公共利益组织使用测试用例策略来影响通过其他政府手段实际上无法实现的法律变更。
但是,政策争议的任何一方都可以使用测试用例策略。即使测试用例成功,考虑到特定案例法院判决的局限性,真正的政策目标可能仍然难以实现,因为可能会遇到行政阻挠或立法否决。测试用例诉讼也可能失败,有时会造成灾难性后果——从测试诉讼人的角度来看,在最坏的情况下,法院可能会发布与所寻求的完全相反的裁决,正如 Plessy v. Ferguson 中发生的那样。
可能很难想象一个以解释软件许可证为中心的测试用例。 虽然许可证必然基于基础法律规则,但典型的软件许可证是私人交易,其条款由双方协商,或者是许可方独有的格式协议。 通常,对软件许可证中某些条款的解释的争议预计不会牵涉到通常是测试用例诉讼重点的广泛适用的政策问题。
但开源在这方面却截然不同。 大多数开源软件都受一小部分事实上的标准许可证管辖,这些许可证在各种项目中未经修改或定制地使用。 同样,开源许可证对项目社区的重要性超出了单纯的许可条款。 它们是“社区的宪法”,表达了这些社区的协作和道德规范。 因此,开源许可证充当共享资源。 这一特点使得许可证执行测试用例成为可能。
是否真的存在过开源许可证测试用例尚不清楚。 关于开源许可证的诉讼非常罕见(尽管它可能正在增加)。 大多数开源许可证合规性问题都是通过被许可人的自愿努力,或通过社区讨论或与许可人的友好协商来解决的,而无需诉诸法院。 开源许可证执行诉讼主要涉及 GPL 或 GNU 许可证系列中的另一个 copyleft 许可证。 由面向社区的组织提起的数量相当少的 GPL 执行诉讼——Harald Welte 的 GPL-violations.org 案例、自由软件基金会起诉思科、BusyBox 案例——主要涉及事实简单的“无源代码或报价”违规行为。 Patrick McHardy 提起的版权暴利诉讼显然并非旨在导致法院对 GPL 解释问题作出裁决。
一个值得注意的 GPL 执行诉讼,可以说具有测试用例的一些特征,是 Christoph Hellwig 在德国对 VMware 提起的现已结束的案件,该案件由软件自由保护协会资助。 Hellwig 案件显然是第一个 GPL 执行诉讼,其中提出了 GPLv2 下衍生作品的范围这一核心问题,这是一个核心的 copyleft 和 GPL 解释政策问题,也是一个在技术和法律界争论了几十年的政策主题。 Hellwig 和 Conservancy 可能希望在案情方面取得胜利将对长期以来受到许多 GPL 支持者批评的活动产生深远的监管影响,特别是使用 GPL 许可的“shim”层分发专有 Linux 内核模块的做法。 然而,Conservancy 本身也小心地淡化了 Hellwig 案件旨在作为“组合/衍生作品的伟大测试用例”的概念。 与涉及 Linux 的典型 GPL 合规性方案相比,Hellwig 案件的事实(涉及专有 VMware 内核和 GPL 许可的内核模块)相当不寻常。
一些开发人员和律师可能倾向于积极看待开源测试用例。 但这忽略了开源环境中测试用例诉讼的缺点,这是开源许可证作为共享资源的直接结果。 诉讼,无论是基于测试用例还是其他方式,都是追求开源许可证合规性的糟糕手段。 您可能会认为,如果开源许可证是共享资源,那么导致司法裁决的诉讼将通过提供对广泛使用的有限数量的许可证的更多法律确定性而受益。 但这基于对诉讼及其影响的不切实际的乐观观点。 鉴于开源许可证在很大程度上是一小部分广泛重用的许可证文本,少数个人采取的行动可能会对共享相同许可证的整个社区产生不利影响。
由法官在两方之间因一组独特的事实引起的纠纷中作出的法院判决是发生这种影响的一种方式。 该法官很可能对开源或技术一无所知。 法官的裁决将受到各方律师论证的影响,这些论证可能有动机提出与依赖相关许可证的社区的价值观和规范相冲突的法律论证。 诉讼当事人本身,包括寻求执行许可证的诉讼当事人,可能不分享这些价值观和规范。 法院超越诉讼当事人提出的论证的能力非常有限,并且使用许可证的项目社区的真正代表将没有有意义的机会表达他们的观点。
因此,如果许可证执行诉讼产生了一个对大型社区产生重大影响的糟糕决定,那么许可证使用社区可能会陷入该决定,而几乎没有好的选择来纠正这种情况。 在许多情况下,项目可能没有简单的途径迁移到不同的许可证,包括尝试纠正法院判决的已诉讼许可证的新版本。 可能没有许可证管理员,或者许可证可能无法促进下游的可升级性。 即使有许可证管理员,在自由和开源软件 (FOSS) 中,通常存在避免许可证修订的强烈社会压力。
测试用例诉讼不会免受这些问题的困扰; 它们的缺点在开源环境中被放大。 首先,测试用例可能由相关许可证使用社区中不受欢迎的许可证解释的支持者提起——我们称之为“糟糕”的测试用例诉讼人。 即使我们假设测试用例诉讼人的政策目标反映了许可证使用社区的真正共识——一个“好的”测试用例诉讼人——测试用例策略可能会适得其反。 该案件可能会导致与测试用例诉讼人所寻求的相反的裁决。 或者测试用例诉讼人可能会在事实上获胜,但在这一过程中,法院可能会发布一个或多个与测试用例诉讼人所希望的不同框架的裁决,可能对许可证解释产生意想不到的负面影响,或者对许可证合规性施加不良的新负担。 法院也可能以某种程序方式处理该案件,这可能会对许可证使用社区产生负面影响。
一个更根本的问题是,由于开源项目社区中对许可证解释的观点复杂而多样,我们实际上无法知道给定的测试用例诉讼人是“好”还是“坏”。 例如,一个在社区中普遍受到信任的组织可能会试图使用测试用例诉讼来推广与其普遍的社区观点或实践不符的高度限制性或字面解释的许可证。
与其通过测试用例诉讼来推行开源许可证执行政策,我们应该首先充分探索使用基于社区的治理方法来促进适当的许可证解释和合规性期望。 这将特别有助于表明,由受私人利益驱动的当事方在诉讼中提出的限制性或不自由的许可证解释在共享该许可证文本的更大社区中没有支持基础。 例如,我们可以记录和公布在社区中广泛接受的许可证解释,扩展一些许可证管理员已经完成的工作。 我们还可以促进对在不同技术环境中起草的广泛使用的许可证的更自由和现代的解释,同时仍然坚持其基本政策,目的是使合规性更清晰、更公平、更容易。 最后,我们应该考虑使用公开透明的许可证修订流程,为流行的许可证采用更频繁的升级周期。
评论已关闭。