How to create a new integration:
Prerequisites
- Install Connect v24+
- Python capable DCCs: A Python 3.7 virtual environment
- Javascript or other capable DCCs: A Python 3.10 virtual environment
- Knowledge of the Framework structure
Host DCC considerations
When creating a new integration, it is important to consider the host DCC and the specific requirements it may have.
The ftrack Framework is Python based, which means that it is a big advantage if the DCC is also Python based. If this is not the case, a bridge between the DCC and the Framework will be needed - such as the JS implementation provided with our Photoshop integration.
Scaffolding a new integration
To aid the creation of a new integration, we have created a cookiecutter template that will create a new integration with the correct structure and files.
To use the template, follow the instructions outlined in the tools/cookiecutter-framework-project within our integrations repository.
cd tools/cookiecutter-framework-project
pip install cookiecutter
cookiecutter -f -o projects/ .
Integration structure
The structure of an integration is described in the Framework DCC integrations documentation.
Workflow
Here is a rough outline on how a new integration is developed:
- Create a new integration using the cookiecutter template (see above)
- Create a launcher config, identifying the paths to DCC.
- Augment to hook to fit the application, adding environment variables so DCC can find the integration on launch.
- Create a bootstrap entry point where the DCC Python can bootstrap the integration (compare to userSetup.py for Maya)
- Implement the DCC module source (
source/ftrack_framework_dcc-name/__init__.py
) - scan extensions, setup session and event listener, client & host instantiation, DCC menu integration with menu launchers that spawns opener, publishers and other tools. - Create tool configs.
- Create the tool config plugins for performing operations in the DCC like scene open, save, export, reviewable render etc.
- Create documentation.
Customising the integration
The intention has been to make the integration as customisable as possible, by enabling developers to provide their own extensions if for example the publisher dialog does not performs as required by studio standards.
If you are required to alter the Framework core or other libraries, it is recommended to fork the repository and make the changes there but it is strongly discouraged to make changes to the core Framework as it will make it harder to maintain and update the integration.
Do not hesitate to reach out to use if you have any questions or need help with the integration development, especially if you feel that parts of the Framework should extracted and be made more customisable as an extension.