I am writing a software for commercial purposes that reads and parses text files for further retrieval and analysis. To store the imported text files I would prefer to use Mongo DB. This DB had been published under a strong copyleft license (AGPL) once and nowadays under a license (SSPL) that is even not accepted a "compatible" to OSS by the FSF. Is there a way to deliver a package including my software and Mongo DB (under SSPL) without the threat that my (proprietary) SW would be infected via a copyleft with the obligation to make my own SW publicly available as source code as well? Would a separate delivery or just deployment of the binaries maybe do the job (e.g. like a Java program that requires to separately install a runtime on the system) ?
1 Answer
MongoDB is licensed under the non-Open Source “SSPL” license. However, this license is identical to the GPL or AGPL except when using it as a “service”. The GPL and AGPL would not prevent you from distributing such copyleft software alongside your proprietary programs, as long as they are separate programs. This is also a core part of the Open Source Definition:
9. License Must Not Restrict Other Software
The license must not place restrictions on other software that is distributed along with the licensed software. For example, the license must not insist that all other programs distributed on the same medium must be open-source software.
That the SSPL isn't Open Source is due to, among other issues, violating this clause in some scenarios.
But what is a “service” in the context of the SSPL? Per the 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.
This is (deliberately?) unclear. Is your use a “service”? Probably not, but it could also be argued differently.
So, you can make the business decision to accept this risk.
Alternatively,
You could buy a MongoDB commercial license.
You could ask your customers to provide their own MongoDB-compatible database connection.
You could port your application to a different database that has clearer terms. There are many truly Open Source databases to choose from. For example:
- CouchDB is a popular document database and available under the permissive Apache 2 license.
- PostgreSQL is a very popular and state of the art relational database. It is available under a permissive license, similar to MIT or BSD licenses.
- SQLite is public domain software and easy to embed into applications, making it unnecessary to distribute a separate server. Read SQLite's “appropriate uses” guide – it is more a replacement for custom file formats than it is for client–server databases. But this sounds like it might actually be a great fit for your usecase.
Don't be fooled by the names of the “SQL” databases: nowadays they are very flexible and also offer first-class support for JSON data, making it possible to use them as a hybrid relational/document database.