当自由软件并非(实际意义上)更优时

开放源代码促进会的使命宣言写道:“开放源代码是一种软件开发方法,它利用分布式同行评审和过程透明度的力量。开放源代码的承诺是更好的质量、更高的可靠性、更大的灵活性、更低的成本以及结束掠夺性的供应商锁定。”

十多年来,自由软件基金会一直反对这种对自由软件运动的“开放源代码”描述。自由软件倡导者主要反对这种框架,因为“开放源代码”是明确淡化我们自由核心信息并模糊我们的运动在构建的软件中所起作用的努力。我们认为“开放源代码”本质上是糟糕的,因为它试图阻止人们谈论软件自由。但是,我们应该对开放源代码框架保持警惕还有另一个原因。正如上述使命宣言中引用的那样,基本的开放源代码论点通常是不正确的。

尽管开放源代码促进会认为“开放源代码的承诺是更好的质量、更高的可靠性、更大的灵活性”,但这一承诺并非总是能够实现。尽管我们不经常宣传这个事实,但任何早期自由软件项目的用户都可以解释说,纯粹从实际角度来看,自由软件并不总是像其专有竞争对手那样方便。自由软件有时质量不高。它有时不可靠。它有时不灵活。如果人们认真对待支持开放源代码的论点,他们必须解释为什么开放源代码没有实现其“承诺”,并得出结论认为专有工具将是更好的选择。我们没有理由必须这样做。

理查德·斯托曼在他的文章《为什么开放源代码没有抓住重点》中谈到了这一点,他解释说:“开放源代码的想法是允许用户更改和重新分发软件将使其更加强大和可靠。但这并不能保证。专有软件的开发人员不一定无能。有时他们会制作出强大而可靠的程序,即使它不尊重用户的自由。”

对于开放源代码而言,质量差的软件是一个需要解释或避免使用该软件的问题。对于自由软件而言,这是一个需要解决的问题。对于自由软件倡导者来说,故障和缺失的功能永远不是羞耻的根源。任何尊重用户自由的自由软件都比不尊重用户自由的专有竞争对手具有强大的内在优势。即使它有其他问题,自由软件始终拥有自由。

当然,每个自由软件都必须从某个地方开始。例如,一个全新的软件不太可能比已建立的专有工具更具功能性。项目开始时有很多错误,并且会随着时间的推移而改进。尽管开放源代码倡导者可能会认为一个项目会随着时间的推移并凭借运气而变得有用,但自由软件项目对于自由软件倡导者来说,从第一天起就代表着重要的贡献。每个让用户控制其技术的软件都是向前迈出的一步。随着项目成熟而提高的质量是锦上添花。

第二个,也许更令人震惊的事实是,开放源代码定义的中心——协作、分布式、同行评审的开发过程与绝大多数使用自由(或“开放源代码”)许可证的项目中的软件开发实践几乎没有任何相似之处。

几项关于自由软件托管站点 SourceForge 和 Savannah 的学术研究表明,许多将代码库放在网上的自由软件开发人员已经亲身体验过。绝大多数自由软件项目并非特别协作。SourceForge 上自由软件项目的中位贡献者数量是多少?一个。一个单独的开发人员。按参与者规模排名 95% 的 SourceForge 项目只有 5 个贡献者。超过一半的自由软件项目,甚至大多数已经成功发布多次并被频繁下载的项目,都是一个开发人员在没有外部帮助的情况下完成的。

通过强调协作开发和“分布式同行评审”的力量,开放源代码方法似乎对为什么应该使用或贡献绝大多数自由软件项目没有什么可说的。因为当没有协作时,协作的所谓好处无法实现,所以绝大多数自由开发项目在技术上相对于专有竞争对手没有任何优势。

对于自由软件倡导者来说,这些相同的项目都被视为重要的成功案例。因为每个自由软件都尊重用户的自由,所以软件自由的倡导者认为,每个自由软件都比专有竞争对手(即使是功能更强大的竞争对手)具有内在的伦理优势。通过强调自由而不是实际优势,自由软件的倡导根植于技术现实,而开放源代码通常不是这样。当自由软件更好时,我们可以庆祝这一事实。当它不好时,我们不必将其视为对自由软件倡导的致命批判,甚至不必将其视为反对使用相关软件的有力论据。

开放源代码倡导者必须为他们的论点辩护,即自由开发的软件应该或者会随着时间的推移而比专有软件更好。自由软件支持者可以改为问:“我们如何使自由软件更好?”在自由软件框架中,高质量的软件是一种实现目的的手段,而不是目的本身。自由软件开发人员应努力创建功能强大、灵活且能够很好地为用户服务的软件。但是这样做并不是实现一个更容易且更深刻的目标的唯一方法:尊重和保护他们的自由。

当然,我们不需要拒绝协作可以在创建高质量软件中发挥重要作用的观点。在许多最成功的自由软件项目中,它显然已经做到了这一点。协作的好处成为需要理解、支持和努力实现的东西,而不是在证据拒绝符合意识形态时理所当然的事情。