Ok, so

I keep hearing " all the open source CAD tools suck " and " I want off this train " for paid CAD tools.

And I think to myself: I know how CAD works.

What's in a CAD software anyhow?

A thread: (1/x)
There are two primary things going on in CAD.

a Geometric Modeling Kernel ( does the math ) and a UI / UX ( lets you manipulate the model )
There are a few other important features for data interchange and extensions. Mostly exporters (Step, iges, STL being the most popular), CAM tools, and FEA or CFD tools.
Both the Modeling Kernel and the UI / UX are massive undertakings, but at their center are software that does geometery calculations and then displays them to the user.
CAD systems started at essentially the dawn of what you'd consider modern computing with Sketchpad running on TX-2, a supercomputer developed for air defense (SAGE) that got repurposed at MIT. https://en.wikipedia.org/wiki/Sketchpad 
key features of CAD that set it apart from drafting were: inexact inputs could result in exact shapes. Views could be re-oriented without manually having to draw them again, shapes could be patterned with minimal effort. Properties like mass, moment of inertia, could be exact.
CAD systems stayed exclusively in the charge of advanced government programs (NASA, DOD) and research labs for years before interactive terminals were affordable for businesses (usually designing cars or aircraft), and decades before they were affordable for consumers.
The history of CAD is probably much longer and more complex than most know, as it's roughly as long and complicated as computing itself, and it eliminated many segments of the workforce (draftsmen, calculators, etc) by making it so one engineer can leverage a single tool set.
Anyhow. I think the best approach for dissecting CAD as a programming effort is to walk through a workflow or two, then pop back up to discuss some of the infrastructure you'd need to build around that workflow.
There are a lot of ways to skin a cat, the first one to look at is the parametric modeling approach, then we can maybe do a sidebar for direct modeling. And the first part of any good parametric modeler is the sketcher.
The sketcher allows the user to quickly create a 2d sketch that is parametrically fully defined using dimensions and constraints.
Generally these 2d sketches are located on a plane (though some advanced systems allow 3d sketching) and have an origin / x and y axes. They are comprised of points, lines, arcs, and splines,
in addition to manually adding these curves, often time there are mirroring, patterning, trim and extend, offset, and projection operations available in a sketcher, as well as a long list of UI functions to change snaps, view, filter selections. A comprehensive list is very long.
Generally once a closed loop is drawn and fully defined the user manually transitions to 3d modeling toolset and starts by extruding, revolving, lofting, or sweeping the profile to create a solid or sheet. Sometimes multiple sketches are used to build a 3d feature (as in sweeps).
Once a 3d solid or surface is created the real list of options starts to open up. Boolean (add, subtract, union) operations are one of the more basic features, as well as detailed features ( holes, fillets, chamfers, draft angle, threads, patterened features, etc).
Basic analysis tools allow the user to determine Radius of Gyration, Center of mass, volume, moment of inertia, assign density and measure distances, diameters, and curve lengths.
more complex operations involve trimming and extending surfaces or solids, creating intersection curves, taking section views and extracting section curves, the list can be very long. But this is just a breif overview of what's involved in CAD so I'll move on.
Once a solid model is complete, a few things can happen. It's exported and imported into another CAM or FEA software, a Drawing is created and 2d views / dimensions are added for printing and using on a shop floor, or it's added to an assembly model.
An assembly model is generally comprised of many solid models that are constrained together based one their features or datums (like planes, coordinate systems, or axes). Assembly "parts" or sub models, can generally be moved around or edited in the context of the assembly.
Drawings can generally also be created for assembly models. I won't spend a lot of time on drafting / drawing tools here as generally most hobbyist / nonprofessionals don't use them as a part of their workflow.
Anyhoo, that's most of what's in a CAD workflow. So what's in a Modeling Kernel Anyhow?

The answer there is a bit more complicated. I'm not an expert here but I'll try to explain at a high level. (anyone who is an expert, feel free to pop in and correct me).
A modeling kernel has a few things.

A mathematical representation of the Solid (or sheet) model.

Functions that carry out the operations against said model that were mentioned in the above workflow.

A way to render out that representation to the display.
The mathematical representations are based on:

Boundary Representation (using Nonuniform Rational Bezier Splines or Bsplines as the basis for defining surfaces )
https://en.wikipedia.org/wiki/Boundary_representation

and Constructive Solid Geometry
https://en.wikipedia.org/wiki/Constructive_solid_geometry
Those topics are both pretty complicated so I won't get into way too much detail. Not only is there some hard math, but the specific way you implement the kernel that deals with them will impact accuracy, performance, and pretty much every aspect of a CAD modeler.
Suffice to say there's a reason you can load over a million parts in an NX model but Inventor or solidworks will crash every time you try to dump > 10k parts in a single assembly.
The last thing I'll briefly discuss is the UI. Most CAD systems are comprised of a viewport, a few toolbars with the various commands for sketching and modeling, a window that lists the history of created features or the assembly tree.
The viewport displays an approximation of the exact math model surfaces and curves using faceted polygons (usually with an adjustment for facet count), and usually has a wide range of view operations available ( zoom, pan, fit, section, perspective vs isometric camera, etc).
Some useful / modern features in CAD systems include direct solid modeling, Database and cloud integration, versioning and version control systems, multi-user simultaneous modeling. Tools for intuitively realizing complex shape surface geometry. and design optimization tools.
Some things that haven't been implemented that would be interesting:

Tracking / UI workflow optimization ( offer to automate repeated tasks )

Open source cad would inherently not be a black box users could 1. fix bugs, and 2. script more readily than in commercial offerings.
Companies would stand to benefit as it would be potentially more straightforward for non-specalized software developers to integrate CAD into business dataflow. Currently ERP systems are decades behind due 2 their expense and relative difficulty to implement in small settings
I've said before there would be substantial benefit to the hardware startup ecosystem if Open source CAD (as well as CAM and FEA) was approached seriously and a foundation was established. Many businesses are starved of the proper tools and the workforce is split among many.
Also all of the proprietary tools out there are impossible to integrate in a way that's as beneficial as the data they generate would allow as their codebases are closed and APIs are extremely limited.
Having worked with CAD and code extensively for the last 10 years or so, I would really love to go tackle this problem

but it's something a full time team would need 2 years to get to a launch date. Hard to have someone plop down money for something that's never been done.
The upside: once it starts getting traction it'd take off like wildfire and consume the entire bottom end of the industry, eventually overtaking the Goliath as users contribute features and extensions to the codebase. The team could persist on features for hire and paid support.
The world would massively benefit as huge segements of society without access to advanced CAD / CAM / FEA tools could suddenly participate in and leverage advanced design tools usually relegated to companies with 30k a year per engineer license fee budgets.
laptops are powerful and cheap now. Most machines can run CAD. There are so many people who don't know what they're missing because the free toolsets just aren't there.
Also, I'm not going to get too much into the existing landscape of open source cad efforts, except to say that while they're noble efforts, you really need a full time team and a launch with some traction to get over the hump and maintain relevance.
You can follow @risknc.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: