Most mechanical CAD tools (SolidWorks, Fusion, FreeCAD) still lock all modeling into opaque binary files. That makes it hard to track changes, collaborate with Git, or automate builds.
I’ve written a proposal for an alternative paradigm:
- GUI-first, like KiCad - visual modeling is the default
- Text-based source files (YAML/JSON) — readable, diffable, Git-friendly
- Separation of source and result - .step, .stl and previews are built artifacts
- Parametric logic is explicit - slot width = tab width + clearance
Works with Git, CI, or scripting — no more PDM lock-in The proposal is called SplitCAD, and it's just a concept for now — not a working tool. But I’d love to hear from anyone frustrated by the limitations of current mechanical CAD.
GitHub: https://github.com/yuanxun-yx/SplitCAD
IMO, graphical languages should have graphical merge tools. You can't expect the text to be mergeable, but it's not enough reason to refuse file diffing as a concept.
The problem is that graphical tools are usually large, proprietary software made with the explicit purpose of locking people into an entire ecosystem. Diffing is a small specialized operation that enables portability and interoperability between ecosystems, so tool creators actively avoid those.
There is current work in STEP AP242 to annotate parts of a design with UUIDs to make it easier to work out if elements of a saved file are new or modifications of a pre-existing one.
UUIDs don't tell you that because when does changing a part make it a new part and thus a new UUID? Unless the users is naming all parts - but that isn't what UUIDs normally are and opens a different set of problems.
The problem is hard. I wish those working on it luck, but I don't have high confidence that it is solvable.
There will be an algorithm defined for CAD systems to follow on when to keep or replace a UUID.