自由软件

“不自由,毋宁死”(Give me liberty or give me death),可能在当下是一种很夸张的说法。自由的定义有很多争论,在实际操作时人们也往往按照自己的理解行事。在软件行业,自由则有非常清晰的定义。我所赖以生存的技能无不拜自由软件(free software)所赐。

自由软件,是指使用了 GPL 协议的软件。简单来说,它允许软件的使用者随心所欲的运行软件。关于代码的唯一约束是有任何修改,发版也必须按照遵守 GPL 协议,成为自由软件。许多著名的软件如 Gcc,Linux 等等都遵守 GPL。

需要额外声明的是,自由不等于免费,尽管二者在英语中均可使用 free 一词。GPL 协议没有对销售行为作出约束:只要你愿意,你可以售卖软件。但是由于 GPL 规定了使用者可以自由使用,他完全可以转赠他人。从这一点来说,收费难度其实很大。

这个协议最有趣的地方在于它唯一的约束是为了让它自己不被称为商业软件的一部分,从而避免软件无法自由使用。如果缺失了这条约束,自由这个核心议题也就无从谈起。我把这个约束理解为使协议本身不至于崩坏的最小前提。

赋予自由的使用权,意味着只要有人将其应用至各种场景,它会朝着各种场景趋近。结果必然是百家争鸣式的繁荣。任何微小的改进都必然会反馈至各个版本中,从而为软件提供了足够的变异因子,进化也就会持续下去。事实上,自由软件最大的意义就在于保证代码开源,即软件的源代码可供任何人阅读和修改。