DEAR PEOPLE FROM THE FUTURE: Here's what we've figured out so far...

Welcome! This is a Q&A website for computer programmers and users alike, focused on helping fellow programmers and users. Read more

What are you stuck on? Ask a question and hopefully somebody will be able to help you out!
+3 votes

Sorry if this seems off topic, but I just got out of a discussion/argument and now I feel less sure about what I thought I knew.

Pretend we have DeveloperA and DeveloperB.

DeveloperA releases some javascript with AGPLv3+.

DeveloperB has a proprietary website, but decides they want to use the code from DeveloperA to completely replace something on their website. So this is not an optional change like analytics that users are free to run/block at will, this is for some or all of a web form/graphical interface for that website. How much of, if any, of that website code does DeveloperB need to release?

edited by

2 Answers

+1 vote
Best answer

DeveloperB is required to provide all the code that is AGPL. How much of the proprietary code must be re-licensed to AGPL? My understanding is that this is the same as it would be with the GPL, since the license is basically a modified version of the GPL. What changes is that with AGPL the "user" is considered that who runs the program over a network, instead of just the physical user on the machine. In short, any code that can be considered a direct extension of DeveloperA's AGPL code must also be AGPL. If the AGPL code and the proprietary code are combined in a way that they are effectively two parts of the same program, they are considered one program and it must be AGPL. All other code that is "at arms length" with the AGPL code can be considered a separate program and therefore does not need to be re-licensed (an example would be the kernel and a text editor since an AGPL text editor would not require an AGPL kernel despite needing the kernel to function). It does sound vague but I think it's impossible to draw a hard line; it's a matter of defining what parts of a program constitutes a derivative work, or "modified version" as defined in the license itself:

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.

For a website's JavaScript, I would say all the proprietary JavaScript built around the AGPL code would probably have to be re-licensed.

Disclaimer: IANAL

selected by

I think this is the most complete explanation. Thanks for the help.


to add a technical note, the fundamental factor that makes code "parts of the same program", is when the code is running in the same memory space - the GPL was written with native code in mind, where that distinction is very clear, and it is known at compile-time which code will be running - it gets very messy with a web browser; because they will mix in arbitrary code at runtime; and neither the developer nor the user can know exactly what code will be running, unless all of the code originates from DeveloperB's server

DeveloperB is very likely to design the program to mix in code that DeveloperB is not hosting, code that neither DeveloperB nor DeveloperA wrote, fetched from possibly hundreds of other websites, which any of those other websites could change at any moment - all of those scripts would need to be AGPL-compatible also

+1 vote

JavaScript is downloaded and executed locally so AGPL or GPL apply the same way, it's a local script. A website can use multiple scripts and they can coexist with different licenses the same way GPL software can coexist with non-GPL software locally. Two scripts are like two programs. If a script extends/modifies or just uses another one that is AGPL, then I think the whole script must also be AGPL.


Thanks this was helpful to have a very concise explanation. It makes sense that any of the client side javascript that directly uses the AGPL javascripts should also be re-licensed.

Contributions licensed under CC0