本文首发于微信公众号“云端数据IP法律观察”(ID:YDdatalaw)

什么是开源?

如果企业需要开发一款软件产品(如App)应该怎么办?

是程序员们从零开始一行一行的编写代码吗?这听起来似乎不现实。

大部分企业在开发软件时,通常会选择对他人已经编译好的代码进行修改,最后形成自己的软件产品。

但是编写代码和写文章一样,都是创作的过程,所以程序员所编写的代码和文章一样,都属于《著作权法》中的作品,享有著作权。

也就是说,企业如果在没有经得作者本人同意的情况下,擅自使用他人的代码来开发自己的软件产品则会构成著作权侵权。

而开源即是作者将代码公开,并且通过开源许可协议的形式许可其他人使用、复制、修改代码。

因此企业就可以在接受开源许可协议的情况下使用开源的代码开发软件产品。

例如在支付宝中就使用了多达40款不同的开源软件。同时在下图的许可证一栏我们也能够看到,支付宝在开发过程中接受了多种不同的开源许可协议。


开源许可协议有哪些类型?

开源许可协议是涉及各种版权、商标、专利等权利义务的格式协议。

每一个开源软件发布后,通常都会在readme等文件中附上开源许可协议。

在企业使用开源软件进行软件开发时,附带在开源软件中的开源协议即自动生效。

常用的开源许可协议包括:GPL、BSD、MIT、MPL、Apache、LGPL等。

每个开源协议对权利义务的约定各不相同,既有BSD、MIT这种对被许可人限制较少的开源协议,也有GPL这种对被许可人限制较多的开源协议。

企业使用开源软件的法律风险

1.无视开源协议使用开源软件导致侵权

开源软件并不是想用就用,不受任何限制。

在前文提到,每一个开源软件中都附带了开源协议,并且在企业使用开源软件时,即视为已经接受了开源协议。

如果企业的技术人员在使用开源软件为企业进行软件开发的过程中,忽视了开源软件所附带的开源协议,随意的使用开源代码,那么企业的最终的软件产品可能会因为违反开源协议而出现知识产权侵权问题。

例如GPL协议要求,只要在一个软件中使用GPL协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。

即企业的软件若使用了带有GPL协议的开源代码,但是在软件开发完成后不对软件开源,那么就可能违反GPL协议的要求,导致侵犯著作权人的权益。

例如在开源项目SeaweedFS的作者Chris Lu控诉京东TigLab项目涉嫌抄袭代码事件中,Chris Lu发文表示京东的项目使用了他的开源代码,但是没有根据Apache-2.0协议的许可条款添加引用说明,侵犯了自身的合法权益。

虽然此后京东也积极的向Chris Lu道歉,但是此类事件对于企业的社会形象来说是一个巨大的打击。

2.开源许可协议之间不兼容导致侵权

再以GPL许可协议为例,GPL协议要求“用户必须以该许可协议的许可条款发布整个程序的源代码”,而MPL协议要求修改作品“受到本许可协议的条款管辖”。

可以看出这两个条款实际上是相互矛盾的,所以企业在使用同时附带GPL和MPL开源协议的开源软件时,就可能因为开源协议的冲突,面临必须会违反其中一个协议的困境。


幸运的是,自由软件基金会发布了一个与GPL兼容或不兼容的许可协议列表,大家可以通过下述链接自行查阅。(http://www.gnu/licenses/license-list.html)

企业防控开源软件法律风险的建议

即使企业没有发布任何开源项目,也会可能使用到开源软件。

有意识的且及时处理可以避免很多麻烦,如产品延迟发布和诉讼等。

但做好开源软件风险防控不仅是一个部门的事,需要法务部、技术部等多个部门的相互协作。

1.法务部门的职责

(1)准确解读协议

法务人员应当对目前所有的开源协议进行准确解读,对于企业使用开源协议的风险作出系统的评估。

(2)及时的对技术人员进行培训

在企业有使用其他开源软件进行软件开发的需求时,法务人员应当及时对技术人员进行开源协议内容培训,确保技术人员在开发软件的过程中不随意使用他人的开源代码。

(3)根据企业的实际情况制定使用开源软件的策略

法务部门应当根据企业的实际情况制定使用开源软件的策略,明确在软件开发的过程中可以使用哪些开源协议,不能使用哪些开源协议。

避免开源协议冲突以及开源协议对软件的限制违背企业的商业目的等情况的发生。

例如,由于GPL协议要求使用了GPL类库的软件产品必须开源,如果企业需要开发一款闭源软件或者对代码有保密要求,那么企业在开发软件的过程中就不适合使用附带GPL协议的开源代码。

(4)监测适用于企业的开源协议

开源许可协议并非一成不变。

法务人员应当对企业软件产品中使用的开源协议进行实时的监测。

在开源协议做出改变时,法务人员应当及时做出应对措施。

例如在2016年7月,Facebook在React.js的开源许可协议中添加的附加专利条款,并在之后发表了一篇关于React.js使用许可协议的官方声明,称任何人不能将React.js用于Facebook及其合作公司有直接或间接竞争关系的项目中,否则Facebook公司自动取消其使用许可。

面对如此霸道的开源协议,百度为了防止公司的利益受损,即决定在内部全面禁止使用React/React Native。

2.技术部门的职责

(1)不使用来源不明的代码

某些来源不明的代码本身就存在知识产权瑕疵,技术人员使用此类“不清洁”的代码将会加大企业的侵权风险。

技术人员应当使用来自GitHub等正规开源托管网站的代码。

(2)技术部门应当建立开源代码使用备忘录

技术部门应当在使用开源代码开发软件时,准确的对开源代码的来源、名称、使用许可协议类型等信息进行记录,便于日后的风险审查。

同时也能便于法务部门对软件中使用的开源许可协议进行实时的监控。

更多推荐

开源软件的法律风险及防控