Guide to Providing Source Code (or Not)
We're often asked "Should I provide source code? ๐คจ" or "Do I have to provide source code? ๐จ" and even "How do I provide source code? ๐ค". Occasionally customers email us to notify us that "Someone has not made source code available, and shouldn't they have to? ๐" Given the confusion surrounding source code requirements, we're going to break it down for you as best we can.
Which license(s) require that I provide source code?
The GPL requires that you provide source code for software (e.g., add-ons) that you release to the public (e.g., via Blender Market).
The GPL does not require you to release your modified version, or any part of it. You are free to make modifications and use them privately, without ever releasing them....
But if you release the modified version to the public in some way, the GPL requires you to make the modified source code available to the program's users, under the GPL. [source]
The MIT license does not require that you provide source code, when the code is not bound by the GPL. When the code is bound by the GPL, you do need to provide the source code.
What do you mean, "when the code is not bound by the GPL"??
Some portions of your MIT-licensed program may build upon existing code that is licensed as GPL, for example, the Blender API. In these cases, you do need to provide the source code.
So what's the point of the MIT License if I have to give up the source code whether I choose GPL or MIT?
Great question! There are a couple of significant differences between the GPL and MIT licenses. The MIT License puts fewer conditions on software usage than the GPL. As noted above, it is what's known as a "permissive" license, which "allow[s] you to do whatever you want with the software as long as you abide by notice requirements" ( Meeker 2020, 41).
Can I charge extra for sharing the source code?
Nope. You cannot.
You can charge any fee you wish for distributing a copy of the program[.... But i]f the binaries being distributed are licensed under the GPLv3, then you must offer equivalent access to the source code in the same way through the same place at no further charge. [source]
How and where should I share the source code?
If your product is your code (e.g., a bunch of uncompiled Python), then you're already sharing it every time a customer downloads your product.
If your product is a binary (i.e., compiled version of software that makes the source code inaccessible), then you need to include a copy of your source code " in the same way through the same place" as your product. This is clearly described in section 6d of the GPL v3 license:
[6]d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. [source]
Do I have to provide source code to someone who has not purchased my product?
No, you do not have to provide source code to someone who has not purchased your product.