4. Taler licensing information

This file gives an overview of all Taler component’s licensing and of runtime dependencies thereof. A “component” in this context is to be read as a set of source files which can be retrieved from a single Git repository. If components consist of sources under different licensing regimes, i.e. because we want to enable third party developments to easily integrate with Taler, those are described as well.

All components are generally released under Lesser GPL, GPL or Affero GPL. The main strategy is for libraries that third parties may need to integrate with Taler to be under LGPL, standalone binaries and testcases to be under GPL, and Web servers implementing Web services and REST APIs to be under AGPL. Trivial code (such as build logic) is occasionally also simply put into the public domain. Legislations that do not have a public domain should consider that code to be under LGPL.

The project was initially started based on code and documentation from GNUnet e.V. and INRIA, and is continued to be developed by the GNUnet community and Taler Systems SA. INRIA and GNUnet e.V. have both assigned or shared their copyrights with Taler Systems SA. Thus, it should generally be said that the code is copyright Taler Systems SA.

We are also working closely with the GNU Anastasis package. Here, the same copyright sharing is in place between the original developers from BFH and GNUnet e.V., except that the copyright was assigned or shared with Anastasis SARL. Agreements are in place that allows developers to freely move code between GNU Anastasis, GNUnet and GNU Taler if this is technically warranted (note that all developers must sign the GNUnet e.V. copyright contributor agreement).

Note that this file may be outdated. If in doubt, please contact the involved GNU maintainers (currently Florian Dold, Christian Grothoff and Martin Schanzenbach) as they generally have the responsibility and right to determine the appropriate license for individual components. (That right is technically granted and constrained by the copyright agreemnts signed by individual contributors and possibly subject to decision processes within Anastasis SARL, GNUnet e.V. and Taler Systems SA. However, in practice this has so far never been an issue as so far everyone agrees on the licensing strategy and the maintainers will just make minor adjustments to consistently implement that strategy when issues arise, such as code moving between LGPL, GPL and AGPL licensed components or developers accidentally using the wrong license in a header.)

4.1. Following the AGPL

The main goal of the AGPL is to require a service provider to make the source code of the service easily accessible to all users of that service.

For GNUnet, GNU Taler and GNU Anastasis, we are realizing this requirement by implementing an /agpl/ endpoint that directs users of the API to the source code (either a TGZ or a redirect to the Git repository) of the component and its dependencies (we believe it is acceptable to not include unmodified dependencies that are easily available and findable elsewhere already). The source code (as defined in the GPL) must then be downloadable gratis and without access control from that address in a form suitable for development (that is, including build system and instructions). All of the usual constraints of distributing code under GPL apply as well.

When deploying sources that have been modified from the upstream versions released by GNU, you must thus update the /agpl/ endpoint to point to the modified source code. Note that you must always make the code of the actually deployed version available, which includes customizations, extensions, integrations or security enhancements or bug fixes.

4.2. Following the GPL

The GPL requires you to make the source code of the respective program available to all users that may be running the program. This includes again any customizations (branding, theming, extensions, integrations or security enhancements or bug fixes) you may have made. The source code for the modified program must be again released under the GPL and must be reasonably easy to find gratis for all users of your program.

When shipping binaries of unmodified versions of the GNU releases, this is satisfied as GNU makes the sources available via both the Git repositories of the project and the FTP mirrors of the GNU project. You are still required to make any packaging logic you may have written to create the binaries available to others.

4.3. Following the LGPL

To follow the LGPL, you basically do everything you need to do under the GPL when it comes to the sources you were provided.

However, you are allowed to integrate the code provided under the LGPL with other code that is not under the LGPLv3+. Nevertheless, modifications to our existing code must remain under the LGPLv3+, and we strongly encourage you to release all of your code under an appropriate FLOSS license.

4.4. Tutorials (git://git.taler.net/tutorials)

The specification has been originally developed by INRIA and by individuals being under the juridical subject called ‘GNUnet e.V.’. For each source file, the header indicated whose is holding the copyright, since some parts have been taken “verbatim” from the GNUnet e.V. foundation, and some other have been developed at INRIA or Taler Systems SA “ex novo”.

Generally, GNU GPLv3 license is used for them; see COPYING.GPL.