7

Supposed I have a server that I have licensed under AGPLv3. Let's also assume that this server has a REST interface.

If I access this REST interface via a JavaScript script file from a client, does this make the script file and / or the client a derivative work?

5

The Short Answer:

No

The Long Answer:

The derivative definition is based on copyright law and not a license, and I can't see how a remote web services interface could ever be construed as anything other than separate from the server involved.

You are interacting with a service, not including it in your code.

A service provider MAY be able to constrain you (and your code) with a CONTRACT, but this is a LICENCE, and it shouldn't be able to re-licence your code.

An API (may) have patentable components, but the implementation of a REST service means that any code could interact with it, so it doesn't depend on copyrightable things like Java interfaces etc (or a non-trivial YML).

Although due to a recent court case between Oracle and Google over Android, an API (probably doesnt matter if it is over a remote interface) can be copyrightable, thus the service provider can constrain your actions with respect to that API. Particularly if they introduce complexity in order to force copyright infringement in order to use the interface.

<evil-design>
All remote access
to this software must always
include this haiku.(c)
</evil-design>

From memory, AGPL is about forcing the re-licencing when a derivative of the source code is offered as a service, but I couldn't follow the wording of license when I tried.

AGPLv3 Licence

Please note: IANAL and my memory is shaky.

Addendum

I looked again at the AGPL Licence, and I don't see the constraining language myself, except in the preamble.

Additional Thought

Does a report written against a AGPL licenced library (such as iText):

  • Require the database structure (usually remote) to be licenced as well?
  • Does that include the data?
  • Your additional thoughts might be the basis of a new question. – Bart van Ingen Schenau Sep 26 '18 at 14:15
3

Interacting over HTTP never makes anything a derivative work, no matter what the license.

It would count as a network user, so you would have to make the source code of your server available.

  • What does no in have *no* make mean? I think maybe it was a typo, and should either be now or not. but they have very different meanings. – Lyndon White Sep 26 '18 at 9:00
  • I think not is the correct statement since via AGPL3 section 13 only applies to modified versions of the server. – Lyndon White Sep 26 '18 at 9:01
  • @LyndonWhite Type for "to". – curiousdannii Sep 26 '18 at 10:27
  • Ok, thank you for clarifying. I believe you are incorrect. Since via AGPL3 section 13 only applies to modified versions of the server. And the OP is talking about a client. – Lyndon White Sep 26 '18 at 10:37
  • @LyndonWhite You could be right - you should write your own answer explaining section 13. – curiousdannii Sep 26 '18 at 10:39
3

No

Full text of the AGPL 3.0 is here
Below is just a paraphrased summary

IANAL & IANYL but as I understand it:

There are 2 times that the AGPL makes people release code.

  • Section 10: If you convey a modified or unmodified version of the work it will be under the this (AGPL) license.
  • Section 13: If if you modify the Program, your modified version must offer all users interacting with it remotely an opportunity to receive (have conveyed) the source code, which will be licensed AGPL (by the above)

The normal GPL only triggers on the first of these. Which mean people could create a derivative work, but never actually convey it to the user -- just expose it as a networked service. The AGPL is suppose to fix that case.

So section 10 applies to both modified and unmodified versions. But section 13 only to modified versions.

Since you built a client, and not a server, It is clear that section 13 does not apply to you, since you are not providing any one access to you're a modified version of the work over the network.

Unless you did something like copy paste a bunch of code from the servers source into your client (which you might have done, I can think of a few reasons.). At that point your client might actually be considered as being derived from the server, and someone might argue that being a client is kinda giving people access, since HTTP is a two way protocol. I think it is a stretch though. But in that case, if you convey your work, you would certainly have to worry about Section 10.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.