这里是普通文章模块栏目内容页
我们应该怎样使用开源软件

开源是近年来大火的词汇。自2017年7月Facebook的React开源软件被Apache基金会宣布禁止使用、百度也宣布全面停止使用以来,开源软件的合规性使用引发了大家的关注。

我们以React为例,看看开源软件的坑在哪里。

开源软件

一、React的开源许可证

React最初的开源许可证为Facebook 在BSD许可证基础上附加了专利防御保护条款,即BSD+Patents license。

1. 解读

原许可证在著作权授权使用(BSD)的基础上添加了防御性专利侵权条款(Patents),写明在以下三种情况下Facebook授予被许可人的专利权将被撤回:

如果被许可人对Facebook及其子公司、关联公司提出直接或间接的专利诉讼;

对其他方提起专利诉讼,且该专利诉讼全部或部分起因于Facebook、其子公司或者关联公司的任何软件、技术、产品或服务;

就React软件相关发起专利诉讼,起诉其他方。

通俗的可以理解为:只要因为你提起专利诉讼,让Facebook成为被告或者第三人,Facebook都可以撤回React的专利授权。

许可证及后续Facebook的答疑中明确专利权在以下情形下不会被撤回:

被许可人使用React创造了竞争产品;

被许可人就专利侵权之外的事项起诉Facebook;

Facebook作为专利诉讼(非因BSD+Patents license授权下的软件相关)的原告,被许可人反诉的情形。

另外,Facebook也明确了专利授权的终止并不会导致著作权许可的终止。

开源软件

2. 质疑漩涡

Apache基金会在2017年7月禁止Apache 产品中使用遵循BSD+Patents License的JAR包。质疑漩涡进一步发酵,社区激烈地质疑Facebook违背了开源的精神。

虽然并没有现成的案例可以支持。然而,引起大家担忧的是从许可证文本约定来看,如果某公司强依赖性使用React,则Facebook可以自由使用该公司的所有专利。因为只要该公司发起对Facebook的专利诉讼,该公司的React的专利授权就会被撤回。

在持续发酵的情况下,Facebook承诺更换许可证,并于9月26日遵守承诺在发布React16时更换为MIT许可证。然而,对Facebook还坚持使用原许可证的开源项目,仍然应该引起关注。总体而言,React许可证的更换不仅是开源社区的一次胜利,更是提高了企业、开发者对许可证重要性的认识、起到了警示作用。

二、如何正确使用开源软件

1. 关注开源软件使用的合规性

同开源软件的广泛使用相对应,开源许可证的遵守情况却不容乐观。从法律的角度来讲,使用者自引入某开源软件的时刻起,其开源许可证将自动适用。使用者如未履行许可证规定的义务(如加入版权说明),即构成侵权,或者违反契约(合同)的行为,并因此可能造成许可证的撤回并承担相应的赔偿责任。

例如Netfilter核心开发者团队的 Patrick McHardy,以违反GPL许可证为理由,在德国威胁超过80家公司,并谋利约200万欧元。事后Patrick McHardy被定义为“GPL谋利-版权谋利者”。2016年12月16日美国的软件自由法律中心(Software Freedom Law Center)起诉包含三星在内的14家厂商违反GNU许可证。在中国国内,小米公司也因屡次违反开源协议而被社区指责。从以上案例中也可以看出国内外企业对开源许可证的义务、法律责任均认识不足。

综上,未按照开源许可证约定使用开源软件会引发潜在的法律纠纷,或者给企业带来名誉损失。因此,企业在使用开源软件时应建立审查制度。依据开发软件的用途、目的、市场等情况判断是否引入某开源软件。

开源软件

软件开发服务提供者而言,应首先关注同客户的合同约定,在合同约定可以使用的前提和范围下,尽到对客户的通知义务或取得客户的书面同意。以避免因为使用开源软件导致的合同违约或者被追偿。

2. 关注开源软件使用的安全性

开源软件由于贡献者的能力不同导致可能存在安全漏洞。因此,开发者在享受开源软件的便利时,应注意漏洞的识别,并采取相应的代码安全审计,并将已披露漏洞及修复方案及时告知客户。

3. 制定开源软件使用政策

如果公司在业务中大量采用开源软件,则制定并执行开源使用政策就变得尤为重要。根据公司业务的不同,政策可以涵盖公司对开源的态度(是否支持,创建社区还是加入某社区)、哪些应用可以开源,哪些应用可以使用开源软件;哪些许可证类型的开源软件可以使用、审查流程等。从而最大限度的避免公司的知识产权侵权风险。

【本文是51CTO专栏作者“ThoughtWorks”的原创稿件,微信公众号:思特沃克,转载请联系原作者】

戳这里,看该作者更多好文

【编辑推荐】

外媒速递:2018年值得持续关注的15位软件开发影响力领袖

嵌入式开源软件的十大弊端

外媒速递:要成为真正的软件开发者,这七本英文论著不容错过

外媒速递:2018年最值得关注的五大软件开发趋势

React Native组件集成到Android原生项目

收藏
0
有帮助
0
没帮助
0