Contributing
Contributions can include bug reports, feature proposals, translations, documentation, tests, and source-code changes.
Report an issue or propose a feature
Section titled “Report an issue or propose a feature”Search the Codeberg issue tracker before opening an issue. If no existing issue covers your case, include:
- The Blender Development, PyCharm, operating system, and Blender versions involved
- Clear steps to reproduce the behavior
- What you expected and what happened instead
- Relevant logs or screenshots with credentials and personal information removed
For feature proposals, describe the workflow the feature would improve rather than only the proposed implementation.
Prerequisites
Section titled “Prerequisites”- JDK 21
- Network access for the first Gradle dependency resolution
- IntelliJ IDEA 2026 with the Plugin DevKit installed
- One of the following environments for working with the bundled Python runtime:
- PyCharm 2026
- IntelliJ IDEA 2026 with both Python and Python Community Edition installed
- Git and a Codeberg account
- Blender 4.2 or newer for changes that require live integration testing
Set up the project
Section titled “Set up the project”- Fork the Blender Development repository on Codeberg.
- Clone your fork using the clone URL shown on its Codeberg page.
- Create a focused branch for the change.
- Open the repository as a Gradle project in IntelliJ IDEA 2026.
- Confirm that Plugin DevKit is enabled. If you use IntelliJ IDEA instead of PyCharm for the Python runtime, also confirm that both Python and Python Community Edition are enabled.
- Set the project SDK to JDK 21 and allow Gradle to resolve the IntelliJ Platform dependencies.
- Confirm the project compiles:
./gradlew compileKotlin --no-daemonIntelliJ IDEA and Plugin DevKit provide the IntelliJ Platform plugin-development environment. PyCharm, or the two Python plugins for IntelliJ IDEA, provide the tooling needed to work with the Python runtime. The Gradle build packages src/main/python into the Blender runtime archive when processing plugin resources.
Make a focused change
Section titled “Make a focused change”- Use Kotlin for new JVM code and follow the conventions in the surrounding files.
- Keep functions focused and prefer existing IntelliJ Platform services and project patterns.
- Put user-visible strings in
messages/MessageBundle.propertiesso they can be localized. - Add KDoc to new public classes and functions.
- Keep service and extension IDs stable unless the change intentionally includes a migration.
- Avoid blocking the Event Dispatch Thread with file, network, or process work.
- Add or update tests for new behavior, regressions, and meaningful edge cases.
- Update the public documentation when a user-facing workflow or setting changes.
Run the plugin
Section titled “Run the plugin”./gradlew runIdeThis opens a sandbox PyCharm instance with the development build installed. Exercise the affected workflow there, including both Run and Debug behavior when changing process or runtime integration.
Live Blender behavior is not covered by the JVM test suite. Test against a compatible Blender installation when the change affects discovery, launch, debugging, add-on loading, extensions, or runtime commands.
Validate changes
Section titled “Validate changes”Run checks proportional to the change. At minimum, compile the Kotlin sources and run the test suite:
./gradlew compileKotlin --no-daemon./gradlew test --no-daemonBuild the distributable plugin when changing dependencies, build metadata, packaged resources, or the bundled Python runtime:
./gradlew buildPluginIf a relevant check cannot be run, explain what was skipped and why in the pull request.
Submit the change
Section titled “Submit the change”- Review the diff and exclude generated files, IDE metadata, credentials, and unrelated changes.
- Commit complete work using the repository format:
[Type -> module] Description. Omit-> modulewhen the change spans three or more modules. - Push the branch to your fork.
- Open a pull request against the original Codeberg repository.
- Summarize the problem and solution, list the validation performed, and disclose known limitations or skipped checks.
- Link the issue addressed by the change when one exists.
Keep the pull request focused enough to review and test independently. Respond to review feedback with additional commits until the change is ready to merge.
Licensing
Section titled “Licensing”Blender Development is licensed under the GNU General Public License v3.0 or later. By submitting a contribution, ensure you have the right to provide the code, documentation, or assets under the project’s license.