Maintainer Guide
This guide is for developers who want to contribute to Natron’s own source code — fixing bugs, adding features, porting to new platforms or toolkits, and maintaining the code base over time.
It is different from the Developers Guide, which explains how to use Natron through Python scripting and how to write plug-ins. If you want to write a PyPlug, an OpenFX plug-in, or automate Natron with Python, read the Developers Guide instead. If you want to understand and change the C++ code that is Natron, you are in the right place.
The guide assumes you are comfortable with modern C++, have a working knowledge of Qt, and understand the basics of image processing and OpenGL. You do not need prior knowledge of the OpenFX standard — it is introduced where needed.
- Overview: What Natron Is, at the Code Level
- Building Natron from Source
- Map of the Code Base
- Core Architecture
- Design Techniques and Idioms
- The
Natronnamespace and its macros - Include Python.h first
- Smart pointers and the
Fwdcatalogs - The PIMPL idiom
- Engine/Gui decoupling: abstract “I” interfaces
- Signals and slots, and
KnobSignalSlotHandler - Serialization with Boost
- Thread-local storage for rendering
- The singleton and the factory
- Cross-platform and toolkit shims
- The
- The Engine Module
- The Gui Module
- Rendering, Threading and Caching
- Natron as an OpenFX Host
- Python Bindings (Shiboken / PySide)
- Cross-Cutting Subsystems
- Contributing and Workflow
- Qt 6 Migration Plan
- TODO and Recommended Fixes
- Open Issue Triage