Skip to content

开源规范

Tips

开源项目在代码质量、代码规范、文档等方面,要比非开源项目要求更高,在项目开发中按照开源项目的要求来规范自己的项目,可以更好地驱动项目质量的提高。

开源协议概述

一个开源项目一定需要一个开源协议,开源协议规定了你在使用开源软件时的权利和责任,也就是规定了你可以做什么,不可以做什么。所以,开源规范的第一条规范就是选择一个合适的开源协议。

6 种常见开源协议

业界有上百种开源协议,每种开源协议的要求不一样,有的协议对使用条件要求比较苛刻,有的则相对比较宽松。经常使用的有 6 种开源协议,也就是 GPL、MPL、LGPL、Apache、BSD 和 MIT。

GPL: General Public License

开源项目最常用的许可证,衍生代码的分发需开源并且也要遵守此协议。该协议也有很多变种,不同变种要求会略微不同。

MPL

MPL 协议允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者,这种授权维护了商业软件的利益,它要求基于这种软件的修改无偿贡献版权给该软件。

LGPL: Lesser General Public Licence

LGPL 是 GPL 的一个为主要为类库使用设计的开源协议。LGPL 允许商业软件通过类库引用的方式使用 LGPL 类库而不需要开源商业软件的代码。但是如果修改 LGPL 协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用 LGPL 协议。

Apache

Apache 协议是 Apache 软件基金会发布的一个自由软件许可证,Apache 2.0 协议除了为用户提供版权许可之外,还有专利许可,非常适合涉及专利内容的项目。

BSD: BSD(Berkeley Software Distribution,伯克利软件发行版)

BSD 协议在软件分发方面,除需要包含一份版权提示和免责声明之外,没有任何限制,该协议还禁止用开源代码的作者/机构名字和原来产品的名字做市场推广。

MIT

协议的主要内容为:该软件及其相关文档对所有人免费,可以任意处置,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的限制是,软件中必须包含上述版权和许可提示。MIT 协议是所有开源许可中最宽松的一个,除了必须包含许可声明外,再无任何限制。

常见开源协议的选择

Tips

因为 Apache 是对商业应用友好的协议,使用者也可以在需要的时候修改代码来满足需要,并作为开源或商业产品发布/销售,所以大型公司的开源项目通常会采用 Apache 2.0 开源协议。

开源规范的特点

一切能让项目变得更优秀的规范,都应该属于开源规范。

其中,比较重要的几点如下,更多相关规范可见拓展阅读——开源规范详细列表

  • 第一,开源项目,应该有一个高的单元覆盖率。这样,一方面可以确保第三方开发者在开发完代码之后,能够很方便地对整个项目做详细的单元测试,另一方面也能保证提交代码的质量。
  • 第二,要确保整个代码库和提交记录中,不能出现内部 IP、内部域名、密码、密钥这类信息。否则,就会造成敏感信息外漏,可能会对开源者的内部业务造成安全隐患。
  • 第三,当开源项目被别的开发者提交 pull request、issue、评论时,要及时处理,一方面可以确保项目不断被更新,另一方面也可以激发其他开发者贡献代码的积极性。
  • 第四,好的开源项目,应该能够持续地更新功能,修复 Bug。对于一些已经结项、不维护的开源项目,需要及时地对项目进行归档,并在项目描述中加以说明。

拓展阅读