浅谈开源许可证

前言

前段时间Github上面华为开源的项目被指违反开源许可证的事情闹得不小,事件传送门。从这个事情可以看出,很大一部分国内的开发人员对于开源的概念还是处于懵懂的状态,对于开源与版权的关系还是搞不清楚。那么,对于开源的项目要如何维护自己的权益,如何遵守社区的规范呢?

开源协议

相信大家在写代码的时候都会先去Github上面找找有没有前人的经验可以借鉴,但是通常都会忽略的是,很多项目都有开源许可证。如果一不小心违反了开源许可证所规定的内容,就容易发生与上面的华为员工一样的情况,被原作者要求按照许可证修改你的项目,甚至可能面临被起诉的风险。

开源协议的意义

开源协议的存在不仅仅是为了保护作者,更是为了保护使用者。开源协议的存在使作者拥有了自己项目的版权,别人如果需要使用该项目,那就必须要按照协议所规定的来操作。另外,如果有人用项目来做违法的事情,开源协议的存在让作者可以免责,责任全部由使用者来承担。

对于项目的使用者来说,开源协议的存在更是让使用的权限变得更清晰。对于一些宽松的协议来说,除了不能直接抄袭之外,其他的基本没有限制。在协议的保护下,使用者也不会再被作者冠以侵权的名义了。

开源协议的分类

这里主要介绍三种较为常见的开源协议。

  1. MIT:允许别人以任何方式使用。署名作者。原作者不承担代码使用后的风险。
  2. APACHE:授权使用者免费使用个人专利。使用者必须放置协议说明。使用者需要对修改部分声明。禁止用作者的名号进行商业广告。原作者不承担代码使用后风险。
  3. GPL:使用者须遵循相同的协议进行开源。原作者不承担代码使用后风险。

另外需要注意的是,在不同的平台上发布的项目,会默认遵守该平台的协议,例如Github上的项目,别人可以毫无限制地查看和fork你的项目。

如果需要了解更为详细的内容,请移步Choose an open source license

知识共享协议

与开源协议一样,知识共享协议是为了方便知识的传播和保护作者版权而生的。

可以到选择一个知识共享协议来为自己选择一个合适的知识共享协议。

这里推荐选择CC BY-NC-ND 4.0协议,它的规则是禁止商用,保持原文,明确署名。选择这个较为严苛的协议的原因是,防止别人将原文的排版打乱,影响读者阅读,其次,也方便读者发现错误时,可以及时联系原作者加以修正。

同样的,在任何平台上发布的内容都会自动遵循该平台的知识共享协议,有些平台上面发布的内容,该平台会自动拥有版权。