开源软件的定义是什么?

发表时间: 2023-03-20 16:21
看到这个标题,可能很多朋友会觉得奇怪,这问题多简单,有什么好说的。确实这个问题对大部分人来说很简单,但是笔者发现,很多人并不清楚。以《大学化学》杂志最新的一篇教学论文为例,此文题目为《烯丙基正离子旋转异构反应的计算化学实验设计》,是一篇不错的论文。但美中不足的是,其中有一段关于软件的介绍如下:

“考虑到Gaussian和GaussView为收费软件,本实验也可以通过Chem3D、HyperChem等免费软件进行分子建模,使用开源软件ORCA、GAMESS-US、Dalton等完成量化计算。”

谈到了收费与免费的问题,可见这篇论文的作者是有版权意识的,但似乎功夫没下足。据笔者调查,Chem3D和HyperChem都是收费软件,而不是免费软件。我估计Chem3D多数朋友都是使用的破解版,而且网上相关资源很多,因此很多人可能下意识地以为这是个免费软件了。另外,后面三个软件都是免费软件,但其中ORCA是不开源的,而GAMESS-US我们也将在后文讨论。很显然,作者把“开源”和“免费”划了等号,其实两者是有区别的。开源简单地说是指开放源代码,往往也进一步指在遵守某种协议的前提下(如BSD、GPL、MIT等等),可对源代码进行传播、修改或把源代码移植其它程序等。免费自然是指不用付钱,但并不意味着能获得源代码。用开源来指代免费,是很多人平时用错的地方。

我们常见的量子化学软件采用的版权协议大抵有以下种模式:
1. 收费闭源,如Turbomole等。
2. 免费闭源,如ORCA等。ORCA对学术用户免费,但是我们也只能下载到官方提供的编译好的可执行程序,无法获得源代码。这类是出错最多的,笔者在QQ群、公众号后台、论坛、某乎等地方经常看到把ORCA说成开源软件的。
3. 免费开源,如PySCF、NWChem、OpenMOPAC等。如前文所说,开源软件也是有协议的,如PySCF遵守Apache开源协议,NWChem遵守ECL 2.0协议, OpenMOPAC遵守LGPL协议。最极端的情况是不遵守任何开源协议,称为公有版权(public domain),对用户的使用、传播不采取任何限制,例如OpenMOPAC前身MOPAC的7.0版本就采用了这种模式。

4. 收费,提供源代码(可能要支付额外费用),但不开源,如VASP、Molpro等。用户可以使用源代码进行编译,根据服务器具体的硬件来使用不同的编译选项,可以获得更高的效率。另一方面,也可以激励部分用户参与程序的开发和改进。但是与开源软件不同,这些软件的源代码是禁止外泄的,否则会陷入法律纠纷,因此不能称之为开源软件。NBO和Wien2k这两个软件对于学术用户的注册费很便宜,并且提供源代码,但是同样禁止传播,因此也属于这种情况。

5. 收费开源。常见的开源协议并未规定不能收费,因此有些开源软件的原作者为了维护程序和后续开发,会收取适当费用,著名的Red Hat操作系统就属于这种模式。曾经有个别图形界面软件和波函数分析软件也采用这种模式:如果用户下载可执行程序和请求技术支持,必须付费购买,否则只能从源代码编译。


了解了以上五种模式后,我们再来分析以下两个经常搞错的量子化学软件的版权情况:

1. Gaussian。首先它是收费的商业软件,但是也出售源代码,因此一般认为它属于第四种情况:收费,但提供源代码。不过,在包括中国在内的一些国家,Gaussian源代码是禁止出售的(虽然个别参与开发的课题组可能破例),于是又回到了第一种情况:收费闭源

2. GAMESS-US。GAMESS-US不收费,源代码也容易获得,因此经常被认为是开源软件。但是按照其主页的说法,GAMESS-US源代码是禁止传播的(The license ... prohibits you from making copies of the GAMESS code for any purpose except use at your own institution.),只不过作者们没有精力去管这事情。理论上讲,在没有获得授权的情况下把GAMESS-US源代码塞进自己的程序里,仍然有吃官司的可能。这更接近第四种模式,只是不收费而已


总结:免费软件不等于开源软件。开源软件必须满足以下两个条件,与是否免费无关(虽然大多数情况下是免费的):

1. 普通用户能够不受限地获得源代码(目前主要渠道是通过互联网免费下载,但在网速不高的早些年,可能要支付一些邮寄、存储介质等额外费用);

2. 在遵守某种协议的前提下,普通用户能够修改和传播源代码。

致谢
本文在完成初稿后,由beefly老师进行了大篇幅改写,在此表示感谢!