## 开源软件开发导论 - 资料### 开源协议使用常见问题**问题1**:如果一个网站的源码是使用GPL协议的,用它的源码部署网站运营赚钱,会违反协议么?**讨论**:1.`GPL`协议全文:https://www.gnu.org/licenses/gpl-3.0.en.html。GPL并不限制赚钱,赚不赚钱不是判断的标准,不是重点。GPL既不限制赚钱,也不限制分发,也没有要求面向公众开源,而是要求说如果你对源码有改动,分发的时候要把改动的代码一起提供给客户,并且不能禁止你的客户把源码再给别人。如果你的客户拿到了你改动的代码,关在家里研究,却不愿意分享给别人,那你和你的客户都没有违背GPL协议。2. 针对GPL在网络服务端使用的问题。有一个新的协议:`AGPL`。`AGPL`的全称为:GNU Affero General Public License,是GPL的一个补充,在GPL的基础上加了一些限制。AGPL这个协议的制定是为了避免一个GPL/LGPL协议中的漏洞,称之为Web Service Loopwhole,这主要是由于GPL是针对传统的软件分发模式的商业模式(以微软为代表)。如果你使用的GPL的代码作为基础完成你自己的软件,如果你要分发你的软件,你的软件必须也是GPL的。随着以Google为代表的软件作为服务的互联网公司的兴起,它们的“不分发软件,为客户提供网络服务”的商业模式就不受GPL协议的约束,所以Google公司在构筑他的搜索引擎的时候可以随心所欲的拿现有的GPL协议的开源代码,无需开源他的修改成果。AGPL协议就是为了防止这种情况出现,在GPL协议的基础上加了一个约束。`AGPL`协议:http://www.freeoa.net/development/design/detail-intro-agpl-agreement_2012.html3. 看上去,AGPL还是有模糊的地方,MongoDB在AGPL的基础上明确对云厂商做了限制,有更严格的`SSPL`协议。`SSPL`协议:https://www.mongodb.com/licensing/server-side-public-license4. 另一个后续是MariaDB提出了一个延迟开源的`BSL`协议。该协议的介绍请见:https://blog.csdn.net/chupai9888/article/details/100682823