软件开源作为一种经营模式日益盛行,越来越多的企业(特别是平台型的企业经营者)、软件开发者选择将自己的软件通过开源的方式贡献给社区。然而,如同笔者在此前发表的《开源软件:未必免费的盛宴》一文中所述,软件开源常常是一种商业经营模式,而并非免费的盛宴,开源软件的开源方(以下称“开源方”)依然可以结合自己的商业目标,在将软件开源的同时保护自己的知识产权。

一、选择一份合适的开源协议

目前主流的开源协议主要有以下几种:GPL协议、LGPL协议、BSD协议、MIT协议、Mozilla协议以及Apache协议等,笔者在《开源软件:未必免费的盛宴》一文中已经对上述开源协议进行了细致的横向比较,在此不再赘述。了解这些协议设定的不同法律权利和义务,对于企业选择合适的开源协议非常重要。我们总结了如下几个较为常见的考虑因素供读者参考。

  • 商业用途

商业用途是指使开源软件的使用方(以下称“使用方”)是否可以将开源软件及其衍生软件用于商业用途。目前,绝大多数的开源软件都允许开源软件及其衍生软件被用于商业用途。但是,有些开源协议(例如GPL v2.0协议)会规定如果开源方是免费提供开源软件的话,那么使用方在此基础上修改的衍生软件也必须免费提供给公众使用。因此,开源方可以利用这样的条款来限制使用方利用开源方的软件来为自身获取利益。

  • 修改

修改是指使用方是否可以在开源软件的基础上进行修改。目前,大多数的开源软件都允许使用方修改开源软件。但是,开源方同意使用方对开源软件进行修改并不意味着开源方同意将该修改后的软件视为其开源软件的后续版本。例如,谷歌公司的安卓系统是开源的原件,世界上有成千上万的软件爱好者、企业可以对其进行修正并发布为自己的版本,但是谷歌公司安卓系统的版本序列依然是根据谷歌公司自己发布的正式版本来确定的。如果谷歌公司想采纳使用方对安卓系统的修改,则谷歌公司会与使用方另行签署相关协议。

  • 专利授权

专利授权是指开源方是否将与开源软件相关的专利授权给使用方。根据开源协议的不同,专利授权的内容也不一致,有些开源协议(例如GPL v2.0协议)并没有提及专利授权,有些开源协议(例如BSD 3.0 Clause Clear License)明确禁止专利授权,有协议开源协议(例如Apache License 2.0)明确同意专利授权。也有一些公司会根据实际情况,在引用没有提及专利授权的开源协议时,另外增加一个文件专门阐述专利问题。

这对于已经注意通过专利方式保护计算机软件的公司非常重要。因为,开源软件所授予的许可常常超越了某一特定地域。而专利权则具有绝对的地域性保护,仅在被授权的地域内有效。对于希望保留专利权利的公司在选择开源协议是要特别注意两种不同知识产权权利之间的协调。

  • 公开源码

公开源代码是指开源方在分发开源软件时是否必须提供源代码。关于这一点,GPL协议和LGPL协议有明确的规定,要求开源方必须提供源代码。但是,在一些宽松的开源协议中,并没有这样严格的要求,宽松的开源协议仅仅是鼓励开源方对源代码进行开源。

  • 使用相同协议

使用相同协议是指修改后的软件如果继续开源的话是否必须按照相同的协议进行发布,在GPL协议及LGPL协议中包含这样的条款。该条款可以限制开源软件的修改者继续开源时随意选择其他宽松的或严格的开源协议,从而可以保证开源软件的后续修改版本依然可以秉承原始开源方的保护思想。

  • 声明变更

声明变更是指使用方对开源软件的代码进行修改后是否需要对修改的部分进行声明,许多开源方都会选择这样的条款来告知公众原始的部分和修改的部分,以便明确自己的权利范围。在主流的开源协议中,GPL协议、LGPL协议和Apache协议都有要求进行声明变更。

综上,如何选择一份合适自己的开源协议,需要根据自身的实际情况和商业需求。除了由软件爱好者提供之外,有相当一部分的开源软件是由企业提供的。从企业的角度来说,开源软件协议的选择应当从企业的商业目的角度进行考虑。

二、开源软件的知识产权保护

许多开源方可能会有这样的疑问:“既然我已经选择了将软件开源,且已经选择了一份合适的开源协议,那么我是否还有必要或有可能去通过传统的知识产权(软件著作权、专利、商标、商业秘密等)来保护我的开源软件?”笔者看来,既有必要,也完全可行,并从版权、专利、商标、商业秘密等几个方面提出建议。

  • 著作权保护

在上述主流的开源协议中,几乎所有的开源协议都明示或暗示地提及了软件著作权的授权,这和开源软件本身的性质是一致的。但是,开源方依然有必要去申请登记软件著作权,以及通过恰当的技术手段进行软件的版本管理和代码保全。一方面,软件著作权明确了开源方软件的权利范围,即开源协议中所授予的软件著作权就是开源方申请登记的转件著作权;另一方面,也便于厘清开源方原始版本的内容及与后续使用者使用修改后生成作品的区别。在发生如责任承担、侵权纠纷、违反开源协议纠纷等情况下能够提供扎实有力的证据支持。

  • 专利保护

如上所述,不同的开源协议关于专利授权的内容并不统一。然而软件被开源之后,任何人都有可能接触到开源软件的源代码,包括市场上的竞争对手。因此对于开源方而言,积极、合理、有效地进行专利申请与专利布局可谓是与有效的开源协议并举的智慧的保护方式。如果这样,在决定开源的时间点方面就需要考虑与专利申请的时间进程不构成冲突。

  • 商标保护

除了Apache License 2.0明确禁止使用方使用开源方的商标之外,市场上的主流开源协议并没有对商标授权进行过约定。开源方需要充分考虑其整个商业模式的需要以及开源在整个模式中的作用,来考虑恰当的商标授权许可策略。从扩大影响力、强化品牌的角度,要求被许可方使用自身的品牌可以促进开源方的品牌影响力。但同时,如果使用方的后续开发发生负面事件,也会产生对开源方品牌的不利影响。这时,事先考虑周全的商标授权协议安排就显得非常必要。

此外,开源方还有必要将开源软件使用的一些特定标识或名称在正确的商品或服务类别上申请商标,并充分考虑商标申请的地域覆盖,以便搭建完善的品牌资产组合。

  • 商业秘密保护

在开源软件的源代码中,可能会对于一部分核心代码开源方并不希望公开给公众,同时开源方也不希望通过将其内容公开来换取软件著作权或专利权的保护。这时开源方仍然可以对这些部分的核心代码以商业秘密的方式来进行保护。

需要说明的是,各大开源协议是开源行业内已经约定俗成的规则。开源方可以根据自身的需求和商业目的另行添加开源协议中没有规定的内容,例如商标的使用,协议更新等等。具体如何添加,如何起草相关的条款建议咨询有经验的律师或相关法律人士进行处理,以便可以全面地保护自身的合法权益。

结语

综上所述,从开源方的角度来说,尽管选择了软件开源,但并不表示不需要保护自身的合法权益。恰恰相反,为了既可以实现贡献大众或培养生态,又可以防止他人非法、肆意地获取开源方的智慧成果的目的,开源方不仅需要注重开源协议的选取,还需要为开源软件配套一套知识产权保护体系。