I develop a software that is licensed under BSD-4, but has some optional modules that rely on different existing third party libraries (TPL) which are licensed under AGPL v3 . The optional modules can be enabled or disabled (default) during the compilation process. The distributed binaries for my software always have these modules disabled.

For using the modules I ask my users to obtain such TPL and I provide the means to integrate it in our software (typically -DTPL_USE_FOO=ON/OFF, -DTPL_FOO_LIBRARIES=..., -DTPL_FOO_INCLUDES=...)

Some find that process too difficult and have asked me to ease this process.

I have implemented a solution that can download or use the source of the TPL from the internet or the user machine, compile it, and include it in the module. I intend to provide the compile instructions for the TPL as part of my code to avoid problems with flags, targets etc...

Under scenario, and after reading the aGPL license (specially the parts referring about the "propagate" and "convey") I have some questions:

1 - Am I violating the AGPLv3 of the TPL by providing a mean to automatically download it as a part of my software building process if the optional module that uses it is enabled?

2 - Am I violating the AGPLv3 of the TPL by providing the compile instructions for such library as part of the building process of my code if the optional module that uses is enabled?

3 - Would I unwarily be extending the AGPLv3 license to my software by including any of the processes above?

  • 1
    It's quite unusual for a library to be licensed under AGPL. Could you give us a pointer to the library in question, so we can confirm? Because if it really is AGPL, there are implications for your entire project.
    – MadHatter
    Oct 20 '21 at 9:17
  • Sure, this is the link for the lib: wias-berlin.de/software/tetgen/1.5/FAQ-license.html
    – Karl Red
    Oct 20 '21 at 9:20
  • Probably the easiest you can make for your users is to provide two binary packages: one released under BSD-4 without the AGPL module, and another distribution released under AGPL which includes the AGPL module (as an AGPL dependency requires that the whole service be made available under AGPL). That had the charme that users are immediately aware under which license and conditions they can use the software on their website. Oct 20 '21 at 9:26
  • Why do you want to use the BSD-4 License? My strong recommendation is to use a newer version (BSD-3 or even BSD-2) without the controversial clause. Oct 21 '21 at 6:50

The library is indeed AGPL. Using it requires(*) the entire piece of software into which it is linked to be released under AGPL. The "entire piece of software" will definitely be the whole of the plugin module that uses it; depending on the degree of integration between your core software and its modules, it may well be the whole of your codebase. You can find more guidance on that in the FSF FAQ.

Even if the integration between core and modules is tight enough that it makes the whole program a derivative work, this doesn't mean that your code always has to be released under AGPL. But when a user is supplied with code that includes that module, the entire codebase must be supplied to them under AGPL (as planetmaker notes above). In such a case, you can freely include the library source, which at least makes that part of your life easier.

Yes, some (though not me) may think this makes the library bit of a poison pill, but the tetgen licensing FAQ you kindly link to is clear (q2) that the tetgen developers are aware of this, and intend it. If you don't like it, don't use that library.

(*) Assuming the FSF's views on dynamic linking and the GPL are correct. Though I personally believe they are correct, the issue is not settled. See this question, and others linked therefrom, for more information.

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.