- Migration from dev.opencascade.org/Mantis/Gitolite infrastructure to GitHub-native workflow (Pull Requests, Issues, GitHub Actions CI/CD). - OCCT 8.0.0 upgrade guide with detailed notes on TCol* typedef deprecation, BSpline weight accessors, evaluation hierarchy refactoring (EvalD0/D1/D2/D3/DN), Handle out-parameter deprecation, Standard_Mutex → std::mutex, PLib value types, BRepGraph, TopoDS_TShape redesign, math wrapper deprecation, mesh factory registry, and more. - Build system modernization: C++17 requirement, VS2022/GCC8+/Clang7+ compilers, vcpkg integration, CMake-driven documentation targets replacing legacy gendoc. - Removed obsolete documentation: Mantis workflow, access levels, issue lifecycle, pre-7.1.0 upgrade history (archived at dev.opencascade.org/doc), in-tree Inspector and DFBrowser documentation, 3rd-party build guide (outsourced to vcpkg/upstream). - INSTALL_DIR_RESOURCE directory now correctly described in the install tree layout. - Obsolete BUILD_PATCH CMake option removed from documentation. - Code examples modernized: occ::handle<> syntax, NCollection_*<T> templates, BRepAdaptor_Curve, IsDone() checks, null-handle guards, native C++ types over Standard_* typedefs, Append() over Appends(), correct variable names. - Code block language tags: .php → .tcl for Tcl scripts, .glsl for shader listings. - IGES translator: deprecated API calls updated (SetReadVisible + TransferRoots), IDT_ message API replaced with Message_Messenger, thread-safety warning added. - DE_Wrapper: STEP thread-safety note (per-reader), IGES unsupported for concurrency. - Removed Mantis tracker link from GitHub issue template config. - Removed DFBROWSER and INSPECTOR entries from DrawPlugin resource file. - Tcl reference URL updated (tcl.tk → tcl-lang.org).
6.1 KiB
Contribution Workflow
@tableofcontents
@section occt_contribution_intro Introduction
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.
@subsection occt_contribution_intro_cla Contributor License Agreement
Before contributing, you must sign the Contributor License Agreement (CLA). See the CLA submission form for details.
@subsection occt_contribution_intro_pr PR Title Convention
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.
@section occt_contribution_workflow Standard Pull Request Workflow
@subsection occt_contribution_workflow_overview Overview
The contribution workflow follows these steps:
- Fork and Branch: Fork the OCCT repository and create a feature branch.
- Develop: Implement the change following @ref occt_contribution__coding_rules "Coding Rules".
- Test: Run existing tests to ensure no regressions. Create a test case when applicable (see @ref occt_contribution__tests "Automated Test System").
- Create Draft PR: Submit a Draft Pull Request on GitHub. CI/CD tests will run automatically.
- Ready for Review: When the change is complete and CI/CD passes, mark the PR as "Ready for Review".
- Code Review: A maintainer reviews the change. Feedback is provided as PR comments.
- Address Feedback: If changes are requested, update the PR. The CI/CD will re-run.
- Merge: Once approved and all checks pass, the PR is merged.
@subsection occt_contribution_workflow_draft Draft Pull Request
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.
@subsection occt_contribution_workflow_review Code Review
When the Draft PR is ready, mark it as "Ready for Review":
- A reviewer will examine the changes for correctness, compliance with @ref occt_contribution__coding_rules "Coding Rules", and completeness.
- Review comments are posted as PR comments. Use GitHub's "Request changes" or "Approve" features.
- Address review feedback by pushing additional commits to the branch. CI/CD re-runs automatically.
@subsection occt_contribution_workflow_merge Merge
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.
@subsection occt_contribution_workflow_ci CI/CD Testing
The following automated checks run on every PR:
- Build on multiple platforms (Windows, Linux, macOS)
- Coding style verification (clang-format)
- DRAW test suite execution
Results are visible in the GitHub Actions tab of the PR.
@subsection occt_contribution_workflow_branch Branch Naming
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).
@subsection occt_contribution_workflow_commit Commit Messages
Commit messages should be descriptive. The recommended format:
Modeling - Fix crash in BRepAlgoAPI_Fuse on empty shapes
The commit description should explain:
- Problem: What was wrong
- Change: What was modified and why
- Result: The expected behavior after the fix
@subsection occt_contribution_workflow_code Requirements to the Code
The change should comply with OCCT @ref occt_contribution__coding_rules "Coding Rules". Re-formatting of unrelated code should be avoided unless done in a dedicated PR.
@subsection occt_contribution_workflow_test Providing a Test Case
For functional changes, a test case should be created (unless an existing test already covers it). See @ref testmanual_intro_quick_create "Creating a New Test" for instructions.
Test data files (CAD models, etc.) should be attached to the GitHub Issue or PR.
@subsection occt_contribution_workflow_doc Updating Documentation
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 @ref occt__upgrade "Upgrade from previous OCCT versions".
@section occt_contribution_issue_attrs Reporting Issues
Open issues through the GitHub web interface using the provided issue templates:
- Bug Report - for reproducible defects. The template asks for a description, expected and actual behavior, a sample script or code, OS, compiler, bitness and OCCT version.
- Feature Request - for new functionality or enhancements. The template asks for a description, use case, expected benefits and any additional context.
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.
@section occt_contribution_nonstd Additional Notes
@subsection occt_contribution_nonstd_rebase Updating Branches
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>
@subsection occt_contribution_nonstd_feedback Handling Feedback
Review feedback is provided as PR comments. Address each comment by:
- Pushing a fix commit to the same branch
- Replying to the comment thread explaining the resolution
- Resolving the conversation when done
@subsection occt_contribution_nonstd_relate Related Issues
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.