为什么要添加开源协议?

首先是对作者的保护,防止知识成果被恶意利用。

  • 开源协议中一般都包含免责声明(禁止代码的作者承担代码使用后的风险及产生的后果),比如你开源了一个破解智能锁的代码,如果有人利用这个去盗窃导致他人损失,你是无需承担责任的。

其次是对使用者的保护,方便使用者。

  • 使用者一看就知道自己允许进行哪些操作,不允许进行哪些操作。
  • 未添加协议的代码默认是作者保留所有权利的(对此不同国家的法律可能稍微存在区别),这就像一颗定时炸弹,如果你在项目中使用了这一份没有协议的代码,原作者只要能证明你未经许可使用了他的代码,是能够起诉你的。

常用的三种协议

MIT 协议:安心写代码,随便别人怎么搞。

  • 允许别人以任何方式使用。
  • 署名作者。
  • 原作者不承担代码使用后的风险。

Apache 协议:我想保有专利,但你们可以随便用。

  • 授权使用者免费使用个人专利。
  • 使用者必须放置协议说明。
  • 使用者需要对修改部分声明。
  • 禁止用作者的名号进行商业广告。
  • 原作者不承担代码使用后风险。

GPL 协议:对开源最苛刻的协议,具有传染性。

  • 使用者必须遵循相同的协议进行开源
  • 原作者不承担代码使用后风险

乌克兰程序员 Paul Bagwell 的分析图
乌克兰程序员Paul Bagwell的分析图

参考资料

  1. 问题“主流开源协议之间有何异同?”下“GcsSloop”的回答
  2. 问题“主流开源协议之间有何异同?”下“Yang彬彬”的回答
  3. meiyu. 作为前端,你需要了解的开源协议知识
  4. Choose an open source license
  5. 选择一个开源软件协议