5

Note that there is this related question of which this question is by no means a duplicate. It refers to a related but separate scenario.


I'*m about to release an application and yet need to choose a license for it. I care very much about the source code of the application and any derived work to be freely available forever. The GNU GPL family seems to provide good options. Now the application is special in a sense that the users don't need to interact with it directly but only need to provide some input and they receive some output in return (as it is the case for an image converter for example). If someone now modifies the application, hosts it on a remote server and provides a user interface for receiving input and providing output then I want to require them to publish their source code. This summary about the GNU Affero GPL sounds like it could help:

Users who interact with the software via network are given the right to receive a copy of the source code.

However while scanning through the GPL FAQ if found the following pointer:

http://www.gnu.org/licenses/gpl-faq.html#AGPLv3InteractingRemotely

In AGPLv3, what counts as “interacting with [the software] remotely through a computer network?”
If the program is expressly designed to accept user requests and send responses over a network, then it meets these criteria. Common examples of programs that would fall into this category include web and mail servers, interactive web-based applications, and servers for games that are played online.
If a program is not expressly designed to interact with a user through a network, but is being run in an environment where it happens to do so, then it does not fall into this category. For example, an application is not required to provide source merely because the user is running it over SSH, or a remote X session.

This really sounds like the opposite. My program is not designed to be operated over a network but this can be easily done by developing a corresponding user interface which feeds the input to the program via its standard interface.

I'm not sure what the actual benefit of the AGPL for my application would be. Can anybody clarify on this topic and explain whether the GNU Affero GPL would require someone, who hosts the application on a remote server and provides a separate user interface for input/output, to publish the source code of the (modified) application?

  • I have rolled back your last edit, because it seems to me to completely change the sense of the question, which means I'd have to delete and rewrite my answer, which isn't a great idea. That said, both your original question and the modified one are very interesting questions, to my mind. Do rollback my change if you disagree, but my recommendation is to write a new question, linking to this one, asking what you asked in the edited version. – MadHatter supports Monica Apr 18 '17 at 20:31
  • I cite my original question here: If someone now modifies the application, hosts it on a remote server and provides a user interface for receiving input and providing output [...]. This is exactly what I emphasized in my edit. It is true that in my edit I put focus on a separate user interface, i.e. not as a part of the application, while your answer focuses on the latter. I am interested in both cases while I suppose that the constraints are somewhat weaker when using a separate interface. You already answered one of the cases so even with the edit your answer is not obsolete. – a_guest Apr 19 '17 at 15:30
  • The problem is that the separateness of the user interface is key. If the user interface is integrated (eg, linked) into what you write, a derivative work will result, and AGPL s13 will still apply. If the user interface is an add-on which invokes your work through standard userspace mechanisms, no derivative work will result, the remote user interaction will be entirely with the add-on, and AGPL s13 will not be triggered. I understand you are interested in both, but they are two very different questions. I strongly encourage you to ask the second, but separate from this one. – MadHatter supports Monica Apr 19 '17 at 15:51
  • @MadHatter I followed your advice and asked this as a separate question here. – a_guest Apr 19 '17 at 21:46
  • OK. If you're now happy with the answer to this one, by the way, do feel free to accept it. – MadHatter supports Monica Apr 19 '17 at 23:32
3

You say you want "the source code of the application and any derived work to be freely available forever". Firstly, thank you; good for you.

Secondly, you're considering using the AGPL. You note that your "program is not designed to be operated over a network" but also caution that "this can be easily done".

AGPL3 s13 provides that

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

while s5c provides that

You may convey a work based on the Program [...] provided that you also meet all of these conditions [...] You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy

So, as I read it, if you choose the AGPL3 for your program, then because it currently cannot be interacted with over a network s13 is ineffective, and for practical purposes users may use it as though it were under straight GPLv3. But if someone else were to receive a copy of your source and turn it into a program that did support such interaction, then they would have to continue to license it under AGPL3 (s5c), and this would provide network users of that modified version the right to receive copies of the source (s13) which would also be licensed under AGPL3 (s5c).

It seems to me that this is what you want, save that once copyright protection expires in whatever jurisdiction a future user is located, the copyleft protections go with it; at that point the work enters the public domain in that jurisdiction and you can no longer require people there to behave in a certain way in order to copy/use/modify/convey it. You'll be long dead by then, though, so that's probably OK. IANAL/IANYL, of course.

  • Before release, could you not modify the program so that it does have the network interaction included, even if it's only one way of interacting with the application? Then, per this answer, the desired clause attaches to it from the beginning? – Gypsy Spellweaver Apr 18 '17 at 6:32
  • 1
    @GypsySpellweaver the desired clause attaches to it from the moment of release under AGPL3, whether this is done or not. It is merely ineffective until such time as the program can be interacted with through the network. – MadHatter supports Monica Apr 18 '17 at 7:24
  • Thank you for your answer! Now my problem is that the program itself won't involve network interaction but it could be operated remotely over a network. Let's pick up the image converter example: It provides some kind of interface through which users can feed it an image. Now someone hosts a web server, provides a way for image uploads and runs my (modified) converter application on his server. Users upload their images using this external file service so they ever interact only indirectly with my application (while all results are produced by it). Does the AGPL help in this case? – a_guest Apr 18 '17 at 17:30
  • @a_guest The relevant question is whether the new network service and your AGPL utility (1) form a single combined/derivative work under copyright law (so the AGPL applies to both) or (2) are two distinct copyrighted works that merely happen to interact as fellow programs (so the AGPL leaves the new code alone). This is a distinction that can be settled definitely only in a court of law, though we can make some reasonable guesses on a case-by-case basis; see gnu.org/licenses/gpl-faq.en.html#MereAggregation – apsillers Apr 19 '17 at 18:48
  • @apsillers I see case (1) is covered by this answer but I see case (2) as problematic too (or especially). Suppose my program takes a file as input. Then someone makes modifications to it, hosts a file upload service and runs the modified version of the program on the same (or another) server. All uploaded files are passed to the modified program and users can download the results. They will not interact directly with the program but only through the upload service. However all output (the main purpose) is produced by the program. Does the AGPL require to publish the source code in this case? – a_guest Apr 19 '17 at 21:21

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.