I am not very well familiar with details in how free licences work and interact, so I'm seeking help.

Situation in brief: There is a desktop application X licensed under AGPL v.3. Users of X may install an X's browser extension (also under AGPL v.3) which imports parsed data from common web-sites to X's desktop app (for that, the desktop app runs a server that accepts data from the browser's extension).

Now, I've developed a small app, Y, and I want it to be able to import data from the X's browser extension. For that, I only need to know the format of the data sent by the X's extension, and to mimic the X's server in my app Y. I do not use the X's source codes for developing the server at all, I build it from scratch and make it correctly accepting the data from X's browser extension.

May such situation raise any licence/legal issues? Will that depend on the licence I will choose for my app Y?

Edit: I do know the format of the data sent by X's extension - it is simple JSON data. It is documented at X's website, although not in very detail. Details are easily found by direct inspection of the JSON object. But I should add that this documentation is aimed at contributors who wish to improve/add webpage-parsing capabilities of the X's application itself rather than other apps (although there is no explicit statement that this information cannot be used for importing data into other apps).

If that helps, the application X is Zotero.

  • 3
    You say you need to know the format of the data sent by X's extension. How are you finding this out? Is it documented somewhere?
    – MadHatter
    Commented Jul 15, 2018 at 13:25

1 Answer 1


Merely communicating with another software X does not make your software a derived work of X. There are no copies, modifications, or derived works of X involved here so the license of X does not apply to you. You are free to license your code in whatever way you like and are not bound to the AGPL.

In particular, restricting yourself to available documentation and to reverse-engineering techniques such as observing network traffic makes it clear that you are not copying any X code.

Not all kinds of communication between two software components keep them as clearly separate works. The data flow may be so entangled and intertwined that they cannot be reasonably considered separate. However, that doesn't seem to be the case here as the JSON messages define a clear interface between X and your software.

Your Answer

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

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