开源软件的合规与运用
腾龙三期 王冀
现代商业竞争环境下,产品的先发优势被互联网加倍放大,导致内部研发效能被越来越多的企业放到极其重要的位置。在这种背景下,由于其内在的源代码公开、组件丰富等属性,开源软件引起广泛关注,特别是在互联网行业,开源软件已成为支撑互联网软件产品高速迭代的“必备装备”。其中部分行业领先者对开源软件的重视足以引发我们的关注:华为、阿里巴巴等代表性科技企业已经将开源软件上升到发展战略层面,在他们的部分明星产品中开源软件代码量接近90%,并且每年都会做出上亿的经费预算去资助某些开源软件社区的发展。可见,运用好开源软件将为企业业务发展带来活力,而管理好开源软件也将为IP部门发展带来机遇。
企业在面对开源软件的使用时,主要会遇到如何用好以及如何管好两方面问题,如果从工作的紧迫性和切入的难易程度考虑,企业应当分阶段、循序渐进地将开源软件管理渗透到各角色部门工作中去,规划各发展阶段的整体思路是:效率优化>>管控风险>>影响生态。开源软件在企业发展各阶段的管理目标和管理措施是完全不同的,以下具体展开:
一、效率优化阶段
企业对开源软件最原始的需求是“什么软件好用”,技术团队的开发人员经常会在软件产品中引入个人熟悉的开源代码,所引入开源代码的性能效果完全依赖开发人员的经验评估,并且考虑到开发进度和性能稳定性,在项目中开发人员一般不会尝试知名度不高的新开源软件。既然利用开源软件为商业开发做有益补充已成为当下企业的共识,那么哪些开源软件可以用到具体项目中、各开源软件的性能孰优孰劣都是企业在改进研发效能过程中必须考虑的问题。笔者认为该阶段的实施路径主要有二:
1)设立企业开源软件管理组织
开源委员会。开源委员会是企业将发展开源软件上升到战略层面的显著标志,其职责是制定企业开源策略、营造企业开源文化、推动开源社区合作、争取开源工作经费、商讨重大开源问题。开源委员会一般由企业CTO、首席科学家、开源专家、总法律顾问、首席知识产权顾问共同组成,是指导企业开源工作的最高机构。
开源工作小组。开源工作小组是企业开源工作管理的执行机构,亦可以理解为开源委员会的日常办事机构,通常由CTO授权的开源专家和知识产权专家组成,主要职责是跟踪开源软件研究动态、评估开源软件性能效果、指导许可证使用合规、审核软件产品代码输出、应对开源软件风险事件。
2)搭建企业软件开发协作平台
开源经验交流机制(软平台)。对于以软件产品为业务方向的企业来讲,绝大多数开发项目都会或多或少利用、链接开源软件,开发人员对于了解兄弟团队在特定开源软件使用中的经验和技巧有着强烈的需求。开源工作小组应当及时掌握研发人员需求、及时汇总开源软件使用动态,据此分主题定期组织开源软件使用方面的经验分享活动,搭建开源项目交流平台。
软件开发协作平台(硬平台)。企业利用开源软件的一个重要因素是高效,但由于企业内部沟通有时未必通畅,研发团队之间并不了解相互的工作,导致基于开源代码的二次开发在企业内部反倒不能继续开源,并未在最大程度上实现高效的目的。企业可搭建基于云存储的软件开发协作平台,所有产品的源代码均在该协作平台上编写、修改、归类、共享,开发人员可以方便地复制、参考其他产品的源代码,但是不能对协作平台上的源代码进行下载和修改。软件开发协作平台可以同步解决代码安全和代码分享两方面的问题。
二、管控风险阶段
很多企业刚刚开始开源软件的风险管理工作,比较关心此阶段开展工作的路径,笔者提出“摸、抓、做、审”的整体工作思路,下面简要谈谈各步骤要点。
1)摸家底
目前各种开源社区提供下载的开源软件已经数不胜数,但不同领域的企业在实际软件开发中用到的开源软件往往差异很大,一般只会使用具有特定功能的某几类开源软件。相对于学术界的系统化研究,企业在实际操作中其实更关注务实的问题,也就是本企业所处领域经常会遇到的风险。
对于企业开源软件管理者来说,首先应收集本企业所有软件产品的信息,接下来是汇总软件产品所涉及的开源软件信息,第三步是查找上述各开源软件所对应的许可证信息,第四步是对所有许可证的出现比例、应用场景、性能效果、可替代性进行综合分析。通过“摸家底”,企业可以对各种开源软件和各种许可证对自身的影响程度一目了然。
2)抓重点
对于企业来讲,笔者认为开源软件的潜在风险主要分为:a.许可证违约风险、b.商业使用受限风险、c.第三方专利风险、d.专利申请受限风险、e.商标使用风险,因此,开源软件的合规管理主要针对上述五个方面。由于开源软件的上述风险皆源起于开源许可证的条款约定,应当说,许可证违约风险是企业使用开源软件时面临的直接风险,其他风险是由此衍生的间接风险,企业在进行开源软件的合规管理中尤其应关注许可证违约风险,特别是应关注研发人员最为关心的那些许可证条款。
近期国家知识产权局做了一次关于企业研发人员最关心的开源软件许可证问题的调查,调查结果中关注度排名前五的许可证内容依次是:第1位.是否允许同其他非开源软件代码混合;第2位.是否必须公开修改后的程序;第3位.是否明确专利许可授权;第4位.是否明确专利侵权诉讼导致许可证协议终止;第5位.是否允许同其他协议的开源代码混合。笔者非常认同上述调查结果的排序,由于软件开发过程可能遇到几十项许可证条款,而进行开源软件合规的时间和资源都很有限,笔者建议企业开源软件管理者将工作重心放到上述许可证条款所涉及的问题中。
3)做指南
开源软件管理者应当加强对常见开源许可证的研究和跟踪,能够为全体开发人员拟制一份《开源许可证使用指南》。《使用指南》应当具有较强的操作指导性,应能告知开发人员如何使用不同的许可证,比如,《使用指南》可以将企业涉及的全部许可证按照A.禁止使用的许可证、B. 谨慎使用的许可证、C.推荐使用的许可证等类别进行划分,并说明每一类许可证在使用时的内部审批流程和开发注意事项。
4)审代码
指导开发人员合规使用开源许可证是正向促进,而设置专人进行代码输出审核则是反向约束。企业可以建立外发软件产品的代码扫描机制,设置专人并利用专业扫描工具对外发软件产品进行开源合规审查,及时将代码中的风险反馈给企业高层和业务团队,以供决策后续处理措施。
对于向外开源的软件项目,“审代码”还意味着要将项目中潜在的专利申请点进行排查,确保项目在开源前对所有的技术创新都进行了“专利收割”。
三、影响生态阶段
如今能做到影响开源软件生态环境的中国企业只有极少数,但每一个致力于运用开源战略的企业都应该有这样的愿景。影响开源软件生态对企业来讲有着极强的战略意义:企业把代码贡献给社区开发,参与项目的同时也制定了社区标准,随之将会引导社区向有利于公司的方向发展。
那么,什么是开源软件的生态环境呢?开源软件的生态环境里包含了社区、基金会、开发爱好者等多边角色,开源社区的开发爱好者基于相同的功能目标共同开发出来了开源软件,上述“相同的功能目标”可能会受到资助开源社区的基金会的影响,同时基金会还可能持有着开源社区的专利和商标。
企业如果想在某个开源软件领域产生影响力,首先要成为开源社区的一员,很多重要社区将资助社区发展、成为基金会成员作为加入社区的门槛,也就是说企业必须要做出资助社区的经费预算;其次,光出钱是远远不够的,企业必须能推荐出被社区认可的顶级专家出任社区高级管理者,这样,企业才能和社区紧密捆绑在一起;最后,企业还要不断向社区贡献开源项目,逐渐推动社区发展壮大,随着社区影响力的不断提升,企业在行业内的控制力也会不断加强。
开源软件的合规与运用,对企业IP管理部门来说是一项全新的工作内容,它拓宽了IP管理部门与技术部门之间的联系,提前了IPR介入开发环节的时间,对于开源项目增加了“专利收割”的审查环节,因此必将强化企业IP管理部门的工作力度。但同时,开源软件管理工作也对IPR的综合能力,特别是对许可证条款的理解以及软件组件的运用,提出了更高的要求,需要广大同仁提前对这方面知识进行学习和储备。