GitHub 许可证选择指南:写给 Vibe Coder 的实用笔记

in Wordpress with 0 comment

  现在vibe coding越来越流行,很多普通人都可以借助AI大模型进行开发。可能有些人会使用github发布自己的作品,但是github上有很多种类型的LICENSE,不知道该怎么选。那么刚好,我也vibe coding了一个wordpress主题,正准备放到github上开源。顺便对许可证的类型做一个梳理。

一、为什么需要关注许可证?

简单来说,许可证就是告诉别人:"我的代码,你可以怎么用,不可以怎么用。"

没有许可证,默认就是"保留所有权利",别人不能随便复制、修改、分发你的代码。如果你希望自己的作品被更多人使用、改进,或者希望别人基于你的代码做贡献,就需要明确选择一个许可证。

二、先问自己三个问题

在选择许可证之前,先想清楚自己的目标:

问题 你的答案
你希望别人能自由使用你的代码吗? 是 / 否
你介意别人用你的代码做闭源的商业产品吗? 介意 / 不介意
你希望别人修改后的代码也必须开源吗? 希望 / 无所谓
这三个问题的答案,直接决定了你该选哪类许可证。

三、GitHub 常见开源许可证速查表

🟢 宽松型 (Permissive) —— "用了我的代码,保留我的名字就行"

许可证许可关键字核心含义与适用场景
Apache 许可证 2.0Apache-2.0与MIT类似,但明确授予了专利权,适合涉及专利的企业项目。修改过的文件需注明修改内容。
BSD 二条款"简化版"BSD-2-Clause非常宽松,只需保留版权声明。比MIT更简单(MIT需声明"本软件按MIT许可提供")。
BSD 三条款"新版"BSD-3-Clause比2条款多一条:禁止用原作者名义做推广,保护作者声誉。
BSD 3 条款净化版BSD-3-Clause-Clear极罕见的变体,条款更明确地"净化"了专利和广告条款,基本上等同于极宽松的BSD。
BSD 零条款0BSD最宽松的BSD,等同于放弃版权(类似CC0),没有任何限制。
MITMIT最流行、最宽松。允许任何人随便用、改、发,包括闭源商用,只需保留版权声明。个人作品首选
ISCISC与MIT几乎相同,但措辞更简练。常用于OpenBSD等项目,功能上完全等同。
Boost 软件许可证 1.0BSL-1.0宽松的许可证,允许与闭源代码自由结合。特点是不要求衍生作品开源,只要求保留版权声明,对商业友好。
PostgreSQL 许可证PostgreSQL宽松许可证,类似MIT/BSD。允许自由使用和修改,唯一特殊要求是不得将产品命名为PostgreSQL来暗示背书
zLib 许可证Zlib非常简短的宽松许可证,主要用于zlib压缩库。允许自由使用,但禁止对产品进行虚假宣传(不能暗示原作者认可你的版本)。
伊利诺伊大学/NCSA 开源许可证NCSA结合了MIT和BSD 3-Clause的条款,与MIT/BSD类似,但措辞更符合美国大学的政策需求。
Microsoft 公共许可证MS-PL微软开源的宽松许可证,允许代码与闭源代码结合使用。但源代码版本必须保留版权声明,整体上仍属宽松友好。
艺术许可协议 2.0Artistic-2.0为Perl语言设计,允许将软件作为商业产品发布,但修改版必须与标准版有明显区别(不能混淆视听)。

🟡 强互惠型 (Copyleft) —— "用了我的代码,你的也得开源"

许可证许可关键字核心含义与适用场景
GNU 通用公共许可证 v2.0GPL-2.0WordPress的母语。要求衍生作品也必须GPL开源。WordPress主题/插件首选(官方目录强制要求)。
GNU 通用公共许可证 v3.0GPL-3.0GPL-2.0的升级版,增加了专利授权条款反Tivoization条款(防止硬件锁定),对用户自由保护更强。
GNU 较宽松通用公共许可证 v2.1LGPL-2.1GPL的弱化版,允许其他非GPL代码通过动态链接库的形式调用它(如.so库),适合作为基础库使用。
GNU 较宽通用公共许可证 v3.0LGPL-3.0LGPL-2.1的升级版,与GPL-3.0保持一致,增加了专利保护和反锁定条款。
GNU Affero 通用公共许可证 v3.0AGPL-3.0GPL-3.0的"网络服务版"。如果通过互联网提供服务,即使不分发代码,也必须开源。适合SaaS类项目。
Eclipse 公共许可证 2.0EPL-2.0比GPL温和。允许将EPL代码与闭源代码结合,但EPL代码本身的修改仍需开源,对商业较友好。
Eclipse 公共许可证 1.0EPL-1.0EPL-2.0的前身,条款类似,但兼容性不如2.0。
Mozilla 公共许可证 2.0MPL-2.0比GPL更灵活,允许将MPL代码与其他许可证代码混合,但MPL修改过的文件必须开源。常用于Firefox等。
开放软件许可证 3.0OSL-3.0强互惠型,要求衍生作品开源。与GPL类似,但措辞不同,法律上不完全兼容GPL。使用较少。
学术自由许可证 v3.0AFL-3.0比GPL更严格的强互惠型,要求衍生作品开源,且修改必须添加明确标记。学术机构常用,但与GPL不兼容。
欧盟公共许可证 1.1EUPL-1.1欧盟官方推荐的强互惠型许可证,与GPL兼容。允许与GPL、EPL等代码互通,在欧洲公共项目中常见。

⚪ 公共领域与放弃版权 (Public Domain) —— "随便用,我放弃了所有权利"

许可证许可关键字核心含义与适用场景
知识共享零 v1.0 通用CC0-1.0彻底放弃版权,将作品贡献给公共领域。使用者可为所欲为,无需署名。适合数据、文档等。
Unlicense (反许可协议)Unlicense与CC0类似,目的是放弃所有版权,让作品进入公共领域。措辞更激进,明确"不提供任何保证"。
BSD 零条款许可证0BSD等同于放弃版权,没有任何限制。与CC0效果相同。
你想干嘛就干嘛公共许可证WTFPL最不正经但有效,就是字面意思"你想干嘛就干嘛"。不推荐正式项目,但个人玩具可用。

🔵 知识共享 (Creative Commons) —— "主要用于内容作品"

许可证许可关键字核心含义与适用场景
知识共享署名 4.0CC-BY-4.0允许商业使用和修改,但必须署名原作者。适合文档、图片、设计稿等非代码作品。
知识共享署名-相同方式共享 4.0CC-BY-SA-4.0在CC-BY基础上,要求衍生作品也必须以相同方式共享(类似GPL)。适合维基百科等。

⚠️ 注意:CC系列许可证不推荐用于代码,因为其版权条款与代码分发规则不兼容。代码请用上面提到的许可证。

🟣 特殊用途许可证

许可证许可关键字核心含义与适用场景
SIL 开源字体许可 1.1OFL-1.1专门为字体设计。允许字体自由使用、修改、分发,但修改后的字体不能使用原字体名称
LaTeX 项目公共许可证 v1.3cLPPL-1.3c专为LaTeX宏包设计。要求修改后的文件必须改变文件名,防止混淆原作者版本。不适合通用软件。
教育社区许可证 v2.0ECL-2.0专门为教育行业和学术研究设计的许可证,要求衍生作品必须开源,但允许用于教学目的。较少见。

四、特殊场景:如果你开发的是 WordPress 主题/插件

这个要单独拿出来说!

因为 WordPress 本身是基于 GPL 协议发布的,WordPress 主题和插件通常被视为 WordPress 的"衍生作品"。因此:

想提交到 WordPress 官方主题/插件库:必须使用 GPLv2(或更高版本) ,这是强制要求

如果不是为了提交官方库:理论上可以选其他许可证,但强烈建议选择 GPL 兼容协议(如 GPLv2/v3),避免法律风险

所以,如果你是做 WordPress 主题开发,GPLv2 或 GPLv3 是最稳妥的选择。

你的代码是基于 WordPress 开发的吗?
        │
        ├── 是 → 选 GPLv2 或 GPLv3(必选)
        │
        └── 否 → 你介意别人把你的代码拿去闭源商用吗?
                    │
                    ├── 介意 → 选 GPLv3
                    │
                    └── 不介意 → 你关心专利保护吗?
                                    │
                                    ├── 关心 → 选 Apache 2.0
                                    │
                                    └── 不关心 → 选 MIT(最简单省事)

简单粗暴版:

普通个人作品、小工具、练手项目 → 选 MIT,最省心,大家都爱用

希望代码永远开源、不想被商用 → 选 GPLv3

WordPress 主题/插件 → 选 GPLv2 或 GPLv3

想彻底放弃版权、做公共资源 → 选 CC0

Responses
2016lengh.gif2016kun.gif2016db.gif2016baojin.gif2016jk.gif2016kb.gif2016qq.gif2016zj.gif2016qiao.gif2016am.gif2016kk.gif2016qd.gif2016gg.gif2016lh.gif2016wq.gif2016gz.gif2016zhh.gif2016ll.gif2016shuai.gif2016kel.gif2016zk.gif