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

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

React的开源许可证

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

解读

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

  1. 如果被许可人对Facebook及其子公司、关联公司提出直接或间接的专利诉讼;
  2. 对其他方提起专利诉讼,且该专利诉讼全部或部分起因于Facebook、其子公司或者关联公司的任何软件、技术、产品或服务;
  3. 就React软件相关发起专利诉讼,起诉其他方。

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

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

  1. 被许可人使用React创造了竞争产品;
  2. 被许可人就专利侵权之外的事项起诉Facebook;
  3. Facebook作为专利诉讼(非因BSD+Patents license授权下的软件相关)的原告,被许可人反诉的情形。

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

质疑漩涡

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. 制定开源软件使用政策。

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

文/朱伟燕,ThoughtWorks中国总法律顾问


更多精彩洞见,请关注微信公众号:思特沃克

我们应该怎样使用开源软件相关推荐

  1. 开源软件License汇总

    开源软件英文为Open Source Software,简称OSS,又称开放源代码软件,是一种源代码可以任意获取的计算机软件,这种软件的著作权持有人在软件协议的规定之下保留一部分权利并允许用户学习.修 ...

  2. 提高mysql性能的开源软件

    今天发现一个开源软件,看介绍可以提高mysql的性能,这个东西就是Google的开源TCMalloc库,于是拿来装了下看看效果. 这个软件下载地址是:http://code.google.com/p/ ...

  3. 算法实现太难了?机器学习也需要开源软件

    作者 | Soren Sonnenburg等 译者 | 刘畅 出品 | AI科技大本营(ID:rgznai100) 导读:开源工具已经趋于成熟,这使其能构建大规模的自然场景下的系统.与此同时,机器学习 ...

  4. 视频数据处理方法!关于开源软件FFmpeg视频抽帧的学习

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 视频文件是多媒体数据中比较常见的一种,也是入门门槛比较高的一个领域.视频数据相关的领域 ...

  5. 在云中利用开源软件进行开发以提高创新能力

    企业可以在自己的云平台上利用开源软件开发应用程序以提高创新能力,而无需为创新支付更多的费用. 企业可以在自己的云平台上利用开源软件开发应用程序以提高创新能力,而无需为创新支付更多的费用. 在大多数企业 ...

  6. 开源软件与商业软件的选择

    这篇文章我已经思考和构思很久了.一直在写与不写之间犹豫.想写,只是希望自己能做个抛砖引玉的引子,能够引起大家足够的思考.不写,可以说不敢写,是因为自己阅历有限,很多地方也没有搞明白.而且开源软件和商业 ...

  7. 银行选型和排坑实战:用开源软件自建分布式数据服务平台

    来自:DBAplus社群 之前设计篇讲了数据拆分的方式.场景.优缺点以及实施步骤,偏方法与理论.技术篇会介绍分布式数据服务平台设计与实现,讲述如何通过技术手段解决数据拆分带来的各种问题,以及各中间件的 ...

  8. 2014年最热门的国人开发开源软件TOP100

    2014年最热门的国人开发开源软件TOP100 不知道从什么时候开始,很多一说起国产好像就非常愤慨,其实大可不必.做开源中国六年有余,这六年时间国内的开源蓬勃发展,从一开始的使用到贡献,到推出自己很多 ...

  9. 开源软件:信息共赢和开放心态

    每本软件的著作里,都会提到"开源软件",多数都会往哲学的层面上去解释,相当的形而上.我想,开源这回事,不就是大家把代码传到网上,给人下载学习,之后有了Linux,Apache一系列 ...

  10. 独家 | 建立软件的经济学分析框架,浅议开源软件的经济学特性(附图解)

    人类社会正在加速数字化.一个显而易见的事实是,人们生活.工作的方方面面都离不开各种各样的软件.不久以前,人们还不知道什么是软件:从今往后,软件正在吞噬整个世界[https://a16z.com/201 ...

最新文章

  1. 执行phpize Cannot find config.m4
  2. jodd-StringTemplateParser使用
  3. 【线性回归】面向新手的基础知识
  4. Cage验证码生成器快速上手
  5. Docker(二)-在Docker中部署Nginx实现负载均衡【完整教程】
  6. BZOJ 2460: [BeiJing2011]元素 线性基
  7. Kubernetes学习总结(16)—— Kubernetes 实战之部署 Redis 集群
  8. java大数 bigin_Java大数操作
  9. mysql 中空值平均_mysql中空值和null值的区别及处理方法总结
  10. linux下find用法 find -name *.so -exec ll {} \;
  11. C++基础::便捷函数
  12. 我做淘宝客的失败经历——不要怕员工偷师
  13. 硬盘柱面损坏怎么办_最靠谱的机械硬盘坏道修复工具一:DiskGenius
  14. linux关机会自动重启,linux——如何在linux下让系统定时自动重启(关机)
  15. android 多张图片渐变切换控件
  16. 智能车摄像头组怎么在OLED屏画出中线
  17. 成长,没你想象的那么迫切!
  18. 测试不同体重体型软件样子的,为什么有的人身高、体重相同,体型却不一样?这是体脂率在作祟...
  19. 习题3.6 阅读下面程序,分析其执行过程,写出输出结果
  20. PR字幕预设|视频文字闪烁标题闪动特效PR预设

热门文章

  1. 要电脑重装系统装在哪个盘最好
  2. Kubernetes 「驾驶舱」 kubectl 知多少?
  3. oracle 统计SQL
  4. 【STM32F407】第6章 ThreadX NetXDUO网络协议栈移植到STM32F407
  5. TCP服务器客户端编程流程
  6. Python-二分查找算法bisect模块
  7. java encoder 编码_URLEncoder.encode的默认编码问题
  8. 2021年安全员-C证考试题及安全员-C证考试报名
  9. java ffmpeg 合并视频_java使用ffmpeg进行多个视频合并
  10. python编程猜拳小游戏_python实现人机猜拳小游戏