Realtime Cloud Collaborative Editing
Intro
Realtime cloud collaborative editing - is the editing of documents and creation of digital assets - done over the internet - where a large group of people can edit the same document or asset at the same time.
Cloud refers to the documents being on-line - accessible by anyone anywhere in the world.
Realtime means that many people can edit at the same time, and see others' changes at the same time as they are made.
Collaborative means many people doing this together, and with realtime - at the same time.
Currently, OSE uses Google Slides for collaborative design and build documentation. OSE also uses Part Libraries for realtime CAD development where many people work on individual modules which can then be assembled into a larger design (assembly) - all at the same time. This works by collaborators downloading and uploading new versions, which are not treated as merges until a later point.
In the CAD workflow using FreeCAD - realtime changes are not seen - but they are seen only upon a new file being loaded. With basic python programming, this process can be automated such that the CAD models change in realtime. OSE has not implemented this explicit realtime updating of CAD documents as of 202o - but this is something that could be done relatively easily with a script.
For Advanced Developers: Merge Reconciliation
The reconciliated of merges in CAD follows Test-Driven Design and the Second Toyota Paradox. Parts are not merged officially until they are tested, which requires extensive prototyping. Full testing may not occur until long after a design is made. But this does not mean that design must stop until further testing - as this would waste potentially valuable contributions of developers.
In order to not lock down any design - and thereby allow for parallel contributions - official merges are performed as late in the process as possible. This is due to the effort and expense of 'unit testing' in hardware, where testing cannot be done uniformly or immediately like it can be done in software.
OSE's process is to keep forks on individual contributors' work logs, or update the main branch. The product manager for a given product will make 'pull offers' rather than contributors making 'pull requests'. The distinction is that the 'pull offer' requires active intervention.
In hardware, however - there may be multiple branches in concurrent development. In fact, that is the only way it can be, as Every Hardware Build is a Fork.