Why we're open sourcing our core libraries

Heritage is the past of safety-critical systems; transparency is its future.


The term "Heritage Design" gets bandied about a lot in engineering (particularly hardware) and is intended, in its most charitable interpretation, as a synonym for trust. Using a thing with rich historical success under its belt is usually wise engineering.

In less charitable reads, the term is the cudgel of entrenched interests, used to frighten risk-averse technologists (or senators) into buying their antiquated wares.

These heritage systems usually require the buyer to "use without modification" (lest you invalidate the design); a convenient excuse to obfuscate internal workings into a black box. "Trust us, it works. It has X years of heritage" becomes a common knee-jerk response to any technical inquisition.

Trust – But Absolutely Verify

When the open source movement started gaining steam decades ago, it wasn't without (valid) skepticism amongst technologists, or outright panic amongst incumbents. "If anyone can see your source, they can hack it!" they'd exclaim. "All the sooner we'll address that vulnerability" advocates would respond, to a mixture of slacked jaws and spinning heads.

The idea that software would not only get better with more eyeballs on it, but give all of us more confidence in the internal workings of systems we could inspect and verify ourselves, was probably the most important mental shift to occur in last few decades of software development.

Today, most major technology teams open source key parts of their stack. Even famously proprietary teams like Microsoft have now embraced VSCode – making it the most popular IDE on the planet. Tesla open sourced huge swaths of their hardware and software patents, and IBM basically maintains the Linux project undergirding literally everything.

Google probably takes the open source cake, first by open sourcing their Android OS and Chromium browser, then by introducing the tech infrastructure world to Kubernetes. Beyond that, Google arguably launched the AI revolution—early on with TensorFlow, and then (infamously) by publishing their research paper on Transformer models, the architecture upon which all modern AI is now built.

There are laggards, of course. Apple still sends black helicopters to the houses of engineers who say the wrong things within earshot of an iPhone (just kidding, but don't mention the helicopters to your Apple friends). And don't get me started on The Mathworks.

Don't like ours? Fork and modify your own!

At our core, we believe open source software is the future. It's the only way to truly achieve the transparency that modern software trust demands, while also accelerating our project's velocity through an expanded pool of contributors and testers. By showing how our software works under the hood, we're giving users several powerful tools they may not be used to in legacy products like Simulink or Ansys.

First, the ability to inspect and verify all source code implementations for yourself. You don't need to trust us, and there's no NDA required to see what's happening under the hood. We lean heavily on first class Rust crates such as NAlgebraEmbedded HAL, and Serde, and want all our implementations to be well understood by our users.

As part of this step, we are also publishing our bug tracker, allowing users to raise issues they encounter with algorithms and protocols, request additional functionality, and eventually contribute to the project themselves. This will give users insight into the timelines expected for getting their issue resolved, as well as the status of other known issues.

Lastly, by open sourcing the Pictorus core, we position the product for a future where users can fork and modify functionality to their heart's content. Rather than wait for our team or the community to fix an issue critical to them, Pictorus users will be able to quickly create a custom fork, where they can fix or introduce any additional functionality they wish.

What's being open sourced, really?

First, a technical point of clarification for our hard-core OS enthusiasts out there - today we're making our core library "source available". This means you can view, modify, and use the code for most purposes, including internal business use, but you can't use it to build competing commercial services. However, there's a 4-year sunset clause, meaning this code will become fully open source at that time.

Specifically: We're open sourcing the core block libraries for roughly 100 built-in engineering and math functions that users connect to form control flow diagrams. This includes everything from Matrix Multiplication to PID controllers to Fast Fourier Transforms. We're also releasing our source code for protocol handling (I2C, UART, ADC, etc) and target-specific compilation (Linux, STM32, etc). We published v0.0.1 at crates.io as of this week.

In a future blog post we'll dive more into the technical challenges behind this library, but suffice to say some blocks are significantly easier to grok than others, mostly based on how generalizable the supported block inputs need to be. For example, the Sinewave block simply needs to generate a scalar signal in time that corresponds to the trigonometric definition of sin(w*t+b). Therefore, its full source is less than 100 lines of code.

Conversely, the simple-sounding Product block is a bit more involved. Beyond supporting both matrix multiplication and element-wise multiplication, it must handle arbitrary combinations of scalars, vectors, and matrix inputs. We designed a paradigm that lets novice users create simple blocks without hassle, while keeping the system extensible enough for complex, generic implementations that power users demand.

There Will Be Bugs

We know that some embarrassing bugs and spirited debates within the community are now part of this journey. These conversations are the crucible in which great software is forged, and we welcome both the debate and the responsibility to own our mistakes. Our users care far more that the system works as perfectly as possible than that we maintain any pretense otherwise.

Onwards and upwards! 🚀