尽管自由(free)/开源(open source)软件越来越为人所熟知和接受,但是许多人对于它们之间的区别并不清楚。还有很多人把与它们相对的另一个概念──私有软件 (proprietary software)错误地等同于商业软件(business software)。Free software Magazine第9期上Tom Chance的一篇文章Free, open or proprietary?,从哲学的角度分析了这三种软件许可证的区别。
私 有软件的目标在于“生产好的软件”,技术上是用版权来保护软件免受外来干扰,并保护软件作者的经济利益。虽然很多私有软件的支持者宣称版权的作用在于给予 软件作者以回报以及鼓励创造能力,但是取得回报这一点并不是私有软件与自由/开源软件的本质区别,因为很多私有软件是免费发布的(freeware),而 自由/开源软件也并不禁止取得回报。私有软件与自由/开源的本质区别在于它的支持者认为软件的高质量来源于封闭源代码,只允许被授权人士接触源代码。
开源软件的目标也是“生产好的软件”,但是采用的是与私有软件不同的解决途径。开源软件组织认为当程序员能够阅读、修改和传播源代码时,软件本身就得到了 进化,人们能够改进它、改造它、清除bug,而这些都能够比封闭源代码的开发方式更快地实现。开源软件倡导不受限制地使用、修改和发布软件,只是因为这样 能够产生更好的软件。
可见,开源软件与私有软件在目标上是一致的,只是实现的方式大相径庭。
自由软件的目标是创造能够实现某种社会自由的好软件。自由软件的目标主要出于伦理上的考虑,而不是从实用上考虑,软件是作为实现伦理目标的载体,这是私有软件和开源软件都没有涉及的内容。根据自由软件基金会的定义,自由软件要达成4种自由:
为任何目的而运行软件的自由;
研究其工作原理、修改之以符合自己需要的自由,接触源代码是实现这种自由的前提;
发布软件的拷贝以帮助他人的自由;
改进软件、向公众发布以使社会受益的自由,接触源代码是实现这种自由的前提。
因此,尽管看上去开源软件和自由软件都采用同样的开发方式,甚至共享许多开发人员,但是它们的目标是截然不同的。自由软件运动从本质上说是政治运动,着眼 点在于“自由”,而开源软件是从实用的角度将自由软件运动的载体当作了目标。为了实现商业推广的目的,开源软件刻意避开了自由软件的政治意味,转而把着眼点放在软件本身,强调软件实用性的目标。正是在这一点上,自由软件运动的领袖Richard Stallman(RMS)与开源软件运动的创始人Eric Raymond(ESR)产生了根本性的分歧,从而分道扬镳。