Blender Software Architecture

Hey there,
I’m interested know how blenders architecture has been made, more specific the Add-ons/Plugin. I recognize they are scripted in python but how does it work. How does blender get this very flexible design to extension the application with pretty well isolation (We don’t need to change the source code of the application) when we develop an Add-ons/Plugin ?
One more question: Does blender call C/C++ core modules via Python (If executable was developed in python), or is C/C++ invoking python modules ? Is there a place to learn more about blender decisions related to design/architecture ?

Hopefully someone else can speak to your questions related to invocation.

But most of what you’re looking for can be answered via the quickstart resources at the Python API.
You also may want to visit a more in-depth introduction to add-ons. By no means are C/C++ necessary for most add-ons - nor will you be affecting base-level Blender functionality. Ideally, you’ll be (as you said) creating modular add-ons that can operate without intruding on vanilla application performance.


Blender contains an embedded Python interpreter. The interpreter is extended with C/C++ to interface with the rest of Blender code. Obviously, it can also execute Python code.

See for more details on the basic idea.