用途
本技能提供开源许可相关的综合指引,主要覆盖四类任务:许可证选择、许可证比较、合规审查,以及 LICENSE、NOTICE 和源代码文件头的起草。它适合在用户询问如何选择开源许可证、检查许可合规性、比较不同许可证,或需要生成标准许可证文档时使用。
主要能力
- 许可证选择:依据决策树,结合用户目标帮助选择合适许可证。
- 许可证比较:解释不同许可证之间的差异、兼容性与权衡。
- 合规审查:分析项目是否存在许可合规问题与兼容性冲突。
- 许可证起草:使用标准文本生成 LICENSE 文件、NOTICE 文件和源代码文件头。
使用方式
针对不同问题,技能会读取相应的参考文件并按流程处理。
许可证选择问题:读取 references/selection/decision-tree.md,并依据决策树提出澄清问题,包括主要目标(采用广度还是保持代码开放)、是否需要专利保护、是库还是应用、是否涉及 SaaS/网络使用。随后给出带理由的推荐,引用使用该许可证的知名项目,并在需要时提出生成 LICENSE 文件。
许可证比较问题:读取 references/selection/comparison-matrix.md,围绕关键维度比较,包括权限(商业使用、分发、修改)、条件(署名、copyleft、源码披露)和限制(责任、保证),并突出关键差异,给出使用各许可证的项目示例。
合规审查:读取 references/compliance/compatibility.md 和 references/compliance/checklist.md,识别项目中所有许可证,检查彼此兼容性,标记可能影响分发的 copyleft 许可证,指出缺失的署名或合规缺口,并提供可执行的补救步骤;同时参考 references/compliance/common-issues.md。
许可证/NOTICE 文件生成:读取 references/templates/ 下相应模板。关键要求是始终使用所提供的标准许可证原文,绝不修改许可条款或从零生成许可证文本,只能填写占位符:[YEAR]、[FULLNAME]、[PROJECT NAME]。NOTICE 文件需正确汇总第三方署名;文件头需使用与语言匹配的注释语法。
参考文件
- 宽松许可证(MIT、Apache、BSD、ISC):references/licenses/permissive.md
- Copyleft 许可证(GPL、LGPL、AGPL、MPL):references/licenses/copyleft.md
- 其他许可证(CC、Boost、zlib):references/licenses/specialty.md
- 许可证比较表:references/selection/comparison-matrix.md
- 许可证选择指南:references/selection/decision-tree.md
- 许可证兼容性规则:references/compliance/compatibility.md
- 合规检查清单:references/compliance/checklist.md
- 常见合规错误:references/compliance/common-issues.md
- LICENSE 文件模板:references/templates/license-files.md
- NOTICE 文件模板:references/templates/notice-files.md
- 源码文件头模板:references/templates/source-headers.md
适用场景与限制
关键规则包括:绝不生成许可证文本,始终使用模板中的标准许可证原文,许可文本属于法律文件,必须精确,不得转述许可条款、凭记忆生成许可文本、修改标准许可语言或创建“自定义”许可证。讨论许可证时应提及使用该许可证的知名项目,例如 MIT:React、Node.js、jQuery、Rails、Angular;Apache-2.0:Kubernetes、TensorFlow、Android、Spark;GPL-3.0:WordPress、GIMP、Bash;AGPL-3.0:Nextcloud、Mastodon、Grafana;BSD-3-Clause:Django、Flask、numpy;MPL-2.0:Firefox、Thunderbird。
遇到复杂场景应建议咨询法律顾问,包括双许可证策略、项目中途更换许可证、含 copyleft 依赖的商业项目、SaaS 环境中的 AGPL、多司法辖区分发和专利敏感情形。
常见快问快答:问“该用哪个许可证”,按决策树处理,默认 MIT 以简化,或 Apache-2.0 以获得专利保护;问“能否在专有应用中使用 GPL 代码”,通常不能,除非通过 LGPL 动态链接或独立进程;问“MIT 与 Apache-2.0 的区别”,Apache-2.0 含明确专利授权与报复条款,MIT 更简单但无专利保护;问“Apache-2.0 与 GPL 是否兼容”,Apache-2.0 与 GPL-3.0 兼容,但与非 GPL-2.0 不兼容;问“使用 AGPL 是否必须开源”,仅当你修改了 AGPL 代码并以网络服务形式提供时才会触发 copyleft,内部使用未修改的 AGPL 工具不会触发。
输出格式方面,生成 LICENSE 文件时:确认许可证选择,询问版权持有人姓名与年份,输出完整标准许可证文本,提醒用户将其作为 LICENSE 或 LICENSE.txt 放在仓库根目录。审查合规时:列出所有识别到的许可证,展示兼容性分析,按严重程度(critical/warning/info)标记问题,并提供具体补救步骤。
免责声明:本技能仅用于信息与教育目的,不构成法律建议;不应将其分析或信息作为咨询合格律师的替代;使用本技能不产生律师-客户关系;开源许可涉及复杂法律考量,可能因司法辖区而异,法律与法规会随时间变化;具体法律事项应咨询所在司法辖区的执业律师;技能创作者与发布者不对基于所提供信息采取或不采取的行动承担责任。