开源≠自由,在使用开源软件可能会违规

2019-06-10

开源软件是提高生产力和软件质量的关键因素,正确的使用开源软件,可以提高产品的竞争力,但是在产品功能不断更新,开发周期不断缩短的压力下,难以有效的对代码中的开源软件进行有效的识别和管理而失去管理的开源软件可能会带来开源许可证违规等多种风险。那么,什么是开源许可证违规?开原许可证违规会给我们带来什么负面影响?开源许可证又有哪些?怎么有效地避免开源许可证违规呢?

1.开源许可证违规

大多数开源软件都有其发布许可,如果要使用这些开源软件,应当遵守其许可证(License)的要求,如果在使用开源软件时没有遵守其许可要求的各项义务,就是违规使用开源软件,会造成许可证合规性风险。开源许可证违规造成的影响可大小,严重时会导致法律诉讼,造成公司产品的召回,被迫开源自有知识产权代码等等,而这些事件还可能对公司的声誉,市场准入等造成长期的负面影响。

2.开源许可证

开源许可证,是一种允许源代码、蓝图或设计在定义的条款和条件下被使用、修改和/或共享的计算机软件和其他产品的许可证。目前经过OSI认证的开源许可证共有74种,而最重要的仅有6-10种(最最主要的2种:GPLApache)。在开源商业化的浪潮下,适度宽松的Apache等许可证更受欢迎这些许可证大致可以分为三类,

a、 传染型开源许可证(Copyleft,传染型开源许可证明确修改版本须以同一许可证发布,如果一个软件包含该协议下部分代码,完全发布时必须作为整体适用该协议,GNU General Public License Version 2 Version 3 (下称“GPL V2”“GPL V3”)作为传染型开源许可证给予任何人自由复制、修改和发布GPL代码的权利,但是作为回报,所有以GPL协议发布的源代码的衍生,也必须按照GPL发布。

b、 弱传染型开源许可证(Weak(Weak(Weak(Weak(Weak-CopyleftCopyleftCopyleftCopyleftCopyleftCopyleftCopyleftCopyleft),如果一个软件包含该协议下部分代码,完全发布时某些部分必须适用该许可证,其它部分可在其它协议下发布,如LGPLMPL等。

c、  获准型许可证,对已修改代码的许可方式没有任何要求,如BSD要求许可证附上许可证的原文以及所有开发者的版权资料,它允许原作品及修改版发行不公开源代码或以其它许可证发行。

广泛使用的开源许可证包括Apache-2.0, BSD-3-Clause, BSD-2-Clause, GPL,LGPL,MIT,MPL-2.0, CDDL-1.0, Eclipse 2.0.4

        i.  --GPL(GNU General Public LicenseGNU通用公共许可证):一种广泛使用的自由软件许可证,保证用户可以自由的运行、学习、分享和修改软件。许可证最初由自由软件基金会(FSFRichard StallmanGNU项目所撰写。GPL是一个非盈利版权许可证,要求衍生作品只能在相同的许可条款下发布。GPL的出发点是代码的开源使用和引用代码开源使用,不允许修改后和衍生的代码作为闭源的商业软件发布和销售。

       ii.  --LGPL(GNU Lesser General Public LicenseGNU宽通用公共许可证):一种由FSF颁布的自由软件许可证,允许开发者或公司在私有软件中使用,不要求使用LGPL许可代码的软件以LGPL方式发布。与GPL的强制性开源方式不同,LGPL允许商业软件通过类库引用的方式使用LGPL类库而不需要开源商业软件的代码。

      iii.  --BSD (Berkeley Software Distribution):允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件并发布和销售。

      iv.  --MIT License:允许开发者任意处置该软件,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的限制是,软件中必须包含许可提示。

       v.  --Apache License:一种由Apache软件基金会发布的自由软件许可证, 相对比较友好,被授权者可以发布商业化软件。

      vi.  --MPL (Mozilla Public License 1.1)MPL协议允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者。

    vii.  --CDDL(Common Development and Distribution License):CDDL开源许可证,是MPL的扩展协议,它允许公共版权使用,无专利费,并提供专利保护,可集成于商业软件中,允许自行发布许可。

   viii.  --EPL (Eclipse Public License 1.0 ):EPL允许Recipients任意使用、复制、分发、传播、展示、修改以及改后闭源的二次商业发布。

开源许可证的共同点是保留版权,差别是商业兼容性或共享权限不同。那么,该如何有效地避免开源许可证违规呢。

FOSSID 是一个软件解决方案,能够单独部署使用,也可以与现有的开发流程进行无缝集成,能够有效的检测到您的代码库中任何的开源代码痕迹,不论是整个开源组件的引用,还是仅仅引用了一小段代码片段。FOSSID 可以帮您有效的发现并展示出您的软件涉及到的开源License 及相关的合规性,也能够现并展示出这些开源软件存在的安全漏洞,帮助公司从开源审查这种繁杂的工作中解脱出来,将精力更多的用于如何为用户提供更有价值的产品。


注:文中部分素材来自于:中国信息通信研究院 ---《开源治理白皮书