The purpose of this document is to describe the standard workflow for processing contributions to OCCT.
OCCT development is hosted on GitHub at https://github.com/Open-Cascade-SAS/OCCT. All contributions are submitted as Pull Requests (PRs) through the GitHub interface.
Before contributing, you must sign the Contributor License Agreement (CLA). See the CLA submission form for details.
PR titles should follow the pattern <Group> - <Summary>, for example:
Modeling - Modify surface evaluation Visualization - Fix crash on empty shape display Data Exchange - Add support for STEP AP242 edition 4
The group identifies the OCCT module or component affected by the change. The summary should be a short, imperative description of what the change does.
The contribution workflow follows these steps:
Start with a Draft PR to signal that the work is in progress. CI/CD pipelines will run on every push, providing early feedback on build and test results.
Create the PR from your fork's feature branch to the IR branch of the official repository.
When the Draft PR is ready, mark it as "Ready for Review":
After approval and successful CI/CD checks, the PR is merged by a maintainer. PRs are typically squashed into a single commit on the IR branch.
The following automated checks run on every PR:
Results are visible in the GitHub Actions tab of the PR.
There are no restrictions on branch names. Choose a descriptive name that reflects your change (e.g., fix-empty-shape-crash, add-step-ap242-ed4).
Commit messages should be descriptive. The recommended format:
Modeling - Fix crash in BRepAlgoAPI_Fuse on empty shapes
The commit description should explain:
The change should comply with OCCT Coding Rules. Re-formatting of unrelated code should be avoided unless done in a dedicated PR.
For functional changes, a test case should be created (unless an existing test already covers it). See Creating a New Test for instructions.
Test data files (CAD models, etc.) should be attached to the GitHub Issue or PR.
If the change affects documented functionality, the corresponding documentation in the dox/ directory should be updated in the same PR.
Changes that break API compatibility must be documented in Upgrade from previous OCCT versions.
Open issues through the GitHub web interface using the provided issue templates:
Templates apply the appropriate labels automatically; there is no need to set them by hand. Maintainers may add further classification labels (component, priority, etc.) during triage.
If your branch falls behind IR, rebase it:
git fetch upstream git rebase upstream/IR
Force-push the updated branch:
git push --force origin <your-branch-name>
Review feedback is provided as PR comments. Address each comment by:
If your PR relates to an existing GitHub issue, use "Closes #123" or "Fixes #456" in the PR description to automatically link and close it on merge.