I have modified a GPLv3 program to link to libtorch (part of PyTorch). PyTorch is licensed under the BSD-3 clause license. I would like to convey my changes to the original GPLv3 program and the original program together under the GPLv3.
However, the problem is that libtorch has an optional dependency on CUDA and likely other proprietary backends. I assume already that most readings of the GPLv3 would prohibit releasing binaries that depend on proprietary libraries. I have these questions though:
- Can I distribute binaries compiled only with BSD-3 licensed portions of the libtorch source?
- Can I distribute the source code of my combined work, not including libtorch, with the intent that users compile libtorch on their own and link to my work?
- Can I distribute the source code of my combined work with the libtorch source code included?
- If 3 isn't possible, can I modify libtorch so as to remove all references to proprietary libraries, and include that with my source code?
- Under options 2 and 3, can I openly encourage users to compile with CUDA?
I may be interpreting the GPL overly strictly here, but I'd be interested in hearing from anyone that has experience using CUDA with the GPL. I understand though, that some of the questions may not have answers backed by case law.
The major theoretical issue I can see with some of the above options is that you could (as a way of getting around the GPL) distribute GPLv3 with an "optional" dependency on proprietary software, where your optional dependency is in reality required to use the program.