Classify C++ core patches by purpose and upstream-ability #254

Closed
opened 2026-02-16 17:13:24 +00:00 by forbes · 0 comments
Owner

Summary

Audit the 36 cherry-picked C++ commits (documented in UPSTREAM.md) and classify each into one of three categories. This informs which patches we maintain long-term vs. which we push upstream or eliminate.

Categories

1. Platform extension points (KEEP)

C++ that provides APIs for Python addons. These are the reason Create is a fork and not just an addon pack.

  • EditingContext system (EditingContext.cpp/.h)
  • BreadcrumbToolBar (BreadcrumbToolBar.cpp/.h)
  • FileOrigin/OriginManager/OriginSelectorWidget
  • CommandOrigin (Commit/Pull/Push/Info/BOM)
  • appendToolbar() visibility forwarding

2. Branding and theming (KEEP, minimize)

Unavoidable in a fork but should be as small as possible.

  • Splash screen changes
  • About dialog
  • Icon overrides
  • QSS/preference pack
  • Build defaults and version migration skip

3. Bug fixes and polish (UPSTREAM)

Should be contributed to FreeCAD upstream to reduce our patch burden.

  • Wayland scaling fix
  • Menu icon sizing
  • Window flickering/icon clipping
  • ToolBarItem incomplete type fix
  • reportException fix

Deliverables

  • Update UPSTREAM.md with a Category column in the cherry-pick table
  • For each Category 3 patch, open an issue on FreeCAD's GitHub tracker (or confirm already fixed in 1.2+)
  • Document which Category 1 patches could theoretically be proposed as FreeCAD extension points (long shot but worth tracking)
  • Identify any patches that are no longer needed against upstream 1.2

Acceptance criteria

  • Every one of the 36 commits has a category assignment
  • Category 3 patches have corresponding FreeCAD upstream issues or confirmation they're resolved
  • UPSTREAM.md updated with classification

Dependencies

None (documentation task, can proceed any time)

Notes

The goal is to shrink the C++ patch surface over time. Every patch we get merged upstream is one less conflict during rebases. Category 1 patches are our core differentiator and will always exist, but they should be clean, well-isolated, and documented.

## Summary Audit the 36 cherry-picked C++ commits (documented in UPSTREAM.md) and classify each into one of three categories. This informs which patches we maintain long-term vs. which we push upstream or eliminate. ## Categories ### 1. Platform extension points (KEEP) C++ that provides APIs for Python addons. These are the reason Create is a fork and not just an addon pack. - EditingContext system (`EditingContext.cpp/.h`) - BreadcrumbToolBar (`BreadcrumbToolBar.cpp/.h`) - FileOrigin/OriginManager/OriginSelectorWidget - CommandOrigin (Commit/Pull/Push/Info/BOM) - `appendToolbar()` visibility forwarding ### 2. Branding and theming (KEEP, minimize) Unavoidable in a fork but should be as small as possible. - Splash screen changes - About dialog - Icon overrides - QSS/preference pack - Build defaults and version migration skip ### 3. Bug fixes and polish (UPSTREAM) Should be contributed to FreeCAD upstream to reduce our patch burden. - Wayland scaling fix - Menu icon sizing - Window flickering/icon clipping - ToolBarItem incomplete type fix - `reportException` fix ## Deliverables - [ ] Update UPSTREAM.md with a `Category` column in the cherry-pick table - [ ] For each Category 3 patch, open an issue on FreeCAD's GitHub tracker (or confirm already fixed in 1.2+) - [ ] Document which Category 1 patches could theoretically be proposed as FreeCAD extension points (long shot but worth tracking) - [ ] Identify any patches that are no longer needed against upstream 1.2 ## Acceptance criteria - [ ] Every one of the 36 commits has a category assignment - [ ] Category 3 patches have corresponding FreeCAD upstream issues or confirmation they're resolved - [ ] UPSTREAM.md updated with classification ## Dependencies None (documentation task, can proceed any time) ## Notes The goal is to shrink the C++ patch surface over time. Every patch we get merged upstream is one less conflict during rebases. Category 1 patches are our core differentiator and will always exist, but they should be clean, well-isolated, and documented.
forbes added the documentation label 2026-02-16 17:13:24 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kindred/create#254