Levels of Source
Source code is clear for software. Source code, if using the term as a metaphor - can apply to hardware design. Such as a house.
In hardware, another concept arises: levels of source.
Because There is No Uniform Compiler, a more complex source code structure prevents simple tools like git from being sufficient to address all documentation needs. Point being - it is not crystal clear what source code is required to define open hardware in a deterministic way. It may easily turn out that the source code is imcomplete, in that it is missing certain 'compilation instructions' - metaphorically speaking. This is a much longer discussion and a can of worms.
For practical considerations, let's define levels of source as multiple ways of defining hardware, with more or less detail - which depends on what tools are used in the development process. Let's take a look at some of these tools:
- CAD - what is the ultimate source? The flexibility of FreeCAD allows for different ways of expressing designs. For example, you can have a file that has editable sketches, and a file that contains dumb objects. All of these files should be available, as they can serve different purposes. But this complicates the file management process in a version history. For novices, the general principle is upload early and often, and label your uploads in the version history comments on the wiki.
For example, editable sketches should be kept whenever possible. But a final design, such as a Clone (dumb object) may be more useful in a large file because it can be represented more simply in the part tree and is more easily manipulable (while being less editable). Or, one may choose a different workflow, such as a workflow other than Merge Workflow. Thus, we may define different levels of source as 2 main levels: fully editable detail with multiple editable sketches, or a final dumb, monolithic, inseparable, uneditable object. And everything in between. CAD mastery means that we formally label these in the version history to make it easier for others to collaborate with us. This is an advanced CAD concept, as we could have many different versions of a file optimized for various purposes: from documentation, to rendering, to analysis, to visualization, to range of motion analysis, etc.
Reconciling Levels of Source: For FreeCAD files, it may be thus useful to combine some levels of source in a single file in order to simplify file management, but the disadvantage is that this adds a step of extracting the right part in the OSE Merge Workflow. For example, this file has all the editable source parts hidden, and a final clone of simple copy (one part and uneditable) is shown as the last item in the part tree.