4

So, I've been reading the AGPL and here is my understanding (not being a lawyer and I'm not trying to look at it through the lens of "Since I WANT it to be ''free'', it therefore is.". In my case, I am considering the use of itext, an AGPL library, to crack open PDF files and extract the text - that's it. There will be an internal desktop app and I've proposed using my extraction code (which uses the itext dll) on the website to speed up the process for those folks upstairs who've been doing it manually for years.

Under definitions:

  • "the program" means the itext lib, being the copyrightable work.
  • "modify" or "based on" means, a version of the program which differs from the original. Not applicable here since I am not modifying the code.
  • "covered work" means the original or modified versions of the original work. In my case, it would be the original work.
  • "propagate" and "convey" mean to copy or distribute the program (the itext lib, in my case, compiled as a dll), in which case, as I understand it, the source to the covered work must be made available. This doesn't apply to use within companies (since the company can require employees to not make copies and distribute software). Use on public facing networks though, might be a consideration per sec13, though the web users won't be interacting with the program itself or with the output of the program.
  • "interactive user interface"... so far, haven't seen one in the lib but this is probably the least clear of the definitions since it mentions the "work" and libs (the work, in this case) generally don't interact with users. If I need to, I can include a mention somewhere, no biggie.

So, by my interpretation of the definitions, the covered work is the itext code I am using. The code I write separately, is not based on or modified from the itext code and thus, can be licenced any way I choose, incl locking it down tightly or posting openly on my fav forum. So long as I do not modify or incorporate copyrighted AGPL code directly into my code, there is nothing I can see in this licence that prevents me from linking to the original version I downloaded. Most I might have to do is provide the source to the version of the covered work.

So, emotions aside and focusing solely on legality, what say you? I think it's clear from the FSF FAQ, that internal corporate use means I can do pretty much anything I like and no source needs to be distributed outside the organization. My only real concern is making a web app which in turn, makes calls to the itext lib. What am I required to do in this case? I believe I only need to provide a link or location to download the itext code. Another option, what if I made a small, separate, standalone program, and had the website call it via a standard "run" mechanism? The rest of the existing website should not have to suddenly fall under the AGPL even if my text extractor portion does, correct?

Jon
  • 161

2 Answers2

4

The only material difference between the GPL and the AGPL is that the AGPL extends the concept of distribution to include "providing the web interface of a program to an internet-facing customer."

If you really want a workaround, the way you do it is by wrapping the AGPL library in an executable, and calling it from the command line. The FSF calls this "arms-length communication;" it means that your AGPL library is not "linked" with your executable via early binding or late binding programming language mechanisms.

See here, where it says:

In many cases you can distribute the GPL-covered software alongside your proprietary system. To do this validly, you must make sure that the free and non-free programs communicate at arms length, that they are not combined in a way that would make them effectively a single program.

The difference between this and “incorporating” the GPL-covered software is partly a matter of substance and partly form. The substantive part is this: if the two programs are combined so that they become effectively two parts of one program, then you can't treat them as two separate programs. So the GPL has to cover the whole thing.

If the two programs remain well separated, like the compiler and the kernel, or like an editor and a shell, then you can treat them as two separate programs—but you have to do it properly. The issue is simply one of form: how you describe what you are doing.

In short, the AGPL library has to be a standalone program, and your application has to be able to function without it.

As always, if you have real legal concerns, you should consult a real lawyer who specializes in this sort of thing.

Robert Harvey
  • 200,592
2

My understanding is (I'm not a lawyer), if you don't modify it, you're free to use in public facing web app on private server. See for example, https://opensource.stackexchange.com/questions/4691/java-and-agpl-3-how-far-does-license-extend-into-web-app