Adam James

August 25, 2021

Keep Design Source Open

Untitled_Artwork.png


When I worked as an mechanical engineer and designer, I became very familiar with CAD software like AutoCAD and SolidWorks. Both are powerful tools for building complex and detailed models and they have their justified place in many design teams. 

It’s not free software, though, and your design models don’t export cleanly to other formats. If you are building a library of models in proprietary software, you become slave to that vendor. They set the price for access to your designs.

It is true that you can always export to neutral formats (STEP for 3D, DXF or PDF for 2D), but anyone who has used CSV files to transfer database information to/from Excel will know that neutral formats don’t always work perfectly. If you have a picture of a page from a book, you can read the words but you cannot edit them without first transcribing it yourself. Your designs will be yours, but if you stop paying your license fees, your model library becomes much harder to access and edit. 

I think of design models as an attempt to describe the platonic ideal of a concept. We can perfectly describe the concept of a circle’s form with its centre, radius, and a definition (a circle’s edge is always exactly 1 radius distance away from its centre), but we can’t actually manufacture perfect circles. An engineer might argue that “good enough” is actually perfect for the requirements, but let’s not muddy the waters.

My point is that when we model a design we are attempting to communicate its form and purpose as generally as possible while still being specific as to how it meets requirements. 

It is this design essence that I think should be open. This design source should be always accessible so that we can more readily use and adapt it as requirements change and new ideas accrue. Or, if a project is abandoned, the source can remain as an artefact for history. 

This is one major benefit of programmatic CAD. The design source is essentially just text. If you write your designs in an open language with open source libraries, you will always have the ability to compile your designs into useful models and drawings, even when people leave projects or your software tools change.

You can even build these open tools into an existing closed workflow. If you keep the source open, you can compile design snapshots into proprietary formats and use your existing design approaches. With the right dev skillset, it is even possible to write new compilers for new proprietary software that the industry switches to later, all while maintaining control of and access to your design source. 

That is the ideal which I hold in my head as I work on my code CAD tools. I don’t expect code CAD to revolutionize design software and it doesn’t eliminate the actual challenges of engineering and design, it just eliminates one source of risk (vendor lock-in) while simultaneously providing flexibility at the front of your design workflows. Naturally, you do end up with a kind of “skill lock-in” as designers need to be programmers or have programmers on the team, but it turns out that modelling and design skills are not so different from the necessary programming skills anyway. 

Besides, if we eliminate the need for skill and deliberate thinking in the workplace, we won’t really have to worry about these things anyway, we will have solved work and can instead relax!

In the meantime, I will happily use code as part of my design process.