
开源代码并非可以随意使用的公共资源。开源软件基于知识产权许可合同关系,即使免费获取代码,也必须严格遵守许可证条款。许多开发者存在两大误区:一是将开源代码等同于“可随便使用的公开代码”;二是认为只有GPL协议有高风险,其他协议无风险。这些误解正是侵权风险的主要来源。
许可证违约风险是最常见的侵权类型。开源许可证属于附解除条件的著作权许可合同,一旦用户违反协议条款,获得的授权将自动终止。在罗盒公司诉玩友公司案中,被告未按GPLv3协议要求开放源代码,法院认定其违反协议导致授权终止,构成著作权侵权,判令赔偿50万元。这是全国首例明确开源协议具有合同性质的判决。
许可证兼容性风险容易被忽视。在一个项目中混合使用多种不同许可证的开源组件,可能产生冲突。例如,不能将GPL协议代码与禁止使用GPL的组件合并到同一个衍生作品中。许可证“传染性”可能导致企业自身核心代码被迫开源。
开源代码本身侵权风险同样值得警惕。如果使用的开源数据集本身是他人未经授权爬取的“非法”数据,即使完全遵守许可证,也可能因使用源头有问题的数据而卷入侵权纠纷。
宽松型许可证如MIT、BSD、Apache 2.0,风险较低。它们允许在专有软件中使用代码,只需保留版权声明和许可证文本。MIT许可证是最简单的选择,要求在所有副本中包含版权声明即可。Apache 2.0还提供明确的专利授权,专利风险更低。
弱传染型许可证如LGPL、MPL,风险中等。要求对许可证代码本身的修改必须开源,但允许将其链接到更大的专有作品中。LGPL特别适合函数库使用,企业可以动态链接LGPL库而无需开源整个应用程序。
强传染型许可证如GPL、AGPL,风险最高。GPL要求衍生作品必须使用相同许可证开源。在罗盒案中,法院认定基于GPL代码开发的整个产品都被视为衍生作品,需要整体开源。AGPL更进一步,通过网络使用软件也触发开源义务,许多企业因此避免使用AGPL组件。
建立开源代码清单是基础。记录所用开源组件的名称、版本、许可证类型、来源及修改情况。使用软件成分分析工具可以自动扫描依赖关系,识别所有直接和传递依赖。
在项目立项阶段进行许可证兼容性评估,避免不同许可证之间的义务冲突。制定许可证“黑白灰名单”,明确哪些许可证可商用、哪些需法务审批、哪些禁止使用。
对外发布产品前完成合规审查,确保履行署名、声明、提供源代码等义务。对于计划用于核心产品的开源组件,优先选择MIT、BSD等宽松型许可证。
保留开发记录、引入决策文件、合规审查意见等,以应对未来可能的权利争议或尽职调查。定期开展开源合规培训,提升研发人员的法律意识,避免因“习惯性复制”引入高风险代码。


夜雨聆风