I have a closed source module (A) in odoo that it working fine without depending on anything.

Now I would like to add an AGPL module(B) and integrate it with the module (A).

So, I am planning to create another module(C) that does the integration between A and B.

I know that the module (C) should have an AGPL license. However what about module (A).

Can an AGPL code depend on closed source code giving that it doesn't work without it?

In my case, do I have to distribute the source code of module A giving that module C doesn't work without it?

Edit: Clarification

A and B will not share anything However to simplify we can say that module C will create a class with multi-inheritance that will inherit a class from A and another from B. (I can do this using dynamic linking if static linking is a problem).

  • How tight is the integration between these modules? Are they modules of code linked into a single executable? Shell scripts that work at arm's-length, via fork-and-exec? Something else? – MadHatter May 27 '20 at 14:26
  • They run in the same executable. However, they are similar to maven modules in java. For example, we can consider a module in odoo as a plugin for spring boot – Mohamed Amine Ouali May 27 '20 at 14:31
  • Could you please let me know why did I receive a downvote for my question. – Mohamed Amine Ouali May 27 '20 at 14:33
  • I don't know, but if you mouse over the down arrow, you'll see the popup says "This question does not show any research effort; it is unclear or not useful". Downvotes without comment may be presumed to be for at least one of those reasons. – MadHatter May 27 '20 at 14:40
  • What sort of data structures do they share? Do they share memory? Simple variables? Complex data structures? – MadHatter May 27 '20 at 14:41

The (A)GPL requires that the entire program can be distributed under the terms of the (A)GPL. Thus, it doesn't matter whether the proprietary parts and the (A)GPL parts touch each other directly. Introducing a component C that tries to isolate them changes nothing.

There are two workarounds:

  1. If the components A and B are clearly separate programs, the (A)GPL has no effect on the other program. You're also allowed to distribute (A)GPL and proprietary programs together, as long as you otherwise comply with the license and clearly keep them separate. Introducing a component C to manage the communication between these programs could be sensible, and the (A)GPL side would need an (A)GPL compatible license such as MIT.

  2. The copyright holders of the (A)GPL covered software can issue a license exception. If you are the copyright holder, you can just do what you want. But if you want to use other people's software, you have to ask them. It is often extremely difficult to retroactively add a GPL exception because all contributors would have to agree. The LGPLv3 is an example of a license exception to the GPLv3.

Your Answer

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

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