This page is also available in Dutch: CAD kernels.
Under every CAD application sits a geometric kernel: the library that actually makes, stores and edits the shapes. Every fillet, boolean and STEP export is the kernel doing the maths. Users never see it, but it decides how robust, how accurate and how interchangeable a tool really is.
On this page I explain what NURBS is, why kernels matter and what the pros and cons are of the kernels available for open-source mechanical engineering today.
What is a modeling kernel?
A kernel is a software library that defines 3D shapes and carries out the operations on them: primitives, booleans (union/subtract/intersect), fillets and chamfers, offsets, sweeps, lofts, sections, mass properties and file exchange. Applications like FreeCAD, CadQuery and Build123d are in fact a user interface on top of a kernel.
There are only a handful of production-ready B-rep kernels in the world. That is why nearly every commercial CAD package licenses one, instead of building its own.
NURBS in 60 seconds
NURBS (Non-Uniform Rational B-Splines) is the mathematical language 3D CAD speaks. A NURBS curve or surface is defined by control points, weights and a knot vector, which gives three properties that really matter in engineering:
- Exactness: circles, cylinders, cones and spheres are represented exactly (with rational weights), not approximated by tiny triangles
- Local control: moving one control point changes only a local area, which makes interactive modelling predictable
- Compactness and smoothness: curvature-continuous surfaces cost very little data, ideal for aerodynamic and moulded parts
Almost every industrial exchange format, STEP, IGES, ACIS, is built on NURBS geometry. If a kernel speaks NURBS well, your models survive the round trip to other tools.
The kernel landscape
- Parasolid: Siemens, commercial. NURBS plus analytic geometry, the industry standard, used by SolidWorks, NX, Onshape and Shapr3D.
- ACIS: Spatial / Dassault, commercial. NURBS, very mature and extensible, used across a lot of mid-range CAD and CAM.
- CGM: Dassault, commercial. NURBS, very mature, used by CATIA and in hybrid form by SolidWorks.
- C3D: C3D Labs, commercial. NURBS, mature, including visualisation and exchange, used by various independent software vendors.
- Granite: PTC, commercial. NURBS, mature, used in the Creo ecosystem.
- OpenCASCADE (OCCT): Open Cascade SAS, LGPL-2.1. NURBS with a full B-spline infrastructure, around 30 years old, the only mature open-source B-rep kernel, used by FreeCAD, CadQuery, Build123d, KiCad 3D, Gmsh and Salome.
- Truck: ricosjp, MIT/Apache. NURBS surfaces, early and not yet production-ready, used by CADmium.
- SMLib: Solid Modeling Solutions, source-available. NURBS-native, a long history, niche, with 200+ companies according to the vendor.
- openNURBS: McNeel, open source. Reads and writes 3DM, an exchange toolkit rather than a full kernel, used for Rhino file interoperability.
- CGAL: open source. Not NURBS but polyhedral, mature for computational geometry, used in robotics, GIS and meshing.
Open source: where things stand
OpenCASCADE (OCCT) is the only production-ready open-source B-rep kernel. Its NURBS core is decades old and genuinely complete: a homogeneous B-spline formulation for all curves and surfaces, interpolation and approximation algorithms, non-manifold modelling and a shape-healing toolkit to repair imported geometry. When people say “open-source CAD”, they almost always mean OCCT.
A new wave of kernels is coming on fast, especially Rust projects such as Truck, plus the applications built on them (CADmium) and code-first tools like SolidCraft. They aim at modern languages, WebAssembly and clean APIs, which OCCT’s thirty-year-old C++ interface struggles with. They move fast, but they are still early: booleans, fillets and robustness in large assemblies remain the hard parts.
The age difference is large: OCCT has been developed since the early 1990s (open source since 1999) and is by far the veteran. Almost every other open-source kernel is only a few years old. Truck, for example, has been around for about four years and already covers the basics, but that is still very young next to a kernel with three decades of hardening behind it.
That said, the gap is closing faster than ever. AI-assisted development, code generation, automated testing and LLM agents that set up geometry algorithms and hunt down kernel bugs, hugely lowers the effort of building and hardening a new kernel. Work that once took a team years can now be prototyped in weeks. Expect this field to look very different within a few releases.
Pros and cons
NURBS / B-rep versus mesh (polygon) modelling
✅ Advantages of NURBS/B-rep
- Exact analytic geometry, circles and bores stay clean
- Parametric feature history (change the sketch and everything regenerates)
- Production-ready output (CAM toolpaths, drawings, tolerances)
- Compact, smooth and curvature-continuous surfaces
- Standard STEP/IGES exchange
❌ Drawbacks of NURBS/B-rep
- The hard problems really are hard, robust booleans, fillets and offsets remain the eternal weak spot
- Heavier to build and maintain than a mesh kernel
- Imported geometry often needs shape healing
- Free-form surface work is less mature in open source than in Rhino-class tools
Choosing a kernel
✅ OpenCASCADE (OCCT)
- Mature, proven, large ecosystem (FreeCAD, CadQuery, Build123d, Gmsh)
- Full NURBS/B-spline plus non-manifold modelling and shape healing
- Free (LGPL-2.1) and cross-platform
Drawbacks: a large legacy C++ API, dated ergonomics, the occasional edge case in booleans and fillets, and a migration to modern C++ (17) that is still running.
✅ Emerging kernels (Truck and others)
- Modern languages (Rust), clean APIs, WebAssembly-friendly
- Permissive licences (MIT/Apache)
- Active development and momentum
Drawbacks: early stage, incomplete feature coverage, booleans and fillets not yet production-reliable, small communities. Fine for experiments and the browser, not yet for critical production work.
My view
For real mechanical engineering work, OCCT is the pragmatic choice today: the only open-source kernel that can carry a model from sketch to production. The new kernels are worth following and testing, because the moment one of them combines robust booleans and fillets with a modern API, the open-source CAD landscape changes. I follow them here as they mature.
Further reading
- Mechanical & Product Design: the tools I work with
- Tests & Benchmarks: how I measure STEP/IGES fidelity and kernel robustness
