Skip to content

Instantly share code, notes, and snippets.

@kn9ts
Last active December 28, 2024 17:12
Show Gist options
  • Save kn9ts/cbe95340d29fc1aaeaa5dd5c059d2e60 to your computer and use it in GitHub Desktop.
Save kn9ts/cbe95340d29fc1aaeaa5dd5c059d2e60 to your computer and use it in GitHub Desktop.
GPLv3 explained

GPL3 LICENSE SYNOPSIS

TL;DR* Here's what the license entails:

1. Anyone can copy, modify and distribute this software.
2. You have to include the license and copyright notice with each and every distribution.
3. You can use this software privately.
4. You can use this software for commercial purposes.
5. If you dare build your business solely from this code, you risk open-sourcing the whole code base.
6. If you modify it, you have to indicate changes made to the code.
7. Any modifications of this code base MUST be distributed with the same license, GPLv3.
8. This software is provided without warranty.
9. The software author or license can not be held liable for any damages inflicted by the software.

More information on about the LICENSE can be found here

@BluePyTheDeer251
Copy link

One question, does it matter if I use a library that is not licensed with the GPL?

@zaphod77
Copy link

zaphod77 commented Nov 27, 2024 via email

@RogerInHawaii
Copy link

zaphod77
I'm asking all these questions because I DO HOPE for my design to be the basis of a start-up company and to manufacture and sell the resultant 3D printers. It's really quite a unique design. It should print much faster and create much stronger prints (fingers crossed).
But it does seem like my code that runs on the separate processor can be kept as the company's trade secret, with no requirement that its source code has to be made available as Open Source.
So, that's a relief. :)

Thank you.

@zaphod77
Copy link

zaphod77 commented Nov 27, 2024 via email

@BluePyTheDeer251
Copy link

BluePyTheDeer251 commented Nov 27, 2024

The libraries in question are in my Cobalt repo under bot_code.py, it needs A LOT of work, it's concept is being a programming assistant that you can configure to only make answers to certain languages, this would be beneficial if for example, you ran the bot offline, so you don't download useless data you won't need.

@MasterKia
Copy link

@RogerInHawaii

https://www.gnu.org/licenses/gpl-faq.en.html#MereAggregation (my emphasis):

... pipes, sockets and command-line arguments are communication mechanisms normally used between two separate programs. So when they are used for communication, the modules normally are separate programs. But if the semantics of the communication are intimate enough, exchanging complex internal data structures, that too could be a basis to consider the two parts as combined into a larger program.

So it seems you actually need to provide the source code for your firmware to the users under the GPL license.

@RogerInHawaii
Copy link

@MasterKia , I don't know how one defines the phrase "intimate enough". In my case the only communication between the Firmware and the program running on the additional microprocessor is commands from the Firmware to the additional microprocessor telling it to perform some operation (e.g. turning a light on having it drive a stepper motor), and for the additional microprocessor to respond with a "DONE" or "FAILED" message back to the Firmware. No "complex data structures" are communicated.

@zaphod77
Copy link

zaphod77 commented Dec 28, 2024

I agree here. I don't believe that statement would apply.

Functionality is added to the open source firmware that sends instructions to the closed source microprocessor. Those instructions are not obfuscated, and no other communication is done. It's essentially one open source program giving a closed source ones simple command line switches, and reading the return code.

This seems like a legitimate aggregate, based on the description.

Now if there were secret undocumented actions caused by activating commands in a specific sequence, then things would be a bit more questionable. If there is data encoded into the sequence of commands that the coprocessor detects (and affects it's ability to succeed or fail), then that would be abuse, unless the required sequences themselves were documented in the open source side. If you have undocumented magic sequences, then you are concealing some of the source.

From the way it's described, there is no issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment