OCCT, GitHub - New way to collaborate

Hello dear OCCT collaboration forum community,

We are thrilled to announce that the OCCT GitHub repository is now open for Pull Request (PR) integration. For those eager to collaborate with us on GitHub, we have prepared the initial version of our GitHub collaboration workflow. Please note, the current workflow is subject to change, and any updates will be communicated through new forum articles. Documentation will be updated once the working process is fully determined and described.

OCCT GitHub Workflow (V1):

  1. Licensing: OCCT is available under the LGPL 2.1 license. To integrate any of your changes into our repositories, collaborators need to sign the Contributor License Agreement (CLA). Details on how to sign and submit the CLA are available on the following page Get Involded].

  2. Bug Tracking: All OCCT commits must be associated with a specific bug ticket in our bug tracker. We recommend creating a profile in the bug tracker BugTracker] when you sign the CLA. This is required for integrating your contributions into the OCCT repository. GitHub users can describe their issue in a special PR, and the OCCT team will create a connected ticket with your provided information and update your PR with the correct title.

  3. Forking: PRs to the OCCT repository are accepted only from external forks. Please create your own fork and work within your repository during the development process.

  4. PR Submission: Once you have completed your code updates and prepared the final fix, please submit a PR to the OpenCascade OCCT repository using the following templates:

    • If your PR has a connected bug ticket in our bug tracker:

      • PR Name Template: <ticket number>: <Category(es)> - <Summary description>
      • PR Description: Should contain a summary of your changes in a clear and concise manner.
      • Example:
      0032750: Visualization, AIS_Manipulator - selection of moved object is broken
      Completed the stop transform action when dragging manipulator with mouse.
      Added context redisplay for update of interactive object sensitive areas.
      Added test.
      
    • If your PR does not have a bug ticket:

      • PR Name Template: <Category(es)> - <Summary description>
      • PR Description: Should include the following details:
      1. Steps to reproduce the issue.
      2. Any necessary files related to the bug.
      3. Version of OCCT when the bug was found.
      4. Type of the issue (minor, major, crash, documentation).
      5. Platform where the issue was found or fixed.

    The information about the fix itself should be presented in one of your commits. The git commit message should match the PR template for cases when you already have a created bug ticket.

    Available categories: Data Exchange, Visualization, Coding, Documentation, DRAW, Testing, Configuration, Application Framework, Foundation Classes, Mesh, Modeling Algorithms, Modeling Data, Samples, Shape Healing.

  5. CLA Number: Please include your CLA number in the GitHub note. This number is provided in an email from us that confirms your CLA signing request. This step is required only once per account.

  6. Branching: PRs to the master branch are not accepted. After verifying your CLA, the OCCT team will update the PR base branch to an IR-n branch. The IR-n branch is used to collect a sequence of git commits for integration into the master branch, helping us validate and test issues collectively to avoid conflicts.

  7. Testing: The OCCT team will initiate the testing process and share the results with you. If there are any regressions, we will ask you to address them. If testing on your end is not possible, the OCCT team will take over to fix the regressions. In such cases, the issue will be queued for the next available developer.

  8. Code Review: The OCCT team will conduct a code review, sharing any remarks and suggestions to ensure a collaborative integration process. Any changes during the code review should be made by the PR submitter.

  9. Approval and Merging: Upon successful testing, an OCCT team member will approve your PR, and the bugmaster will merge your PR into the IR-n branch.

  10. IR-n Branch Lifecycle: The IR-n branch will exist for a period during the internal development cycle. You will be notified when your changes have been merged with the master branch.

We are committed to simplifying the collaboration experience. Your suggestions and feedback are always welcome.

Best regards, OCCT3d development team.

gkv311 n's picture

These no-reply emails with cryptic numbers don't look nice to me...

0033615: Modeling Algorithms - Partition algorithm creates unexpected vertices
author  akaftase <168822067+akaftase@users.noreply.github.com>  
    Sun, 7 Jul 2024 21:54:35 +0300 (19:54 +0100)
committer   Pasukhin Dmitry <44947322+dpasukhi@users.noreply.github.com>    
    Mon, 8 Jul 2024 18:28:00 +0300 (17:28 +0200)
Dmitrii Pasukhin's picture

Hello, I will check the possible ways to change that result. Additionally for some reason the name was used as a profile name in my case. 

Yes, that result was not planned. If you know possible ways to updated GitHub setting to do something with that, please let me know.

Best regards, Dmitrii.

Dmitrii Pasukhin's picture

As I can see it is a result of merging from the Web-Interface. Original email (before merging) was correct. Next Integration Request and closest PR will be merged via CL.

Integration request to master by dpasukhi · Pull Request #27 · Open-Cascade-SAS/OCCT (github.com)

That looks better. We will keep the old committing way. Unfortunately, GitHub have no enough flexibility via web.

Best regards, Dmitrii.

gkv311 n's picture

Yeah, web-interface tools processing MR (like GitLab or GitHub) tend to take user profile settings when they need to modify commits (e.g. squashing multiple commits. or editing description, or just by rebasing the patch). I don't think that command-line interface to MR in these systems will provide more control over this.

Dmitrii Pasukhin's picture

CL in current context is not a CL from GitHub ("gh"). GH has the same functionality as a web interface. I was talking about just terminal git commands. As I can see it can be a solution(from my fast checks and some GitHub discussions). We continue to investigate. But indeed, that limitation is not expected.

Best regards, Dmitrii.