详细介绍AGPL协议
2013-05-26 07:25:20

AGPL的全称为:GNU Affero General Public License,是GPL的一个补充,在GPL的基础上加了一些限制。AGPL这个协议的制定是为了避免一个GPL/LGPL协议中的漏洞,称之为Web Service Loopwhole,这主要是由于GPL是针对传统的软件分发模式的商业模式(以微软为代表)。

如果你使用的GPL的代码作为基础完成你自己的软件,如果你要分发你的软件,你的软件必须也是GPL的。随着以Google为代表的软件作为服务的互联网公司的兴起,它们的“不分发软件,为客户提供网络服务”的商业模式就不受GPL协议的约束,所以Google公司在构筑他的搜索引擎的时候可以随心所欲的拿现有的GPL协议的开源代码,无需开源他的修改成果。AGPL协议就是为了防止这种情况出现,在GPL协议的基础上加了一个约束。

AGPL许可证最初由Affero公司发布,可以认为是GPL许可证的加强版,主要用于提供网络服务的软件,是一种强Copyleft型许可证。AGPL版本1在2002年发布,而GUN AGPL版本3在2007年发布,前者基于GPL版本2,后者基于GPL版本3。AGPL继承了GPL所有条款,并在此基础上增加了一条:

如果其许可下的软件与用户通过网络进行交互,那么就需要提供源代码给用户,所有的修改也同样要提供给用户。

原有的GPL协议,由于现在网络服务公司兴起(如:google)产生了一定的漏洞,比如使用GPL的自由软件,但是并不发布与网络之中,则可以自由的使 用GPL协议确不开源自己私有的解决方案,AGPL则增加了对此做法的约束。

GPL的约束生效的前提是“发布”软件,即使用了GPL成分的软件通过互联网或光盘release软件,就必需明示地附上源代码,并且源代码和产品也受GPL保护。

新许可面向其代码被用作软件服务化(SaaS)应用的开发人员,新许可将确保对开放源代码SaaS应用代码的修改会反馈给自由软件社区。

这样如果不“发布”就可以不受约束了。比如使用GPL组件编写一个Web系统,不发布这个系统,但是用这个系统在线提供服务,同时不开源系统代码。最典型的例子就是一个Web应用程序如果使用了AGPL许可证,那么运行这个Web应用程序或其派生作品供他人访问时就需要以AGPL发布其源代码。AGPL协议在“软件即服务”(Software as a service )大行其道的今天,具有重大的意义。

最新版本基于GPLv3。采用GNU GPL许可的软件能够被自由地修改、重新发布。如果软件只在一家公司内部使用,公司可以不将修改部分反馈给自由软件社区。



从本质上讲,这个许可证是GPLv3加上额外的条款,主要针对的是基于web的应用程序,要求网络程序开发者必须让源代码能通过网络分发。新许可证补上了GPLv3许可证没有覆盖到的内容。AGPL v3将对那些使用了GPL代码,但没有遵循分享规定的网络公司有重要的影响。新许可证与GPLv3兼容,Google将是一位主要的观察对象。