Licensing when bundling OctoPi w/ custom plugin as HW product

Hello,
I'm slightly confused on licensing terms when trying to juggle OctoPi licenses, Octoprint licenses, and what I need to do with my plugin that is designed as the user interface for an "appliance"-style piece of hardware running OctoPi internally.
My product consists of a stock OctoPi (GPLv3) distribution with the following modifications:
Guysoft's auto-hotspot module for CustomPiOS (also GPLv3, and technically falls under the "copies portions of itself" into the product)
A custom module that downloads and deploys the Cura Legacy plugin, and also deploys my custom Octoprint plugin.
I intend to produce kits based around the Pi that provide a simple interface for basic operation of the 3d printer. What I'm struggling with is what I need to provide to comply with all the licensing.

For my plugin as a standalone, am I right in thinking this code would need to be AGPL-licensed due to being run out of Octoprint? The GPL FAQ says
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.
The real question comes when I release the combination of OctoPi, auto-hotspot, CuraLegacy plugin, and my plugin as GPL. Do I then have to rehost the sources of every one of these products for handing out when someone asks for my source? Given that auto-hotspot and OctoPi are programs that don't actually end up in their entirety on the final program, do I need to include their sources or just the code generated by running the CustomPiOS build script?

I believe you only have to provide the sources for any modified elements of the underlying packages along with the sources for your own code. You do not have to rehost it all but pointers to where it can be found would be useful.

Tagging @foosel
She can tell us for sure :wink:

Another question is whether bundling e.g. the Cura Legacy slicer in the same OS as the Octoprint/CuraLegacyPlugin/MyPlugin "single program", but only running it in the manner that the CuraLegacyPlugin does (e.g., starting it with a shell command and reading feedback from its stdout) counts as "linking" or including it in the same system as discussed at this GPL FAQ. I would not need to modify the slicer itself at all, and in fact, the plugin would have reduced but still significant functionality if no slicer was installed. This situation leads me to believe it's a situation more akin to an application opening a web browser to display a PDF. Obligatory IANAL, but by my reading, it's not static or dynamic linking, and it's not a library.

Most of what I see that seems to pertain to my use case is in the "aggregate" clause. By collecting on a disk OS image several independent programs that may execute others only if those other programs are separately present, am I creating a single program (plugin licensing aside, mainly considering the slicer)?
Sorry if this is getting too deep in the weeds, but I figured I'd ask here because the softwares in question are commonplace among users of this forum.

Honestly, most of those questions you would have to ask a lawyer to get answered - I'm an Open Source developer, not a legal consultant :wink:

That being said, here's how things look from my personal understanding (IANAL, this is not legal advice, do not sue me):

  • OctoPrint is licensed under AGPL. Take a look here to better understand what that means. Tldr, as long as you give whoever buys your product access to your (potentially modified) sources of it, do not remove any copyright notes and - if you DO modify it - state the modifications you made, you are in the clear.
  • OctoPi is licensed under GPL. Pretty much the same things apply as for OctoPrint. Specifically, if you share the build configuration you used (& don't remove copyrights etc), from my understanding you are in the clear.
  • OctoPrint Cura Legacy Plugin? See OctoPrint, AGPL as well.
  • Your plugin: this is where frankly I feel things are murky myself, which is why I looked into relicensing OctoPrint as LGPL, but relicensing at this point is a logistical nightmare... As far as I understand things (again IANAL), GPL compatibility should suffice here.
  • Do you need to host your own copies of anything you use as long as you have not modified it? From my understanding, no, it's already available, you do not have to make it available from your side as well. As soon as you modify anything (e.g. the OctoPi build configuration) however you need to make the sources for those modifications available as stated in (A)GPL.
  • This whole "linking" situation has been a source of confusion and endless discussions for decades now I think. Also a reason why I was looking into relicensing. FWIW, OctoPrint is based on Cura and thus inherited its (original) AGPL license.
2 Likes