Rust10x Blueprints: What Are They?

Context

First, let's get some context and the genesis of Rust10x.com.

After decades of building production applications, primarily highly interactive enterprise cloud applications, I, Jeremy Chone, decided to crystallize all our experience into building a new modern scalable set of application code blueprints and patterns to build high-quality cloud and device applications.

As I believe Rust is a transformative language in terms of code efficiency and developer velocity (quality & speed of delivery/iteration), this effort is primarily focused on Rust and building applications the Rust way.

There are going to be 2 main blueprints:

This effort is supported through various channels:

Blueprints vs. Frameworks

One very important aspect of our approach is that Rust10x Blueprints are NOT frameworks. Instead, they are fully functional code bases that demonstrate how to implement key aspects of production applications, allowing developers to either start their application with them or cherry-pick patterns they find fitting for their code design.

In fact, one of our key strategies for flattening the complexity curve is to prioritize Architecture First over Easy First, even if this often means starting with a slightly higher level of complexity.

Flattening the Complexity Curve

All-in-one-solve-it-all frameworks can be very appealing because they allow for a quick and "easy" start. However, as the application grows, the point of diminishing returns can arrive relatively quickly, and complexity can escalate rapidly.

In many ways, it's not the fault of these large frameworks, but rather the nature of attempting to incorporate too many facets into the same system (library, framework, services), making it inevitably more complex to perform some specific functions that did not fit initially.

Obviously, the goal is not to swing to the other extreme and avoid using any framework at all. For example, Axum is a great "micro" framework that provides the right level of abstraction for its domain (Web Routing & Request Flow) without trying to solve all higher-level web application patterns. This "micro-frameworks" approach makes them leaner, more composable, and therefore more scalable.

So, our approach when choosing technology for our production application code is to prioritize the smaller, focused tools that solve a problem we do not need to address ourselves, but that get out of the way so we can solve what we need in the way we want.

Why Rust?

While we have been writing relatively large applications in Java, Node/TS, and have invested quite a bit in those languages, from our perspective, Rust is a transformative language that offers enough unique attributes to become one of the highest net value languages for building high-quality applications at a high-velocity cadence.

Here are the key unique attributes of Rust:

Also, interestingly, many of our architectural and code design approaches, which seemed somewhat against the grain in other languages and their ecosystems, feel more fitting in Rust.

For instance, libraries are more focused, and even large frameworks tend to split their key components into completely independent libraries, aligning well with our preference for "smaller libs" and "micro-frameworks" kind of code design. Here are a few notable examples from the framework side:

And for bigger applications and systems, the Cargo tooling, include Workspace and Features, can really help organize and scale the code relatively well while minimizing custom tooling complexity.

So, all in all, we believe that Rust is a great fit for our architectural approach and, while not perfect, it has somehow been the "programming platform" we have been seeking for quite a while.

What about the learning curve?

Two points on this:

  1. Fixed cost, for recurrent returns.
  2. A Great Filter for patient developers. (easy == evil in software architecture)

Conclusion on Rust

In short, the Rust language and ecosystem is fitting our architectural approach very well, and we are glad we this new platform (language, tool, ecosystem) to write our production cloud and device applications and share our blueprints with th ecommunity.

Are the Rust10x Blueprints Ready for Production?

As of February 2024,

Conclusion

While providing a specific timeline for the various components is challenging, I am actively creating and maintaining these blueprints as I also use them for my own production applications. This approach is part of how we onboard developers onto our various projects. Consequently, although not complete, these blueprints are the real deal, at least in our context.

I hope this clarified a little bit what Rust10x Blueprints is about and its context. Looking forward to seeing you on the Discord or YouTube channel.

Until next time, happy coding!