Let's say I have a web app, and I want to offer an AGPL image editor in it. That image editor is run separately from the app but is displayed in an IFrame on it.

The source code of both apps is completely separate and the AGPL licensed editor is unchanged.

Does this fall under the terms of AGPL? Does the source of the app just including it also need to be open?

1 Answer 1


In a web context, it is not always clear where one program starts and the other ends. However, since content in an iframe runs in a separate browsing context, it is likely a separate Work in the sense of the AGPL. Thus, loading an image editor in an iframe would likely be OK, and would probably not require you to publish source code for the other software.

Of course, these concerns can be entirely side-stepped by loading the AGPL image editor in a separate tab.

As a general rule of thumb, open source licenses never affect other software (Open Source Definition #9: License Must Not Restrict Other Software). Thus, you can distribute or run any open source program side by side with other software.

  • Thank you! have been looking for this for a while. Forgot to clarify something: The source code of both apps is completely separate and the AGPL licensed editor is unchanged. There is one caveat, the files from the main app are loaded into the image editor for editing then saved back to the main app periodically for version control. This happens on the server side. Does that cause trouble?
    – DannyZB
    Sep 27, 2020 at 5:18
  • 1
    @DannyZB In a web context, it's not always clear whether frontend and backend are separate programs or whether they form a single distributed program. However, given an unmodified AGPL frontend component there's a solid argument that your backend is entirely separate. How the image is loaded into the editor could perhaps matter. It would be clearest that the editor is separate from other frontend if instead of frames accessing each other's data structures, the editor is configured with URL parameters, loads its input from the backend, or receives data via window.postMessage().
    – amon
    Sep 27, 2020 at 14:05
  • Great, Thank you
    – DannyZB
    Sep 29, 2020 at 16:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.