This question is derived from a previous question.
I am writing a Blender add-on which enables the use of Blender with a piece of hardware (i.e., a lightfield display). Blender and the use of the specific Python API, which is required to write Blender add-ons, is licensed under GPL. In order to communicate with the lightfield display on the software level the manufacturer of the display provides a compiled, closed-source DLL under a non-GPL license. Still, the DLL can be downloaded at no cost by everyone wanting to develop software for this display. The add-on cannot provide the main functionality without this DLL.
According to @MadHatters answer, this DLL cannot be considered a system library, because it is not a "Major Component" of an operating system.
Does GPL allow the use (linking) of such a DLL with a GPL-licensed software, if I only convey the add-on and let it to the user to install the DLL on his/her own?
My current understanding:
In my current understanding it - unfortunately - would be not allowed by GPL. I base my understanding mainly on the following FAQ statement to the question Does the GPL have different requirements for statically vs dynamically linked modules with a covered work?:
Linking a GPL covered work statically or dynamically with other modules is making a combined work based on the GPL covered work. Thus, the terms and conditions of the GNU General Public License cover the whole combination
As I read it, the mere linking of the GPL-licensed add-on with the non-GPL DLL makes this DLL and the add-on a combined work which is to be put under the GPL as a whole. As a consequence, I would need to convey the source code of any non-GPL DLL I link to. No matter, if I convey it with the add-on or demand the user to do install it separately. In contrast to that, the Lesser GPL explicitly states on the very same question:
(2) If you dynamically link against an LGPLed library already present on the user's computer, you need not convey the library's source. On the other hand, if you yourself convey the executable LGPLed library along with your application, whether linked with statically or dynamically, you must also convey the library's sources, in one of the ways for which the LGPL provides.
The differences in the answers implies, that distributing the add-on and linking to the DLL, which is downloaded by the user separately, would be fine - but only in the LGPL, not in the GPL. However, due to Blenders licensing, all Blender add-ons using Blender's Python API need to be under GPL.
Furthermore, in the case of GPL it is stated that:
If you want your program to link against a library not covered by the system library exception, you need to provide permission to do that. [...] Only the copyright holders for the program can legally release their software under these terms. [...] But if you want to use parts of other GPL-covered programs by other authors in your code, you cannot authorize the exception for them. You have to get the approval of the copyright holders of those programs.
First of all, that further underlines that one may not link against a non-GPL library - no matter if it is already on the user's computer or not. Second, since only the copyright holder (in my case: The Blender Foundation) may define such an exception, I cannot. And since my add-on is a derived works of the Blender Python API (since my add-on uses this API), I have no chance to distribute the add-on without violating the GPL.
What I need to be answered:
Is my interpretation correct and am I really not allowed to link any closed-source library which does not fulfill the system library exception to a GPL software, if I am conveying a GPL software of someone else, which I only modified? Is that true, even if the closed-source, non-system DLL is zero-cost and either freely downloadable by the user or already present on the users PC?
Did I grasp the difference between GPL and LGPL correctly?
May I never distribute the add-on or is there something I can do without violating the GPL?