In the context of a bigger project (CampOSV/PYOSVUE), I am currently working on a collaborative CAD platform that intends to bring collaborative software development practices to open hardware design.
Obviously, FreeCAD has a huge role to play as the most advanced Open Source CAD project.
For what it is currently worth, you may have a look at http://220.127.116.11:3000/gflorent/test-repo
for a prototype implementation. Basically, it is Gitea (very similar to Github) + CAD functionalities : CAD files (STEP, IGES, STL, BREP) and FreeCAD files are rendered
As of today, for FreeCAD users, the only plus (as compared to Github) is the possibility to visualize FreeCAD files online. Each BREP in the zipped FCSTD is displayed in a different color (select a shape:t -> toggle visibility, w-> toggle wireframe). Nothing is there yet to handle merges/merge conflicts.
Feel free to create a user account (http://18.104.22.168:3000
), to create a repo and to add some FreeCAD, STEP, IGES, STL, BREP files. Beware that it is a prototype that comes with no guarantee whatsoever
We have bigger plans for the future :
- assembly of heterogeneous parts (think of assembling a STEP, a BREP and a (geometry description) Python file) through the use of vectors attached to parts features.
- lightweight parts libraries (embedding data and creation logic in JSON files)
- parts and assemblies description in Python using PythonOCC...
- PLM info attached to parts and assemblies
- an enhanced Git Workbench in FreeCAD ?
We believe that 3 factors will make distributed version management possible/manageable for Open Source CAD (aka solve the merge CAD problem):
- if using FreeCAD, the appearance of a robust Open Source solution for assemblies: an Assembly (from 2, 2+ or 3 or another?) workbench will emerge as the de-facto standard in the FreeCAD ecosystem and make merge conflicts more localized (to some specific parts).
- if using a programmatic description of geometry/assemblies and neutral formats, the possibility itself to make a programmatic description of assemblies and parts (we are working on that). Since the assembly/part description would be code, it is easily managed in a distributed version control system.
- a specific approach to CAD merging/merge conflicts, yet to be implemented !
Anyway, I would love to have some feedback, ideas, thoughts, criticism, questions, experiences about managing the collaborative development of Open Hardware projects using Open Source software, be it in the FreeCAD context or in a more general way