So if I had a microservice architecture and one of my services relied on a piece of AGPL software, and that service wasn't customer facing, but a service that communicated with it was, would I be required to open source all of those services? or any of them? How does this license impact this architecture?
-
Related: programmers.stackexchange.com/a/314908/198703– gavvApr 27, 2016 at 21:28
-
1@gavv: Why cite a specific answer (not even the top answer) instead of the question itself? Because you support that specific interpretation? Be careful that this is a very controversial interpretation (just have a look at the comments it got).– Zimm i48Sep 14, 2016 at 14:09
-
@Zimmi48, you're right. I like that specific answer, but a link to the question would be more appropriate.– gavvSep 15, 2016 at 12:43
1 Answer
If the the services together form a derivative work under copyright, then the AGPL source-sharing provisions apply to the entire work, and you must share the source code for the entire work. If they do not form a new work (i.e., they are considered independent program-works that merely happen to interact with one another), then the source-sharing provisions apply at most to the AGPL work only, and only if you have modified it in a way that qualifies as a derivative work under copyright. Note that the determination of when two programs interact with sufficient closeness to form a new single program-work is a subjective determination.
If the AGPL service is indeed a separate work from the rest of your code, then if both
- the user interacts with the service in a way that satisfies the AGPL's standard of "interacting with it remotely through a computer network," and
- you have modified the service in a way that produces a derivative work under copyright law
then you must make the source code available to your users.
I am not aware of any case law about what level of network interaction is necessary, but if the AGPL service is a utility used by another service that the user actually interacts with (e.g., an AGPL database used by a Web service that the user actually sends packets to) then it probably does not satisfy that condition. (However, note that in my parenthetical example, the database/Web service combo could be a modified work of the AGPL work and the AGPL may apply to both, in which case source-sharing would be necessary for the whole thing, as mentioned in the first paragraph.)
-
IMHO you are mis-representing the AGPL. If the code is used as-is and unmodified, the AGPL is not much different from the GPL. May 7, 2016 at 19:11
-
@Philippe I tried to make that clear with the requirement that "you have modified the service in a way that produces a derivative work" is necessary to trigger AGPL provisions. How can I make it more clear?– apsillers ♦May 7, 2016 at 19:39
-
Very clear! The more I read the AGPL, the more I better understand the licensing approach of MongoDB for instance. May 7, 2016 at 20:48
-
3@apsillers Let's say I create a microservice for PDF Conversion using the AGPL version of iText7. Then I build a copyrighted web application that calls that microservice. #1: Should I disclose only the microservice source-code, or also the web application source code? #2: should I disclose the source code with the customers only, or with the whole world (on GitHub for example)? Thanks in advance Dec 10, 2018 at 9:17
-
3@AndreaLigios The central question for #1 may be a difficult legal determination: does your use of an AGPL microservice create a derivative work? I would personally lean toward "no, it does not" but as I detailed in my answer, I don't know of any real case law on the subject. By contrast, #2 is very easy to answer: whenever you have AGPL obligations, you have them only toward people who actually use (or receive) your software -- you have no obligations toward people who have never interacted with your software. (Same for GPL: you have obligations only insofar as you distribute the software.)– apsillers ♦Dec 10, 2018 at 13:17