区块链、人工智能、大数据、云计算、虚拟现实、移动互联网、互联网,这些现在或者曾经炙手可热的风口背后有一个共同的名字:开源软件[1]。开源软件倡导开放自由的开源精神,使得开源软件成为近二十年推动科技行业进步的重要动力。但是,企业在引入开源软件进行项目研发过程中,将会不可避免地面临诸多知识产权上的问题。本文以开源软件领域发生过的知识产权典型案例为基础,探析开源软件的许可证问题和专利侵权风险问题。
一、开源软件面临的知识产权问题
(一)开源软件的定义
引起业界关注“开源软件”的定义是1997年埃里克斯蒂芬雷蒙( Eric Steven Raymond)发表的一篇论文《大教堂与市集》( The Cathedral and the Bazaar),他在论文中提出了“大教堂模式”和“市集模式”两种软件开发模式,前者在软件在发布后才公开源代码,由一个团队控制每个版本的开发;后者软件在开发过程中就披露源代码,允许其他人检查和修改[2]。
其中,开源软件属于“市集模式”的软件开发方法。开源软件也称为开放源代码软件,其特点是软件的源代码可以获取,软件的使用者在规定的许可协议下可以获得软件的部分权利,例如复制,修改和重新发布等,这样就使得开源软件能够集大家之所长,不断地改进、优化、提高质量[3]。
(二)开源软件面临的知识产权问题
图2 开源软件的知识产权问题
1.著作权(版权)
形式上,开源软件是许多开发者的协同工作成果;实质上,开源软件是汇编作品。开源软件权利人通过许可证条款有条件的放弃一些权利,如复制、修改和重新发布,但仍享有其他权利,例如署名权等。如果再分发的开源软件仅表达再分发作者自己的信息,但不保留原始软件开发者的信息,原始开发者的署名权就会受到损害。
2.专利
专利不同于版权的地方在于,专利要求公开技术方案,而软件的源代码不必公开。而开源软件倡导“自由共享”,只有将源代码开放,保证软件的代码可以被所有人使用、学习和再创作,才能保证软件的持续发展。所以,专利保护了开源软件的方法和功能,著作权保护了开源软件作品的表达。同时,一些开放源代码软件许可证中明确声明,免费授予包含在该开源软件中的专利权,但一些开放软件许可证中未明确表达这一点。
3.商标
许多开源软件都有注册商标,如Linux,Android等。公开源代码并不代表开源软件权利人许可使用其商标。因此,在没有得到开源软件商标权利人的许可下,不可贸然使用其商标。
4.商业秘密
开源软件涉及的技术并非全部都是公开的,其中源代码是向使用者公开的,但是类似于技术诀窍、熟练技巧、工程经验、测试分析等工程化实现技术,则往往是不公开的。开源软件使用者如果从非正常渠道获得此类未公开的工程化实现技术,满足“不为公众所知悉”的条件,要注意侵犯商业秘密的可能性。
二、开源软件许可证
(一)许可证是开源软件的一种特殊保护模式
许可证是开源软件在自身的发展过程中出现的一种特殊保护模式,它通过提前签署权利与限制条款来促使开源软件正常有序的发展,它也是开源软件保护自身的核心保护方式。另外,可以从“软件权利人是否提供源代码”和“开源软件是否附带许可证”两个基准来判断一份软件是否为开源软件。
(二)开源软件许可证实质是一种软件著作权许可合同
研究人员对开源软件许可证的法律性质有不同的看法。美国旧金山联邦地区法院在2006年的Bob Jacobsen起诉Matt Katzer案例中认定,Matt Katzer因为不披露原始代码作者Bob Jacobsen信息,没有遵守开源协议,认为这只是“违反契约”(a breach of the licensing agreement),而不是“侵犯著作权”(copyright infringement)。但是,Bob Jacobsen不服判决,继续上诉,于2008年在联邦上诉法院成功翻案。联邦上诉法院认定,Matt Katzer违反开源协议,即侵犯了著作权。由此,开源软件许可证是一种软件著作权许可合同的观点被大家所接受[4]。
(三)开源软件许可证可能会附带权利不平衡条款
开源软件附带的许可证可能会附带例如权利不平衡的问题。例如Facebook的BSD+ Patents许可协议,就是一种典型的“单边优惠协议”,大致内容是使用基于Facebook BSD+ Patents协议的开源项目的开发者,未来要是基于BSD+ Patents协议的开源项目因为专利问题与Facebook产生纠纷,那么Facebook将有权停止开发者使用该开源项目,也就是说如果开发者起诉Facebook,那么开发者所使用Facebook的开源技术开发的产品要么得停用,要么得用别的技术迁移重构,这对企业来说是一个重大的灾难[5]。
三、许可证之外的专利风险考量
(一)使用开源软件是否意味着不会侵犯专利权
开源软件开发者经常会有这样的疑问:软件都开源了,软件的源代码都免费提供了,怎么还会侵犯专利权。其实这个问题很好弄清楚,开源软件的确开放源代码了,但也只是开源软件权利人在著作权方面许可给了开发者一些权利,如复制、修改、重新发布等。而在开源软件权利人拥有的商标、专利、商业秘密等权利方面,没有做出相应的许可,所以开放源代码和侵犯专利权是两套权利体系下的两种情况,自然就不能将免费使用开源软件和侵犯专利权混淆为一个问题。
(二)开源软件能否申请专利
情形一,如果只是将开源软件看成:开源=代码+文档。仅仅是将开源软件的代码和文档去申请专利,那么根据专利法第二十五条第一款第二项,智力活动的规则和方法不属于专利保护的客体,将不会获得专利授权。
情形二,如果将开源软件理解为:为了解决新的技术问题,采用了新的技术手段,达到了新的技术效果的专利技术。这种涉及到开源软件的专利是有可能会获得授权,因为开源软件本身也是一种技术手段。而且,在开源软件专利权利要求的撰写过程中,根据2017年修订后的审查指南规定涉及计算机程序的装置权利要求“不仅可以包括硬件,还可以包括程序”,明确“程序”可以作为装置权利要求的组成部分[6]。
所以,对于开源软件来说,仅仅是单独的“代码或文档”是不能申请专利的,“代码或文档”会有另外的著作权来保护。如果是专利申请的技术方案中是用到了开源软件,其发明创新点不在计算机程序代码本身,那么是可以申请专利的。
(三)开源软件在什么地方可能发生专利侵权
1.站在开源软件使用者的角度看
企业在软件项目开展过程中引入开源软件,其目的是为了“不要重复造轮子”,从而节约企业大量的人力和时间。但是,企业在使用开源软件的过程中,可能会遇到专利侵权问题。最典型的案例是SCO公司发起的Linux专利侵权纠纷。SCO公司是一家Unix系统开发商,因为IBM公司贡献给开源Linux操作系统的Unix组件可能侵犯SCO公司的专利权,于2003年3月8日起向IBM以及Linux操作系统的用户发起专利侵权诉讼。如果SCO公司的专利侵权指控成立,那么Linux操作系统的合法性将受到质疑,而且开源Linux操作系统的用户也将面临专利侵权风险[7]。
最终,SCO公司在开源软件业的强烈抵制和长期诉讼拖累下,于2007年申请破产。2011年4月,UnXis收购SCO Group,将它更名为TSG Group。2012年8月,TSG Group申请破产。虽然这个案例以原告SCO公司破产而终结,但是这起诉讼提醒了以Linux代表的开源软件用户,使用开源软件会有专利侵权的风险。
除此之外,开源软件使用者还应关心是否侵犯第三方的专利权,例如微软相对于开源的安卓(Android)系统就属于第三方。安卓(Android)系统最初由安迪·鲁宾等人开发制作[8],于2005年被Google收购后开源。微软为了能在移动端市场分一杯羹,就利用自身拥有的基础专利收取专利许可费。微软所拥有的基础专利例如(US6909910B2),名称为“用于管理对联系人数据库更新的方法和系统”。其专利公开的技术方案为:用于更新联系人并且添加来自通信设备中的呼叫日志的新联系人的系统和方法。包括联系人管理器,该联系人管理器能够对联系人数据库中的呼叫联系人卡片进行创建和更新,该联系人数据库具有从通信设备进行的呼叫日志中检索的信息。
图4 US6909910B2专利附图
2.站在开源软件所有者的角度看
开源软件所有者秉承开源精神,将软件代码公开并贡献给公众无偿使用。但是,开源软件所有者在将软件开源时可能会遇到专利侵权问题。最著名的案例莫过于2011年大神约翰•卡马克(John Carmack)和所在公司ID Software准备将DOOM3引擎(ID Tech4)开源化[9],却遇到有人声称拥有引擎中某部分技术的专利。所以,约翰•卡马克不得不推迟了源代码发布时间。
图5 约翰•卡马克(John Carmack)
其中,阻碍约翰•卡马克准备开源专利为William Bilodeau和Michael Songy在2002年申请的一项美国专利(US6384822B1),名称为“使用阴影体积和模板缓冲区渲染阴影的方法”,其专利公开的技术方案为:在3D图形场景中进行实时阴影渲染的方法使用倒置的z-测试来在模板缓冲区中标记阴影区域。在渲染场景之后呈现正面和背面阴影体多边形,并且当新z检验通过时,相应的模板缓冲器条目递增,以查看背面多边形的像素,并且当新z-检测器被传递时针对像素观看递减的正面多边形,测试通过。对于深度(z)值大于存储的z相应深度值的像素,传递新的z检验。
图6 US6384822B1专利附图
然而,被人声称拥有Carmack's Revers技术的专利,实际上却是ID Software始创人之一约翰•卡马克(John Carmack)用自己名字冠名的技术,也是约翰•卡马克(John Carmack)的ID Software公司在项目进行中独立研发的算法,结果在自己的软件准备开源时被认为侵犯了专利权,无形中给ID Software公司带来了一定的法律风险。
开源软件在公开时遇到这样的专利侵权风险问题时,一般的做法有:第一种是取消开源计划,违背了项目设立的初衷。第二种是把“疑似侵犯专利”的部分去掉,然后再开源,这样会影响整个开源软件的效果。还有第三种大神级的做法,即约翰•卡马克(John Carmack)做法,就是把“疑似侵犯专利”的相关技术用另外一种替代方案重新改写,然后再开源[10],这需要开源软件所有者对相关的技术非常了解,在各种技术间游走又不会遗留风险,而且增加了时间成本。
最后,站在开源软件所有者的角度看,就算开源软件中所有的代码都是开源软件所有者写的,所有的技术都是开源软件所有者研发的,但是不代表其它人不能用开源软件所有者的技术申请专利。可以看出,开源软件公开时也会暗藏专利侵权风险。
四、开源软件专利风险规避建议
(一)使用开源软件注意知识产权风险排查
从开源软件使用者的角度讲,在使用开源软件时要注意知识产权风险排查。具体而言,可以关注以下几点:
1.加强对开源软件源代码的监控
从技术层面上来讲,加强对开源软件源代码的监控,特别是自身开源项目中已经用到的源代码和即将流入到开源项目的源代码,一旦发现有侵权风险(例如相关源代码曾经发生过专利侵权诉讼),要及时采取删除或替换措施。
2.尽早排查开源软件中的疑似侵权风险
从项目管理层面来讲,为了避免开源项目遭遇知识产权风险使自己处于被动的局面,企业在开源项目研发过程中,需要尽早进行知识产权风险排查,梳理开源项目风险点,采取相应的预防和应对措施。
3.申请专利作为防御
从知识产权保护角度来讲,无论是开源软件许可人和被许可人,都可以在申请软件专利之后再在许可证下发布软件,同时明示免费授权给软件使用者,这样能够预防相关技术被别人申请专利,从而使自身面临知识产权风险。
4.公开软件开发思路,增加他人相关专利申请难度
从商业策略来讲,如果能够尽早在公共论坛等公众媒体公开软件的开发思想或者修改思路,就可以对相关软件技术在申请专利时增加难度,从而减小专利侵权的可能性。
(二)软件开源时注意保护商业秘密
从开源软件所有者的角度讲,在选择开源软件的源代码时,注意保护类似于技术诀窍、熟练技巧、工程经验、测试分析等商业秘密。同时,在选择公开软件的源代码时,可以在许可证条款中明示软件涉及到的专利技术免费授予给开源软件使用者。
五、总结
综上所述,开源软件的知识产权风险是世界级现象,它有其不可避免的根源。从根本来讲,无疑还是利益之争,而专利是很重要的一种让自身利益最大化的无形资产。其中,开源软件的代码和文档不能申请专利,但是专利申请的技术方案中涉及到开源软件,也是有可能授权的。值得注意的是,利用专利侵权诉讼在开源软件中获利,常常会遭到开源社区和开源软件业强烈的抵制和众多开源程序开发者的排斥。最后,站在开源软件的使用者和拥有者的角度来看,都有可能受到专利侵权风险的威胁,为了避免企业在开源项目研发过程中处于被动局面,应当尽早进行知识产权风险的排查。
参考文献
[1] http://www.767stock.com/2016/11/11/19848.html
[2] https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar
[3] http://wiki.mbalib.com/wiki/Open_source_software
[4] http://www.hyqb.sh.cn/publish/portal2/tab227/info1258.htm
[5] http://www.sohu.com/a/224193284_635110
[6] http://www.sipo.gov.cn/zcfg/zcjd/1020253.htm
[7] http://www.docin.com/p-1764955376.html
[8] https://zh.wikipedia.org/wiki/Android
[9] http://news.mydrivers.com/1/210/210063.htm
[10] https://www.oschina.net/news/23474/doom3-opensource