27

I'm trying to understand the difference between the SSPL and the GNU AGPL license, after reading the terms of SSPL.

The 13th clause of the license states the following:

If you make the functionality of the Program or a modified version available to third parties as a service, you must make the Service Source Code available via network download to everyone at no charge, under the terms of this License. Making the functionality of the Program or modified version available to third parties as a service includes, without limitation, enabling third parties to interact with the functionality of the Program or modified version remotely through a computer network, offering a service the value of which entirely or primarily derives from the value of the Program or modified version, or offering a service that accomplishes for users the primary purpose of the Program or modified version.

“Service Source Code” means the Corresponding Source for the Program or the modified version, and the Corresponding Source for all programs that you use to make the Program or modified version available as a service, including, without limitation, management software, user interfaces, application program interfaces, automation software, monitoring software, backup software, storage software and hosting software, all such that a user could run an instance of the service using the Service Source Code you make available.

I'm not sure if I understand correctly the point, but this what I'm thinking:

  1. Under the GNU AGPL:

    • It is legal to create a proprietary program B that uses AGPL-licensed program A over a local network N1.
    • It is legal that program B provides a service S to an end-user over network N2.
    • It is legal to modify the program A without sharing changes, since A is connected to N1 and the end-user is provided with the service S under different network N2.
  2. The new SSPL license fixes the gaps above, in order to grant a pure open-source service implementation without any proprietary counterpart.

Is my analogy correct? Is there other differences?

2 Answers 2

22

The AGPL requires that the people interacting with program A over a network have the right (and possibility) to obtain a copy of the source code of A. The AGPL does not strictly define what interaction over a network means and if it includes indirect interaction via program B.

It can be argued that interaction with a program means that your actions as a user cause a reaction in that program, even if the action was initially done on another program. This would mean that if program B just forwards the user interactions to program A, then it can be argued that the user is actually interacting with program A. On the other hand, if the requests from B to A can not be directly related to user actions, then the user probably not interacting with A.

The SSPL license indeed tries to close the gap that a copyleft program can be used in the background without giving out the sources.
If that is actually successful remains to be seen, because the SSPL license seems to step outside the realm of copyright. The SSPL license puts requirements on programs that are completely unrelated in terms of copyrights and it remains to be seen if that clause will actually be upheld in a court of law.
For example, if you have a web-application that offers data-storage services using MongoDB and runs on Microsoft's IIS as webserver, then clause 13 of the SSPL requires that you provide the source code of IIS even though IIS is in no way derived from code that is copyrighted by the authors of MongoDB.

20
  • 3
    @kais Because the SSPL requires distribution of source code for applications that are unrelated in terms of copyright Commented Mar 3, 2019 at 9:49
  • 4
    @Kais If you provide a web-application that uses MongoDB under the SSPL and runs on Microsoft's IIS, then clause 13 of the SSPL requires that you provide the source code of IIS. Even though IIS is not in any way derived from code that is copyrighted by the authors of MongoDB. Commented Mar 3, 2019 at 15:39
  • 3
    Ok, no, this is not how clause 13 works. IANAL, but it very plainly says here and elsewhere that license only applies to building a public service of the covered software and not situations where the software in simply a component of another application or system. It excludes major components of the OS as well as system libraries. The license restriction just says that you aren't allowed to create a closed-source service offering of the covered software. What we have in this accepted answer is a very common misreading of the SSPL promoted by its detractors. Commented Jan 14, 2021 at 21:46
  • 2
    @bart-van-ingen-schenau - No, it really doesn't. Section 13 only applies to the functionality of the licensed software provided as a service, or any modifications you make to that end. You can get the info directly from MongoDB on this one: mongodb.com/licensing/server-side-public-license/faq "The copyleft condition of Section 13 of the SSPL applies only when you are offering the functionality of MongoDB, or modified versions of MongoDB, to third parties as a service. There is no copyleft condition for other SaaS applications that use MongoDB as a database." Commented Jan 15, 2021 at 20:24
  • 3
    @deriamis you don't draw attention to it, either, which would only be courteous in this context. However, this is the comments field of Bart's answer, so I don't intend to continue the discussion here. If you think Bart's answer is wrong, you should have a(nother) go at writing your own answer, explaining the differences between the SSPL and the AGPL as you see them.
    – MadHatter
    Commented Jan 19, 2021 at 20:17
4

From my reading of this, the relationship of the SSPL to the AGPL is similar to that of the GPL to the LGPL.

Say I create a calculator with a really nice, sophisticated user interface that uses the GNU Multiple Precision Arithmetic Library (GMP library) and I distribute binaries of this. Because (since version 6) this is licensed under the LGPL, so long as I give you a copy of the GMP library source, along with any modifications I have made to this, everything's fine; I need not give you the source for my nice, sophisticated user interface.

However, if I'd done the same thing with the Class Library for Numbers (CLN), it would not be enough to give you the source code and any modifications I'd made to that; because it's licensed under the GPL, I would also need to give you the full source code (in a form suitable for modification and rebuilding) to my nice, sophisticated user interface.

A parallel to this would be if I created a nice, sophisticated user interface for something like Redis and sold access to this user interface as an on-line service. If Redis were distributed under the AGPL I would need to give you the source code for Redis and any changes I'd made to it, but not to the nice user interface I'm providing because I'm not linking my sophisticated user interface to Redit code, I'm merely accessing it over the network as part of my service, even though my service is basically a nicer version of Redis.

The intent of the slight change from the AGPL to the SSPL is that, because my nice, sophisticated user interface is basically still selling the Redis service itself, I must give you the source code for my nice UI, as well as the Redis source code, if I'm selling you network access to my system.

Now this might be (and, it seems, is) seen by some as "unfair" or "restricting freedom," especially if the nice, sophisticated user interface I created is a large work that's doing some fairly sophisticated and valuable stuff. And that's not an unreasonable opinion. But this is nothing new; the exact same thing is done with the GPL with libraries such as GMP before version 6 (when it was GPL), CLN, and even readline.

Arguably, the GPL is even less open than the SSPL in intent. The SSPL, though it may not be written to make this as well defined as it could, at least does declare that it's trying to address,

...offering a service the value of which entirely or primarily derives from the value of the Program or modified version, or offering a service that accomplishes for users the primary purpose of the Program or modified version.

With the GPL, on the other hand, it's been made clear by at least some of its users that it's directly designed to force release of source code even when the GPL code added to it is serving only a relatively trivial function unrelated to the core functionality of the full source code, such as adding readline to a large and sophisticated language system. Bruno Haible, (the original author of GMP), when discussing why he wanted GMP to remain under GPL instead of LGPL, said, "Building libgmp.a was just too hard work. Other people shouldn't get it for free."

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.