开源的概念
开源软件(Open Source Software)定义为其源代码可以被公众使用的软件,并且此软件的使用、修改和分发也不受普通商用软件许可证的限制,而是遵循专门的开源软件许可证的权利要求。
开源软件与免费软件、自由软件有相似之处,也存在区别。
1、开源软件在软件发行时,会附上软件的源代码,并授权允许用户自由使用该软件,可进行复制、修改、再发布等工作。开源软件不抵制商业收费,不一定全部都是免费的。开源的目的之一主要是通过更多人的参与来完善软件。
2、免费软件是免费提供给用户使用的软件。通常在免费的同时,会有其他限制,如源代码不一定会公开,使用者没有复制、研究、修改、再发布的权利。
3、自由软件体现的是倡导软件这种知识产品应该免费共享的社会运动,强调用户拥有如何使用软件的自由,包括自由地使用和学习,自由地分发和复制,自由地修改和再发行软件。自由软件是开源软件的一个子集,其定义比开源软件更为严格,体现了一种在道德精神层面维护用户使用软件自由的思想。在不刻意追究微小差异的情况下,可以认为开源软件和自由软件是两个等价的概念。
开源软件的核心是开放软件的源代码,但判断一个软件是否为开源软件,不仅要看它的源代码是否公开,还要看它在提供时所附带的许可证,也就是使用这些源代码的条款和条件。
开源许可证
所有的开源软件在发布时都会附带一个许可证协议,这是一种契约和授权方式,是用户合法使用软件作品的一个凭证。协议中规定了许可人和被许可人的权利与义务,通常包括以下内容:
·许可授予的对象;
·可使用软件的设备及地点;
·能够使用软件的范围(如能否继承许可等);
·是否提供源代码或目标代码;
·许可是独占的还是非独占的;
·被许可方能否转让许可证;
·许可的期限(可能是一段固定或不固定的期间,通常还应注明因被许可方出现某些违约行为或者被许可方破产而终止许可);
·保密条款;
·免责条款(通常是许可方加入的条款,用来免除或限制其对被许可方可能产生的责任)。
开源软件许可证是由开放源代码首创行动组织(OSIA)批准的软件许可证,目前,被OSIA批准的开源许可证已有60余种,并且还在不断更新,常见的包括GPL、LGPL、APL、MPL、BSD等。
开源软件与商业软件的对比
开源软件与普通商业软件的区别主要在于所许可的权利内容不同,以及许可证的使用模式不同。两者的对比情况如下。
|
开源软件 |
商业软件 |
提供者是否享有版权 |
享有 |
享有 |
是否提供源代码 |
保证提供 |
不一定 |
复制和传播发行权 |
向公众开放 |
权利人保留 |
修改和衍生权 |
向公众开放 |
权利人保留 |
收取许可费 |
一般不收取 |
一般要收取 |
开源软件与普通商业软件的对比
商业软件一般采用卖许可(License)的方式销售其产品。但在实际使用中,一些大型公司由于业务的增长,服务器会变得越来越多,购买大量License将成为一笔不小的开支,因此通常会选择开源软件完成开发工作。同时,任何软件都存在这样或那样的Bug,普通商业软件存在版本升级周期不确定、无法做出具体承诺等问题,而开源软件可以由开发团队直接修改其源代码,通过重新编译来修复错误。
开源软件的主要意义在于让软件这种人类智慧的载体得到更大范围的使用,它允许使用者在原有的基础上,根据自己的需要对软件进行定制化开发和改进,既充分复用已有的开发成果,避免重复劳动,又能加入新的理念,进行二次创新。开源软件的使用成本较低,能够让更多的人参与进来,从而及时发现和修补软件中存在的漏洞,产生更加优秀的软件。对于开放平台,开源软件能够促进产业链上的合作,让合作伙伴基于现有软件开发更多的新业务、新产品,形成事实标准,降低平台的整体开发和运营成本。
但同时,开源软件的漏洞也容易被用来制造病毒,带来安全隐患。开源软件大多依靠开源社区来支持,没有明确的商业目标和利益驱使,不同开源软件的开发程度参差不齐,用户体验考虑不足,缺少品质承诺和服务。因此需要采取一定的管理方法,充分运用开源软件的便利性、易于迭代等优势,同时处理好可能存在的安全性和可靠性风险。