知用堂
第二套高阶模板 · 更大气的阅读体验

开源协议有哪些 详细教程与注意事项说明

发布时间:2026-01-01 15:00:44 阅读:182 次

你可能在下载某个软件或使用一段代码时,看到过“MIT License”“GPL”这样的字眼。这些其实是开源协议,用来规定别人能怎么用、改、分享你的代码。就像借书给人,有人希望看完能随便传,有人则要求不能改动内容,开源协议就是给代码定下的“借用规则”。

常见的开源协议有这些

MIT 协议 是最宽松的一种。它只要求保留原始版权声明和许可声明,其他几乎不限制。你可以拿这段代码做商业软件、闭源产品,都没问题。很多前端项目、小工具都用 MIT,比如 React 就是其中之一。

它的许可声明通常长这样:

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software...
(省略部分内容)

Apache 2.0 比 MIT 多了一些条款,比如明确包含了专利授权。这意味着如果你贡献了代码,也默认允许别人使用你在这段代码中的专利技术。对大公司来说更安全,Android 和 Kubernetes 都用了这个协议。

GPL 系列(尤其是 GPLv3)就严格多了。它要求任何使用或修改该代码的项目,也必须以同样的协议开源。这就像“传染性”条款——你用了 GPL 的代码,你的整个项目也得公开源码。Linux 内核就是用 GPLv2,所以所有基于它的发行版都得遵守规则。

相比之下,BSD 协议 和 MIT 很像,也比较宽松,常用于学术类项目。它有 2 条款和 3 条款版本,后者多一个禁止用作者名字做推广的限制。

还有一种叫 AGPL,是 GPL 的加强版,特别针对网络服务。比如你把 AGPL 代码部署成一个网站,即使不发布软件,也得公开修改后的源码。这对 SaaS 类产品影响很大。

另外像 CC0 这种,几乎是“放弃版权”,把代码彻底放归公共领域,想怎么用都行,连署名都不强制。

怎么选合适的协议?

如果你写了个小工具想让大家随便用,MIT 或 BSD 最合适。想保护专利,选 Apache 2.0。希望推动开源生态、强制回馈,GPL 是利器。但如果你在公司开发产品,得小心别不小心引入了“传染性”协议的代码。

现在 GitHub 创建项目时,可以直接选择许可证模板,系统会自动生成 LICENSE 文件。很多人一开始不在意,随便抄个代码,结果上线后被投诉侵权,就得不偿失了。

开源让技术发展更快,但也得守规矩。了解这些协议,不只是程序员的事,更像是数字时代的“基本常识”。就像做饭要知道食材来源,用代码也得清楚它的“使用说明”。