“Performing” and “Using” the Software

Most Open Source Licenses place conditions on the distribution of the software, either alone or as part of a derived work. When someone runs a distributed application, however, they don’t “distribute” the software, leading to what has been called the “SaaS loophole.” Because the CAL deals with networked applications, we want to make sure that the software source code stays open and available even when it is used to provide a service over the network.

Another license, the Affero Genero Public License (AGPL 3.0), tries to deal with the SaaS loophole by requiring people who offer a “modified version” of AGPL-licensed software to users over a network to also provide access to source code. The AGPL uses a new concept of “network interaction” to condition these rights, however, which doesn’t currently have a basis in intellectual property law.

In contrast, the CAL places conditions on the “use” of the software (under patent law) and the “public performance” of software interfaces (under copyright law). In concrete terms, this has much the same effect as the “network interaction” clause of the AGPL, but ties the conditions included in the CAL to the exact permissions granted under intellectual property law, rather than on a network “interaction” that can be more difficult to classify.

The idea of “publicly performing” the software interface also helps address whether a compatible reimplementation is covered or not. Under the CAL, a compatible reimplementation is still “performing” the same interface, and, as such the creators of that reimplemented work would need to make their source code available under an open source license.

Thus, the CAL works by ensuring that the Holochain framework itself stays open source by using a strong network copyleft license. Unlike the AGPL, however, the license also provides a built-in mechanism for authors to allow elements of the work to be bundled into applications that are licensed commercially. Conceptually, this exception is similar to how the “GPL plus classpath exception” is used for Java, and how the Mozilla Public License v.2 allows for the creation of “Larger Works.”

Enhanced License Compatibility

Another feature of the CAL is that it takes a permissive-as-possible approach to license compatibility. Like other reciprocal licenses, the CAL requires that users have access to the source code, including the source code to derivative works. However, unlike other licenses, the source code to any modifications may be under any open source license that allows programs to be built using code under two different licenses. That means that even though the CAL requires compatible implementations of the API — “public performances” as described above — to be open source, other teams can implement those compatible implementations under different open source licenses.