Third to keep in mind that a plugin system for Blender cannot be made "commercial" with closed source, only GPLed code is allowed to be a plugin in Blender. I doubt it will become an incentive for third parties to make commercial Blender extensions with GPL only.
Is this really true?
Plug-ins are not compiled with blender, so they don't fall under the blender GPL, just as fonts that blender uses don't fall under the blender GPL.
I have been thinking about this and I have come up with the following precedent:
NVIDIA who make graphics cards have a cross platform driver aritecture, one of whos targets are linux (which is a GPL piece of software), now by your reasoning they should open source their drivers but they dont. The reason is that their crossplatform drivers wernt specifically written for linux and their is a super-thin layer of LGPL code between their drivers and the vendors linux kernel.
Secondly, commercial vendors who write plugins for Maya and 3D studio max arnt going to port their codes over to python, (they could, if they had a large amount of motivation) but writing a thin C/C++ LGPL layer is much more trivial and easier to do.
Thirdly all major 3D modellers have (at some level) a native C/C++ plugin interface, so by adding one your software package, it becomes like one of the pack and therefore has a higher chance of commercial outfits writing code for it because it is seen with the same "mod-ability".
ton wrote:I'm a little concerned on the direction of the discussion here... designing a good plugin API for Blender won't be interesting if it doesn't reflect how Blender currently works itself
What I am really doing is allowing external binaries to access the internal blender API (i.e. the MEM_* and ui* APIs), except I have chosen to respect blenders low resource/fat approach by making the modules reloadable, so resources are only being used when they are required. also these APIs are all wrapped and can be accessed consistantly through the same mechanism.
Also keep in mind that a program like 3DS was designed from scratch as a plugin system. Maya as well, although it has MEL as glue too. Blender was not *at all* designed that way.
Blender isnt really that far from being plugin based, it has many APIs that are easy to wrap, the hard bit has just been writing the plugin loader and registeries. Im still several months away from completing the prototype version, so I cant tell you about how hard it was to add the code to get a module to shade a piece of ocean, or to add ocean waves to a grid mesh but I have already done this before and it isn't difficult.
Second to keep in mind that plugin APIs also serve as a means for closed source applications to allow third parties to extend functionality. We don't need that really... within a production environment, anyone can quickly add the temporal features in Blender they need themselves.
I have found that it is not a trivial issue to add functionality to the blender codebase, furthermore because it is being activly developed it is highly plausable that their additions may not work in a later version because the code that they based their modification was completely rewritten (this has already happened to me), How I am designing it is that the code base behind the exported API can change completely, but as long as it shows the some consistant behaviour then everything is fine.
ton wrote:As original designer of Blender, I really get confused by the proposals here... I miss general objectives or a compliant & functional structure. How the API technically is structured is really a decision for later.
I am sorry for keeping you all in the dark, and not giving people an idea of where I am going with it, or asking others what they think would be a good idea. This is selfish of me. My aim is to make something to startoff with and then share it with everybody else for C&C later on. In this way their is no risk to any of the core blender development team, so their time and resources arnt wasted.
What I would really like is about 2-6 months of grace so as to get something ready for other developers to evaluate. It would be cool to get permission on the project website to get some space for a fork:
Getting Involved Website wrote:We're open for developers to create experimental Blender trees or even complete forks. Just make an account at the projects site, a link for proposing projects can then be found at 'My Page'.
I just submitted a project request, it should be there for you right now.