Software License Overview

Software License Overview

Astrid Stark Lv. ∞

软件许可证是软件开发者或版权所有者授予用户使用、修改或分发软件的法律协议。根据许可证的不同,用户对软件的权限和义务也有所区别。软件许可证可以大致分为以下几类:

专有软件许可证

这些许可证通常由商业软件公司提供,用户需要遵循严格的使用限制。

商业软件许可证

  • 代表:Microsoft Windows、Adobe Photoshop
  • 许可模式:通常要求购买许可证后才能使用
  • 限制:不能修改或分发软件,通常只有执行权

订阅模式许可证

  • 代表:Adobe Creative Cloud、Microsoft 365
  • 许可模式:按月/年付费订阅
  • 限制:软件只能在订阅有效期内使用

终端用户许可协议(EULA)

  • 代表:几乎所有商业软件都会附带
  • 许可模式:用户必须同意 EULA 条款才能安装或使用软件
  • 限制:通常禁止逆向工程、修改或再分发

开源软件许可证

开源许可证允许用户查看、修改和分发源代码,但不同许可证对这些权利的限制有所不同。

宽松开源许可证

这些许可证允许用户修改并闭源分发代码,无需开源衍生作品。

MIT 许可证(MIT License)

  • 代表项目:React.js、Node.js

  • 许可模式:允许自由使用、修改和分发

  • 主要特点

    • 代码可用于闭源软件
    • 只需保留原始许可声明
    • 免责条款:不对代码的质量和安全性负责
  • 许可证模板MIT License

Apache 许可证 2.0(Apache License 2.0)

  • 代表项目:Android、TensorFlow
  • 许可模式:比 MIT 更严格,要求贡献代码的人授予专利授权
  • 主要特点
    • 允许闭源
    • 需声明修改内容
    • 提供专利授权
  • 许可证模板Apache-2.0

BSD 许可证(Berkeley Software Distribution License)

  • 代表项目:FreeBSD、PostgreSQL
  • 许可模式:类似 MIT 但有不同变体
  • 主要特点
    • BSD-2-Clause:要求保留原作者声明
    • BSD-3-Clause:额外禁止使用原作者的名字做推广
  • 许可证模板BSD-3

传染性许可证

要求所有基于该软件的派生作品也必须使用相同的许可证,确保代码持续开源。

GNU 通用公共许可证(GPL,General Public License)

  • 代表项目:Linux Kernel、GCC
  • 许可模式:所有衍生软件必须开源(强 Copyleft)
  • 主要特点
    • GPLv2:较严格,要求所有衍生作品必须完全开源
    • GPLv3:新增专利保护和 Tivoization(防止锁定硬件)
  • 许可证模板GPL-3.0

LGPL(Lesser General Public License)

  • 代表项目:FFmpeg、Qt
  • 许可模式:允许闭源软件动态链接 LGPL 代码
  • 主要特点
    • 适用于库,允许与闭源软件动态链接
    • 但如果修改库本身,必须开源
  • 许可证模板LGPL-3.0

AGPL(Affero General Public License)

  • 代表项目:MongoDB
  • 许可模式:适用于网络服务端软件,要求分发服务端代码
  • 主要特点
    • 与 GPL 类似,但进一步要求通过网络交互的修改内容也必须开源
    • 确保所有用户都能访问服务端的源代码
  • 许可证模板AGPL-3.0

FDL(Free Documentation License)

  • 代表项目:GNU 文档
  • 许可模式:主要用于文档和书籍,要求衍生品也必须开源
  • 主要特点
    • 确保文档的内容可以自由修改和分发
    • 适用于技术文档或操作手册
  • 许可证模板FDL-1.3

创意共享许可证

适用于文本、图片、音乐等非软件内容。

  • CC-BY(署名):需注明作者
  • CC-BY-NC(署名-非商业):只能用于非商业目的
  • CC-BY-NC-ND(署名-非商业-禁止改编):不能商用且禁止修改
  • CC-BY-NC-SA(署名-非商业-相同方式共享):非商业用途且衍生作品需用相同协议
  • CC-BY-ND(署名-禁止改编):允许商用但禁止修改
  • CC-BY-SA(署名-相同方式共享):类似 GPL,要求衍生品使用相同协议

许可证模板Creative Commons Licenses

许可证选择指南

许可证 是否允许闭源 是否要求开源衍生品 适用场景
MIT ✅ 允许 ❌ 不要求 个人、商业项目
Apache 2.0 ✅ 允许 ❌ 不要求 需要专利保护的项目
BSD ✅ 允许 ❌ 不要求 高自由度的开源软件
GPL ❌ 禁止 ✅ 强制开源 Linux、自由软件
LGPL ✅ 允许 ✅ 仅库需开源 开源库
AGPL ❌ 禁止 ✅ 强制开源 网络服务端
FDL ❌ 禁止 ✅ 强制开源 文档、书籍
CC-BY ✅ 允许 ❌ 不要求 文档、图片
CC-BY-NC ❌ 禁止 ❌ 不要求 非商业内容
CC-BY-NC-ND ❌ 禁止 ❌ 不要求 非商业且禁止改编
CC-BY-NC-SA ❌ 禁止 ✅ 强制开源 非商业开源文化内容
CC-BY-ND ✅ 允许 ❌ 不要求 商用但禁止改编
CC-BY-SA ✅ 允许 ✅ 强制开源 开源文化内容