2

Suppose you build a point of sale software using PHP code. You used another standalone server for the report viewing such as the Jasper Reports Server. These two links only via library built in PHP which the Jaspersoft also created and is licensed under LGPL. It communicates through a RESTful API which then accesses the reports in the Jasper Reports Server to be embedded in an iFrame in the Main PHP Program. However, this Jasper Server is licensed under AGPLv3. These two programs are separate and communicates only via the library. There was no code modifications made in the library.

The bottom line is, does the jasper server with its AGPLv3 license will also affect the main program? Since the two programs are implemented separately and links only through an LGPL library, how will the Jasper Server AGPLv3 come into play?

3

The AGPLv3 is the same license as the GPLv3, with an extra section that requires you to provide the source code when

  • you modified the AGPLv3-covered software, and
  • users interact with the software remotely over a network.

Since you haven't modified the AGPL-covered software, we can treat it as the GPLv3 for this discussion.

So would the use of a GPLv3-covered server on your backend somehow affect your other backend code? In practice, no:

  • The GPL only triggers requirements when giving someone a copy of the program.
  • As your program and the (A)GPLv3-covered program seem to communicate over a REST API, they are completely separate programs and the (A)GPLv3 license doesn't affect your code – but this depends on how the connector actually works.

On that last point: if your architecture looks something like this, you likely have two separate programs and you only have to comply with the LGPL license, and that only triggers requirements when giving someone else a copy of your software:

      Your Program                        Not Your Program
+-----------+----------------+            +-------------+
| your code | LGPL connector | <--------> | AGPL server |
+-----------+----------------+  REST API  +-------------+

In contrast, if this were a single program your program would fall under the AGPL, and you would have to make the source code available:

                              A Single Program
----------------------------------------------------------------------------
+-----------+                +----------------+                +-----------+
| your code | <------------> | LGPL connector | <------------> | AGPL code |
+-----------+ function calls +----------------+ function calls +-----------+

After all, it doesn't matter whether your code directly interacts with code under a certain license, but whether your program (in its entirety) is derivative of other code, for example by including that other code.

There is an argument that this interpretation of the (A)GPL doesn't count for dynamic languages like PHP where there is no binary that actually includes both your code and the (A)GPL code, but I wouldn't bet on it.

So far I have only discussed the backend, and not the embedding of the AGPL web app in an iframe. As long as the iframe contents are treated separately from your other frontend code, I don't think it could be considered to form a single program for copyright purposes. However, if the iframe and outer frame share data over mechanisms like window.parent, that could be an indication that they form a single program.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy