开源软件即一种依据开源许可证来公开或释出源代码的计算机软件,而在开源许可证中,开源软件的版权持有人授予用户可以学习、修改开源软件,并向任何人或为任何目的分发开源软件的权利。开放源代码是开源软件的首要特征。开源软件通过在网站上公开源代码,使得公众(主要是软件开发者)可以下载使用、复制、修改源代码,进而发布(免费/少许收费)基于源代码的软件。与开源软件相对应的是商业闭源软件,该类软件的源代码往往不公开,使用者只能在许可证允许的范围内使用软件[1]。
![开源软件 开源软件](//ziboxinyan.com/FileUpload/ueditor_s/upload/2022-4/19/6378598520759326159553069.png)
开源许可证通常具备以下10个特点:
(1)免费重新发行。当软件是来自不同来源的程序集成后的软件发行版本中的其中一个组件时,许可证不能限制任何团体销售和分发该软件,并且不能向这样的销售或分发收取许可费和其它费用。
(2)源代码。程序包含源代码,并且必须允许以代码或已编译的形式发布。
(3)衍生产品。许可证必须允许修改原产品和衍生产品,并且必须允许在与原始软件相同的许可情况下发布修改过的产品。
(4)源代码完整性。许可证可以禁止他人以修改过的形式发布源代码,只在该许可证基于修改程度的目的时,才允许随源代码发布“补丁文件”。许可证必须明确允许发布根据修改过的源代码构建的软件。许可证要求衍生产品必须附加不同于原始软件的名称或版本号。
(5)不得歧视任何人和团体。许可证不得歧视任何人和任何团体。
(6)不得歧视任何特定用途。许可证不得禁止任何人在特定领域内使用某一程序
(7)许可证发布。附加在程序上的权利必须应用于那些重新发布程序的人,无需通过其它人额外加以许可使用。
(8)许可证不得专属于特定产品。附属于程序的权利不得仅限于作为特定软件发行版一部分的程序。
(9)许可证不得对其它软件加以限制。许可证不得对与已许可软件一起分配的其它软件附加任何限制。
(10)许可证必须技术中立。任何许可证都不可以基于单独的某项技术或界面风格[2]。