As far as i understand, the AGPL license permits me to use the library (https://github.com/Corvusoft/restbed) for a server that faces the web and is publicly accessable, as long as the server it's self's source is publicly available under the same license (AGPL).

My web microservice framework would be open source under the same license and would use the library but i would write modules for it as a developer would for any framework. I do not intend to open source the modules i write in any way. Modules would also be written by the users of the framework and hosted by the framework interfacing with the library but not distributed with either.

Before the data is passed to the modules and stuff, it is manipulated from the form that the library generates. So the code does not directly interface with the AGPL library.

Am i ok for the modules to be closed-source as long as the framework that uses it is also open source.

1 Answer 1


When it comes to plugins, there are no differences between the GPL and AGPL license. Just read AGPL where the FAQ entries refer to the GPL.

From the GPL FAQ:

If I write a plug-in to use with a GPL-covered program, what requirements does that impose on the licenses I can use for distributing my plug-in? (#GPLAndPlugins)

Please see this question for determining when plug-ins and a main program are considered a single combined program and when they are considered separate works.

If the main program and the plugins are a single combined program then this means you must license the plug-in under the GPL or a GPL-compatible free software license and distribute it with source code in a GPL-compliant way. A main program that is separate from its plug-ins makes no requirements for the plug-ins.


When is a program and its plug-ins considered a single combined program? (#GPLPlugins)

It depends on how the main program invokes its plug-ins. If the main program uses fork and exec to invoke plug-ins, and they establish intimate communication by sharing complex data structures, or shipping complex data structures back and forth, that can make them one single combined program. A main program that uses simple fork and exec to invoke plug-ins and does not establish intimate communication between them results in the plug-ins being a separate program.

If the main program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single combined program, which must be treated as an extension of both the main program and the plug-ins. If the main program dynamically links plug-ins, but the communication between them is limited to invoking the ‘main’ function of the plug-in with some options and waiting for it to return, that is a borderline case.

Using shared memory to communicate with complex data structures is pretty much equivalent to dynamic linking.

In short, this means that Modules of your framework can only have a GPL-incompatible license if they are separate programs.

  • Hi, thanks for the response. Is there any way i can do a dual license. im not sure how they work at all, but have the part of the program dealing with requests (the GPL library) and the rest seperate? Thanks
    – plane000
    Sep 28, 2019 at 17:37
  • @plane000: No, unless you can make the two parts into separate programs. Sep 28, 2019 at 17:48

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.