开源规范¶
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。对于一些已经结项、不维护的开源项目,需要及时地对项目进行归档,并在项目描述中加以说明。