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
  • 1
  • 5
  • 1
    http://programmers.stackexchange.com/questions/107883/agpl-what-you-can-do-and-what-you-cant – Ampt Mar 12 '14 at 16:26
  • Are the only users of your application (either web or desktop) employees of your company? – Craig Mar 14 '14 at 16:05
  • The application will be used in a public sector environment. Internal desktops for now, I'm proposing to incorporate some of the code into an associated web app to make the process easier for the folks who have to deal with these files manually but not if it will risk create a licencing headache. Obviously, being public sector, the usage of the code needs to be conducted properly, hence my need to understand. At this point, it's clear that internal desktop usage is ok while web usage is unknown. – Jon Mar 17 '14 at 13:31

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
  • 198,589
  • 55
  • 464
  • 673
  • Hi Robert, Again, not trying to be contrary, just trying to understand. As I read section 13, it says: " if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version". The "Program" in this case, is itext (according to the def of Program in sec0). So long as I do not modify it, I should not have to make the source for itext) available. My "version" will be the original, unmodified copy I received. Cont'd. – Jon Mar 12 '14 at 17:43
  • Cont'd from prev comment. I also see nothing that says "you must also make your code that links to agpl code available". Just going by what is written in sec13. The definitions in sec0 also support that: To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. I'm not modifying itext in any way (I would only be making an exact copy). – Jon Mar 12 '14 at 17:43
  • 4
    This is why license agreements make my head hurt. – Robert Harvey Mar 12 '14 at 17:45
  • On that, we are in complete agreement! LOL – Jon Mar 12 '14 at 18:01
  • @RobertHarvey: If you really want to make your head hurt, you should read this analysis on the legal basis of what the GPL considers derived works: http://www.law.washington.edu/lta/swp/law/derivative.html – Bart van Ingen Schenau Mar 12 '14 at 18:18
  • Interesting. So, by that analysis, creating a whole new piece of code which merely make a few function calls into an unmodified piece of GPL/AGPL code does not in fact, stand as a "derivative work" because it does not incorporate any of the "copyrightable expression" (the effort and creativity that went into that GPL/AGPL program). – Jon Mar 12 '14 at 20:03
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

user252032
  • 31
  • 1