5

I have a question regarding integration of a GPLv3 software into a broader application stack and what I am legally obligated to do under the terms of the license. I browsed the existing threads on StackExchange, but couldn't find a similar usecase. To keep things simple, here is the overall problem:

I am working on a closed-source application prototype that in the future may need to become commerical. Because of this, the IP for the code, as well as the right to its use, need to remain closed. I would like to use a ML algorithm developed by someone else and released under GPLv3. In particular, I would like to provide the inputs and present the outputs within my mobile application. I understand that I cannot distribute the licensed software without releasing its source, so here are my questions:

Questions

If I develop a cloud back-end that handles the requests from my mobile application (which is distributed on AppStore and PlayStore) am I distributing the licensed software that "lives" only on the back-end? In other words, am I required to open-source the source of my entire back-end stack, or, because I am not distributing the GPL-licensed software (but a software that simply calls it), I can simply integrate the algorithm into my back-end without open-sourcing it?

Could I build software that effectively wraps this algorithm into an HTTP API, publish its source code under GPLv3 and then call this API in my application via HTTP without having to open-source my back-end?

What are the other ways I might be missing in which could utilise the algorithm that's licensed by GPLv3 without having to open-source my entire application?

Disclaimer

I looked at a related question which suggests that a "public HTTP API" could be a viable option, but in my case such API does not exist. If I were to build it, would I need to make it publicly accessible (e.g. by running the entire infrastructure behind it), or simply make the source publicly accessible?

1 Answer 1

5

Let's define the boundaries here:

  • You have a mobile app which is proprietary and closed source.
  • You want your mobile app to use a GPLv3-licensed Machine Learning (ML) algorithm code that will be placed on a backend.

In this case, you can keep your mobile app closed source since it is not directly linked to GPL-licensed code.

The whole backend implementation source code does not have to be made available to users of the mobile app, since it is not distributed, as per terms of the GPLv3.

If the ML algorithm code was licensed under AGPLv3, then it would be different story. AGPLv3 requires all code to be open-sourced if it will either be distributed or made available by remote network interaction (please see section 13 of AGPLv3, quoted below).

Notwithstanding any other provision of this License, 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 by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph.

If the ML algorithm code is licensed only under GPLv3, then remote network interaction would not be considered distribution, and thus your backend implementation would not be subject to the distribution conditions of GPLv3.

This question is different, as it is about AGPLv3.

Also, please see the GPL and AGPL FAQ:

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.

4
  • 2
    "The whole backend implementation code can also be kept closed source, since it is not distributed" - Well, sort of. You're not required to publish it, yet to conclude that it is therefore 'closed source' is a bit of a misnomer, since the software should still technically be GPL in nature, albeit unpublished. I would think it's clearer to say that it's "private/internal open-source" or a "private internal application (of license which we need not specify, since we're not distributing it)" or something like that. See: gnu.org/licenses/gpl-faq.html#GPLRequireSourcePostedPublic
    – Brandin
    Commented Aug 8 at 5:34
  • @Brandin Rephrased to "The whole backend implementation source code does not have to be made available to users of the mobile app, since it is not distributed, as per terms of the GPLv3.".
    – ruben2020
    Commented Aug 8 at 7:00
  • 1
    Brilliant, thank you for the thorough answer and referencing the licenses. This was a lot of much appreciated help! Commented Aug 8 at 7:39
  • And, this may be considered a valid loophole in the GPL - for this reason, all open source developers should consider switching from GPL to AGPL.
    – user20574
    Commented Aug 8 at 19:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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