chiark / gitweb /
Licence: Provide CAF Login Exception
authorIan Jackson <>
Sun, 25 Oct 2015 12:02:34 +0000 (12:02 +0000)
committerIan Jackson <>
Sun, 1 Nov 2015 21:27:50 +0000 (21:27 +0000)
With the current AGPLv3 licence, someone who deploys a modified CAF
must make available their whole web application to all callers.  This
means that it is not possible to deploy a completely private web
application using CAF.

I don't think this is desirable.  My intention in using the AGPLv3 is
not to force everyone to publish their source code outside their user
community.  To put it another way: I want to flatten the power
relationship between a website's users and its operators.

But it is not my aim to undo the power imbalance between a website's
authorised users and other people on the internet.  Indeed such an
objective would be bizarre for a module whose function is to enforce
access control.

I do want to try to make it possible for authorised users of a
website, who don't like the decisions made by its operator, to set up
an instance of their own, with modifications to their own taste.

I'm therefore providing what I'm calling the "CAF Login Exception, v1"
as an Additional Permission (as contemplated by AGPLv3 s7).

I have also discussed this with my management at Citrix (since Citrix
is also a copyrightholder).  Permission was granted orally by my line
manager in an in-person coversation on Tuesday the 27th of October.

Signed-off-by: Ian Jackson <>
Signed-off-by: Ian Jackson <>
AGPLv3+CAFv1 [moved from AGPLv3 with 96% similarity]

similarity index 96%
rename from AGPLv3
rename to AGPLv3+CAFv1
index dba13ed..05146c7 100644 (file)
--- a/AGPLv3
@@ -1,3 +1,41 @@
+CGI::Auth::Flexible is a perl CGI authentication module.
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version, with the "CAF Login Exception"
+as published by Ian Jackson (version 1, or at your option any 
+later version) as an Additional Permission.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+GNU Affero General Public License for more details.
+CAF Login Exception (version 1)
+To avoid forcing users to make the source code of their whole
+application available to non-users, I (Ian Jackson) have granted this
+exception as part of the licence of CGI::Auth::Flexible.
+When considering AGPLv3 section 13 "Remote Network Interaction" (or
+similar provisions in successor licences):
+If all interactions with the Program (other than interactions with the
+user authentication system) require user authentication, the
+provisions of that section apply only to interaction with the Program
+by authenticated users.
+This is an Additional Permission as contemplated by AGPLv3 section 7.
+- Ian Jackson
                        Version 3, 19 November 2007
index d4c740c..9b03f82 100644 (file)
@@ -7,15 +7,19 @@
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU Affero General Public License as published by
 # the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
+# (at your option) any later version, with the "CAF Login Exception"
+# as published by Ian Jackson (version 1, or at your option any 
+# later version) as an Additional Permission.
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # GNU Affero General Public License for more details.
-# You should have received a copy of the GNU Affero General Public License
-# along with this program.  If not, see <>.
+# You should have received a copy of the GNU Affero General Public
+# License and the CAF Login Exception along with this program, in the
+# file AGPLv3+CAFv1.  If not, email Ian Jackson
+# <>.
 use strict;
 use warnings FATAL => 'all';
@@ -184,7 +188,8 @@ sub gen_srcdump_link_html ($$$$) {
 sub gen_plain_licence_link_html ($$) {
     my ($c,$r) = @_;
-    gen_srcdump_link_html($c,$r, 'GNU Affero GPL', 'licence');
+    gen_srcdump_link_html($c,$r, 'GNU Affero GPL with CAF Login Exception',
+                         'licence');
 sub gen_plain_source_link_html ($$) {
     my ($c,$r) = @_;
@@ -471,7 +476,7 @@ sub new_verifier {
            srcdump_dump => \&srcdump_dump,
            srcdump_prepare => \&srcdump_dirscan_prepare,
            srcdump_licence_path => undef,
-           srcdump_licence_files => [qw(AGPLv3 CGI/Auth/Flexible/AGPLv3)],
+           srcdump_licence_files => [qw(AGPLv3+CAFv1 CGI/Auth/Flexible/AGPLv3+CAFv1)],
            srcdump_listitems => sub { (@INC, $ENV{'SCRIPT_FILENAME'}, $0); },
            srcdump_filter_cwd => 1,
            srcdump_system_dir => sub {