I wrote up a short post on how @cwebber ilustrated how the AGPL breaks when someone uses Spritely-type programming.

I took Chris's ideas and simplified them so that hopefully anyone can understand.


@cwebber @phoe @emacsen Aye, this whole thing did get me thinking. I think some other interesting examples are:

config.php files
prod.secret.exs in Pleroma

@phoe @emacsen @cwebber

The AGPL virality clause does not extend backwards, which means that AGPL code can call functions from non-AGPL libraries.

This confuses me greatly.

Seems to mention only GPLv3 (in section 13). “Non-AGPL” is more than just that, though. There’s no mention of LGPL; but presumably, AGPL assumes you turn LGPL’d code into GPL’d, and then you can consider the combination to be just AGPLv3+GPLv3? And anything else is non-combinable?

I really should read AGPL in even greater detail to understand where the boundaries lie. I’ll assume that making network calls (RPCs? HTTP requests?) towards other code doesn’t constitute linking, but section 1 definitely talks about dynamic linking. But it’s unclear:

However, it does not include the work’s System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.

So it’s saying “system libraries/tools/widely available free programs are not part of the work”, and continues going on saying that Corresponding Source does include work’s includefiles, then source code for any shared libraries/dynamically linked programs that the work is designed to require. Which would read to say if your program is designed to require Windows API, then Windows DLLs are considered part of the work/Corresponding Source, despite what the previous sentence says?!

I knew what the license is trying to do, I looked at it in passing in the past, but now I am very confused by it. As someone that likes GPLv2 (and maybe GPLv3), I am kinda scared by AGPL. Presumably I need to read it in great detail?

If DLLs/.so files are a grey area, then config.php is clearly being merged into the built binary (even if a temporary bytecode binary in RAM built by the ‘interpreter’ on-the-fly). Despite its name, it can be a complicated piece of machinery that’s fetching the actual config from other sources.


@ivan @emacsen @cwebber OK, now I understand the background (or so I think).

Important thing: AGPL does not seem to allow configuring AGPL programs with config files that contain proprietary code - even if that code is meant to be private and e.g. exposes private details about who I follow online.

@phoe @ivan you got it buddy!

And it's more obvious why if you come from a background of lisp, especially configuring emacs... which is what I explained in my talk. But almost all the audience was confused.

@emacsen pointed out that Goblins makes this more obvious with the way it handles objects, but that like my emacs example, isn't clear to a non-lisp audience. I think that was the purpose of this post (and its target audience) whereas you already clearly know lisp. :)


@cwebber @phoe @ivan

Several people never understood your examples, and didn't understand how this would be applicable to non-lisp audience. I purposefully avoided certain words that were complicated because I wanted to take @cwebber 's ideas and distill them down to the *absolute* minimum.

@ivan @emacsen @cwebber Yes, I see.

It seems that the only way of solving that issue is sharing the code that does the filtering and keeping the actual data in a separate dumb file - or dropping AGPL in some part of your code to communicate over the network with AGPL code, which basically means that you release some of your code under e.g. GPL and let people link against that - therefore losing the AGPL virality clause.

Sign in to participate in the conversation

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!