4000-989-866 010-80885651 info@bcac.com.cn 周一至周五 9:00–18:00
代理记账经营许可 · 持证中介协同执业 微信客服
首页 / 知识产权 / 企业开源使用政策怎么建
实务指南Insight

企业开源使用政策怎么建

知识产权 作者:诚立集团 · 知识产权研究组 全文阅读

一个研发为了赶进度,从开源社区引入一个图像处理组件,编译进产品,对外销售。两年后收到律师函:该组件采用传染型许可证,要求衍生作品同样开源。

这不是个案。多数企业对开源的态度是「能用就用」,直到出事才发现,免费的东西有代价。

一、三类许可证的实质差别

第一类,宽松型。要求保留版权声明与免责声明,衍生作品可以闭源。商业友好,风险最低。

第二类,弱传染型。允许闭源,但修改了组件本身的部分,修改部分要开源;以动态链接方式调用的,通常不触发。

第三类,强传染型。只要与组件结合成一个整体作品并分发,整体都要按同一许可证开源。商业软件用了它,等于放弃闭源。

三类的判断不看组件大小,看许可证条款。一个几百行的工具库,也可能采用强传染型许可证。

还有一类更特殊:网络服务型许可证。它把「分发」扩展到了「通过网络提供服务」,即使不分发软件,只要对外提供在线服务,也要开源。做云服务的尤其要注意。

二、五种典型风险

第一种,传染风险。强传染型组件进入产品,导致整个产品被迫开源。

第二种,兼容性风险。两个不同许可证的组件结合,条款互相冲突,任何一个都无法遵守。

第三种,声明缺失风险。宽松型许可证要求保留版权声明,企业在打包时删掉了声明文件。

第四种,专利风险。部分许可证含专利授权条款与报复性终止条款,一旦企业对许可证持有方发起专利诉讼,授权自动终止。

第五种,版本风险。组件升级后许可证变更,从宽松型改为传染型,企业未跟踪,继续使用新版本。

五种里,第一种后果最重,第五种最隐蔽。

三、政策该写哪六条

第一条,准入清单。把常见许可证分为允许、限制、禁止三级。允许的直接用;限制的需法务审批;禁止的一律不得引入。

第二条,审批流程。研发引入新组件前提交申请,说明组件名称、版本、许可证、使用方式(链接还是修改)、分发方式。

第三条,使用方式约束。强传染型组件只能用于内部工具,不得编译进对外销售的产品;确需使用的,采取进程隔离等规避方式。

第四条,声明保留。产品发布时附带开源声明文件,列明组件名称、版本、许可证、版权声明。

第五条,组件清单管理。建立组件清单,记录每个组件的来源、版本、许可证、引入时间、责任人。

第六条,退出机制。组件许可证变更或者出现安全漏洞时,如何评估、替换、通知客户。

六条里,第五条是基础。没有清单,前面五条都落不了地。

四、组件清单与扫描怎么做

组件清单要覆盖三层:直接引入的组件、组件依赖的间接组件、构建工具与运行时环境。

间接依赖最容易被漏。一个组件可能依赖十几个上游库,其中某个采用传染型许可证,风险照样传导过来。

扫描工具分两类:一类扫描源代码,识别引入的开源片段;一类扫描二进制产物,识别打包进去的组件与版本。

两类要结合用。源代码扫描能发现复制粘贴的片段,二进制扫描能发现实际发布的内容。

扫描频率建议:每次版本发布前必扫;组件升级后必扫;每季度做一次全量扫描。

扫描结果要有人看。生成一份报告没人处理,等于没扫。

五、出问题后的补救

四步。

第一步,评估范围。确认涉事组件进入了哪些产品、哪些版本、分发给了哪些客户。

第二步,判断性质。是修改了组件代码,还是仅动态链接;是内部分发,还是对外销售。性质不同,义务不同。

第三步,选择方案。可选方案包括:替换组件、隔离使用(独立进程调用)、按许可证开源相应部分、取得商业授权。

第四步,通知与整改。涉及已交付客户的,评估是否需要通知、是否需要对客户进行补偿。

四步里,第三步最花钱。替换组件要重写、要测试、要重新验证,周期往往以月计。

还有一条:如果对方已经发函,不要拖。多数许可证的终止条款规定,违反后若干日内不纠正,授权自动终止,此后的使用构成侵权。

六、一个被迫重构的案例

某软件企业的产品中集成了一款开源的数据可视化组件,用于生成图表。该组件采用强传染型许可证。

企业的使用方式是:把组件源码复制到自己的代码库,修改了配色与部分渲染逻辑,编译进产品,以闭源方式销售。

三年后,组件原作者委托律师发函,要求企业按许可证开源整个产品,或者停止使用并赔偿。

企业评估了三个方案:开源整个产品,等于放弃核心代码,不可行;取得商业授权,对方报价按年销售额的百分之八,每年约四百万元;替换组件,需要重写渲染引擎与部分交互逻辑。

最终选择替换。投入四名工程师,历时七个月,重写约六万行代码,测试与回归验证又用两个月。直接成本约二百八十万元,产品延期发布导致的机会损失未计入。

事后复盘三点。第一,引入时没有人看许可证,研发只关心「能不能跑通」;第二,产品打包时删掉了许可证文件,连声明都没保留;第三,三年间组件升级了十一个版本,没有人跟踪许可证是否变更。

整改后,企业建立了组件准入清单与发布前扫描流程,组件清单纳入法务备案。

七、研发人员最需要知道的三句话

第一句:引入前先看许可证,不看代码多少行。一个小工具也可能有传染性。

第二句:修改开源代码要留记录。改了哪几个文件、改了什么,将来判断义务范围时用得上。

第三句:不要把开源代码复制进自己的代码库。复制会让边界消失,链接还能说清,复制说不清。

三句话讲清楚,比发一份三十页的制度有效。制度是给法务看的,这三句是给写代码的人看的。

八、开源合规清单

  • 已建立许可证准入清单,分允许、限制、禁止三级
  • 引入新组件前提交申请,法务审批
  • 记录组件的来源、版本、许可证、使用方式
  • 组件清单覆盖直接依赖与间接依赖
  • 发布前做源代码与二进制双向扫描
  • 产品附带开源声明文件,保留版权声明
  • 强传染型组件仅用于内部工具,不进入对外产品
  • 跟踪组件升级后的许可证变更
  • 建立漏洞与许可证变更的应急替换机制
  • 研发培训覆盖三句核心要求,年度复训

开源不是免费,是用自由换约束。用了别人的代码,就要接受别人的规则。规则写在许可证里,只是没人读。

本文由诚立集团专业团队编写,仅供一般性参考,具体事项请结合企业实际情况咨询。 需要针对性建议?联系我们 →

这份流程落到你的企业,需要改哪几处?

说明行业、规模与当前节点,我们会指出可执行的先后次序、哪些环节能并行,以及大致的费用区间。

客服电话 4000-989-866 北京总部 010-80885651
在线咨询
诚立集团微信客服二维码