Important Question Regarding ADDONS & GPL

I know this has been discussed before, but I need clarification to clear some concerns (and possibly mis-understanding).

Basically, I want to know if it you are allowed to create an ADDON that is not GPL-compatible.

I know the GPL allows a program to call a non-GPL binary, as long as it is done at “arms length”. Essentially, if a GPL program does not depend on the external binary non-GPL library for its core functionality AND the non-GPL library is not compiled with any GPL code, then GPL program is allowed to call non-GPL libraries.

======> Is this correct???

I am developing several useful programs, most of which will be GPL-compatible. But there is one piece of software which I don’t want to be GPL (for the moment). I want to be able to use it in an ADDON to use within Blender.

Thanks in advance for your help!!! :slight_smile:

I don’t know the answer to your question, but I’d like to point out something. You can create in your home what ever you want. You don’t have to care about immaterial properties and licenses. You can make and create. But when you share a derivate work of gpl-licensed stuff and somebody asks for the sources, you have to provide them. That is how studios can do what ever they want with gpl-licensed code, if they keep it inhouse.

That’s a simple one: Ask a lawyer! You can’t get reliable legal advice in this forum!

1 Like

Thanks. This I understand. But I notice in GNU + Linux distributions, nearly all of them contain the core GPL kernel + GCC + system utils + libraries + programs + etc ------ and bundled alongside these GPL software are often non-GPL proprietary code or in some cases non-GPL binaries of drivers (eg network & video drivers).

In addition, GNU/Linux OS and GPL programs often depend on (ie function calls) these non-GPL binary drivers.

Also, there is nothing stopping you from writing a Bash Script (or Python, etc) which calls either / or both GPL & non-GPL binaries.

So from these real-life examples, we see GPL licensed scripts and code can call non-GPL compatible compiled programs.

I am reading through the “GPL Answer Thread” thoroughly now, and will post more conclusive answers. Thanks for your help.

Cycles is APL while Blender is GPL. Or Blender Foundation is the first one to break their own license or it is allowed for a GPL add-on to call no-GPL code.

Along the same line, the new LuxCoreRender add-on (GPL code) for Blender uses LuxCore library (APL code like Cycles).

I think so.

The only difference with Cycles and LuxCore, I can think to, is if you want to have some closed source component (i.e. the no-GPL part) or some other open source (i.e. no-GPL) license.

Apache is GPL compliant: https://www.apache.org/licenses/GPL-compatibility.html

The particular software I am developing is of a very particular and so-far neglected importance. And my reasons for not wanting it to be GPL-compatible for the moment, is as follows:

I am basing my decision on which course of actions will prove most beneficial to society, and to reduce or limit current trends that are detrimental to humanity. 2 trends are as follows (explained through somewhat chronological view to help readers understand my though process):

(1) Software is increasing becoming more important in our daily lives, yet there a so few individuals capable of understanding (and building) the fundamental software. There is a over-abundance of mediocre at best “web developers”. While there too few who can (and have) design & build: EFFICIENT & BLOAT-FREE (a) programming language, (b) core kernel + drivers, (c) essential programs + libraries.

(2) Software is overly COMPLICATED.

Please note, COMPLICATED != COMPLEX.

Complex software is software that can perform many useful things efficiently. Meanwhile, complicated software is BADLY written “spagetti” code with “dependency hell” that makes it difficult to read, understand, debug, and refactor ---- as a result, complicated code is rife with unstability, vulnerabilities, backdoors or spyware, and BLOAT.


To solve these 2 problems simultaneously, the following is the solution:

Not all software is useful. And not all software is well written. Furthermore, the majority of code is “bloatware”. Programming is a mentally intensive endeavour, and very few people can do it well. Add to this reality is the fact human life is short, and the time required to learn to program + learn what is needed for a particular area of expertise ---- all of this takes TREMENDOUS TIME & EFFORT.

What all this means is we need (and benefit from) clean, clear, concise, short, efficient non-bloat software to both (1) learn from, & (2) build with. And the GPL (GNU General Public License) has been the single-most import force to help humanity towards this goal.

But with time, we have witnessed a few large organizations / companies that use GPL software and turn it MALICIOUS. For example, by “bundling” COMPLICATED non-open code (libraries, compiler dependencies, binaries, etc) to create a “CLOSED ECOSYSTEM” called ANDROID + GOOGLE PLAY.

While on the surface, Android is purportedly “open source”, it is IN-ACCESSIBLE to the majority of Programmers (even hardcore ones) ----- because (1) it is overly complicated, (2) depends on a myriad of bloated SDK / Libraries (eg Kotlin, Java), & (3) to compile it requires a load of compilers and dependencies with themselves depend on other libraries, which depend on other binaries, in a “DEPENDENCY HELL”.

Another example of GPL software becoming “closed source” for practical purposes is KONQUEROR WEB BROWSER, which CHROME WEB BROWSER and WEBKIT is derived from. So no we have a closed version, “Chrome” and an open version, “Chromium” ------> Whereas, if I recall, programs which is even PARTIALLY derived from GPL code automatically is COMPLETELY GPL.

So I don’t know how Google can blatantly violate the GPL…


Personally, I enjoy software from 2 unique perspectives. I like to use well-written efficient & USEFUL programs. And I like to learn and contribute back by WRITING well-written efficient & USEFUL programs. And that is why I chose to support the Free Software Foundation (FSF) and their GPL license, as this is been the #1 more effective software license that promotes the continuation of FREEDOM of both users & developers. And from Ton Roosendaal’s conscientious and conscious decision to choose the GPL, he also feels the same way.

So why would I release some of my software as GPL compatible, while not others???

The answer is simple & effective:

Number 1, I recognize that good developers are the most important, not users. Without good programmers, there would be no good software. Non-programmers do NOT program.

Number 2, we need a entire Computer System that is GPL. A computer system is comprised of not only the Kernel (eg Linux), but also Compilers, system libraries, and numerous useful Programs. If one of the ESSENTIAL component is non-Free, you are vulnerable as any closing off may prevent you from developing & using your Computer.

Therefore, we need more & more people interested in computers & software, to use and program under a GNU + Linux ecosystem. To achieve this, we need to make it compelling to use GNU + Linux, rather than Windows or MacOS or Android. We can look at this in 2 ways: (1) What major programs that are missing on GNU + Linux??? (2) What unique program is on GNU + Linux, that no other system has???


ANSWERS:

(1) GNU + Linux lacks good Video Games. Afterall, Games are the major force in advances in computing. Boys like games, they grow up as men who then create next generation of games (and computing systems). So I will develop AWESOME games for GNU + Linux, and quite a few of them will be EXCLUSIVE to GNU + Linux.

I am a self-taught programmer. I don’t know (nor like) over-complicated “programming paradigms” and bloated libraries & frameworks. There are counter-productive and retarded. In modern Game development, you need 2 areas of expertise: (1) Artists & (2) Programmers.

Fun games are those that are not (a) repetitive, (b) boring, (3) non-smooth, (4) ugly, (5) short & limited, etc. We like to play games that are engaging and “real” (while maintaining simplicity) -------> While I’m not an expert programmer, I know what is fun and makes good gameplay. This is reason for a more advance AI, which I am developing called Advance Adaptive Artificial Intelligence (A3I).

(2) While there has been major advances in Computer Graphics, interestingly there has been lackluster progress with MUSIC. In particular, we all enjoy good music, the the vast majority are horrible, and the VARIETY is severely lacking. Personally, I don’t like listening to limited variety and limited genre of music. Just like I don’t like eating the exact same meal for every single day of my life!!!

Fortunately, this is another area that I am developing. Imagine a software that can compose & produce it’s own music — and the music is actually both GOOD and has VARIETY!!! Don’t just imagine it, it is possible.

So, if GNU + Linux has this, while others don’t ----- it will provide impetus for migrating to GNU + Linux. :slight_smile:

These 2 are among other “useful” software I am developing and mentioned before. Another is a new FREE Next-Gen Internet that is much simpler to build on, that isn’t plagued with all the problems of the current Internet (including but not limited to Censorship). But this is another topic. I will reveal more details as I make more progress, just a heads-up for now.

HERE ARE THE ANSWERS I ARRIVED AT REGARDING ADDONS + GPL.

If you find any errors, or can point out any confusion, please contribute your valuable thoughts.


Firstly, to clarify the reach of the GPL, it covers only the “code”, not the “output” of the program nor “data” (eg images, sound, video, models, text, etc) used by the program.

Therefore, when you release a GAME to the public, the software that dynamically links to Blender becomes GPL also. However, your sound, images, video, text, models, textures, etc are NOT gpl.

If your GAME performs function calls on external program (eg “library”), it is NOT linking to that program / library. For example, binary proprietary video drivers (eg from Nvidia or ATI Radeon) does function calls to the GNU / Linux operating system ------> but that does NOT force Nvidia nor AMD to re-license their proprietary drivers as GPL. Likewise, your GNU / Linux distribution may be using proprietary Nvidia or AMD video drivers -------> this is allowed, and it is not required that GPL linux kernel to only talk to (ie function calls) to GPL software.

Your information is wrong: https://en.wikipedia.org/wiki/WebKit

WebKit is available under a BSD-form license[SUP][11][/SUP] with the exception of the WebCore and JavaScriptCore components, which are available under the GNU Lesser General Public License.

It would not be legal for Google to use GPL code in Chrome, but LGPL code is absolutely fine!

The GNU Lesser General Public License (LGPL) is a free software license published by the Free Software Foundation (FSF). The license allows developers and companies to use and integrate software released under the LGPL into their own (even proprietary) software without being required by the terms of a strong copyleft license to release the source code of their own components.

If you want to add a blackbox as your addon, your best bet is to code a miniserver that uses sockets and move data between Blender using the Python API. You can’t link your blackbox to Blender without having to release the source.

The other method is to use a MIT licensed SHIM between your blackbox and Blender, but remember, you can only move data, process in your blackbox and return the results using the shim, and the Python interface.

The key here, is that Blender doesn’t offer a C or C++ API interface (and probably never will, since it’s a can of worms of its own), only a python interface. AND IT WILL BE SLOW.

In the past, one user of this forum tried to do a MIT licensed SHIM to be used as a API interface to make this scenario possible, but in the end, he quits in the begining of the project, since he is busy with RealLife™ problems, and probably the effort isn’t worth the cost. (target always moving).

Thanks everyone for their help. And thanks to all the developers of Free Software (GPL), not just Blender.

And to thank everyone for their hard work, and to contribute to the spirit of giving, I will be releasing AAA quality Game Assets + another simpler complete working game (so people can “reverse-engineer” and learn), under a new license that I feel people will like more.

Basically this new license takes the best from GPL and more “permissive” licenses (eg MIT, BSD), while also adding more practical provisions to help small individual developers & artists make a honest living from their hard work. As I know this is one of the major complaints of the GPL being “too communist”…

Basically, my new License is called “TIAN DI COMMUNITY LICENSE” (TDCL), which is translated as “Heaven & Earth Community License”. It means there are “Heavenly Ideals” (eg quality + compassion) and “Earthly benefits” (eg profit + openness).

You give back the same amount (or more if you choose to) that you take. Instead of the GPL, which requires that the entire 100% of derivative works is GPL. This is understandable for software, as missing code can render software unworkable. But this is not reasonable for creative works like novels, music, graphics, movies, animation, video games.

A fairer approach is for example: I release my work under the TDCL. And you want to make a movie, but don’t have funds or want the hassle to license music. You can use my TDCL music & sound effects for your 100% Proprietary COMMERCIAL movie ----- in return, you license the same amount X quality of work (can be music & sound effects you own, but doesn’t need to be same type of assets).

So the more you use, the more you give back. :slight_smile:

I also recognize past contributions by GPL developers. So they can use my work (Assets + Software) in Proprietary Commercial projects. This is what I alluded to in another thread about wanting to give back to Ton Roosendaal and Godot devs.

The process is as follows: I intend to release my Assets under the TDCL — after — I finish my Movie &/or Game. As it makes no sense to release it before or during, because people can then produce shoddy things and the audience will mistaken those shoddy things for mine. :slight_smile:

It will also not be a one-time thing. The first few Movies + Games will consist of “simple Anime style”. While my major project will be absolutely EPIC!!! It’s not just a model here & there, nor few textures, sound files and models. :slight_smile: Rather, it will be a COMPLETE USABLE WORLD, all set up for you. I’d like to think I’m a farily talented Artist, so the quality will be top notch.

But remember, according to my TDCL license, you need to give back at least as much as you take. This will provide dis-insentives for crappy “Asset Flips” . :slight_smile:

Thanks Dantus,

I thought WebKit was GPL, but it’s BSD based. And the other components are LGPL.

I stand corrected, so Chrome being closed is legal then…

Thank you!

This is exactly my thoughts as well. I won’t be needing to link to blender, it will only be making function calls (with data) and getting result back. I believe this exactly what you have described as permitted by GPL.

The first answer here is a simple explanation why this is allowed: https://stackoverflow.com/questions/2721290/propietary-modules-within-gpl-and-bsd-kernels
Again, it is due to LGPL parts which make it possible. Though you find other opinions that this is not allowed, like the non legally binding FAQ about the GPL: https://www.gnu.org/licenses/gpl-faq.en.html#NonfreeDriverKernelLinux

It is a legal minefield. Unless you have an army of lawyers, I would simply avoid it. It is not worth it!

Be aware that in the case of the Linux Kernel, the nvidia driver is basically violating the GPL, and the only reason nvidia hasn’t ben hit with a legal C&D is because of Linus Torvalds. But the Kernel team refuses to even look at any bug of any system that uses the nvidia driver. They even disable some features of the kernel when detect any closed source driver in the kernel.

In case of Blender, probably will be the same, you have a closed blackbox attached to it, don’t expect any support for it. You will be fully and completly on your own.

Be aware also that is very unlkikely that Blender Foundation will sue you in any case, but the FSF/EFF/what is in your country of origin is another story completely. (hint: ASK A LAWYER, i did it but only applies to my country of origin!!)

The answer to the GPL question is in the Blender FAQ:

What about Add-ons or my Python scripts?
If you share or publish Python scripts – if they use the Blender API calls – have to be made available compliant to the GNU GPL as well.

Can I sell plug-ins for Blender?

Yes you can, but only if you provide the plug-in and the sources to your clients under the GNU GPL license. The client then benefits from all rights the GPL offers; free to use it, or even distribute it when they wish.
You have the full freedom to license your software product however you wish if and only if:
– it operates outside of Blender
– using no Blender source code or API calls
– produces data for Blender to operate on
– executes Blender to read and operate on the data.

https://www.blender.org/support/faq/

Just to add to what stargeizer said here. Don’t believe the hype that this will necessarily be slow :wink: Having a MIT license python addon shim between blender and your code. Many rendering plugins do this. Yes it won’t be as fast as direct C++. But it will be fast enough. The trick is to do any big list processing in the shim using numpy and pass on the c-pointer of the array to your external code.

Function calls from C or Python require that you link against the library providing the implementation. This is definitely linking as defined by the GPL. For example, calling the C function time() from time.h means that you’re linking.

On the other hand, calling the command line tool “date” from your code and parsing its string output is not considered linking.

In the context of Blender, if you have a .dll/.so/.dylib that provides a certain function (say, a boolean of two meshes), using that .dll from a Blender add-on requires that the add-on and with it, the dll must be distributed under the terms of the GPL. It doesn’t matter if the .dll is renamed to .pyd, is called via ctypes, wrapped in SWIG, etc - it’s considered linking. Now, turn that .dll into an .exe that takes two OBJ files as input and returns a new OBJ as result and call that from your add-on, the add-on must still be under the GPL but the .exe is not required to.

As a rule of thumb: if your code doesn’t show up separately in the Task Manager (ps on Linux), it’s linked to Blender. If it shows up separately in the Task Manager, you’re not linking.

That would fix the linking issue, but that would still leave the distribution issue, afaik you cannot ship this .exe in the same package with your gpl code?

I’m not aware of anything in the GPL that would prevent one from doing that. macOS for example distributes GPL and non-GPL software in one package. A number of commercial IDEs include git (GPL) too.