Is Directus going to be re-written in Rust?

Is Directus going to be re-written in Rust, and what does that mean in terms of migration and existing extensions? I read on this AMA that is the case. I am wondering if Directus is the right choose for us, but this makes me uncertain.

In the Directus email about this AMA, it mentions

> Our upcoming architectural rewrite in Rust

That is a big thing to just casually mention, I’ve been following the issue queue, discussions and discord and hadn’t seen anything about that!

Could you share more on what this is, and what kind of timelines are you looking at?

We’ve been a bit stealthy about it to make sure folks didn’t onboard toooo early (learned our lesson from Directus 8 → 9 and Nuxt 2 → 3 :sweat_smile:)

We have some big improvements in the pipeline that required a bit more scalability and resource management than we’re able to squeeze out of NodeJS, so we’re indeed jumping ship to Rust! :crab:

@rijkvanzanten still keeping our future a secret :man_shrugging:

Over @discord he is teasing now and then some things he might or might not working one. Like recently:

What l learned so far:

  • If it’s not a node backend, it’s definitely ??? (should be dotnet, right? :winking_face_with_tongue:)
  • This backend might interface to API extensions via gRPC
  • Nuxt Layers idea might be an approach for APP extensions. Would be easier to accomplish using a Nuxt app i guess…
  • WASM/WASI is sick. Sick enough tho, to bridge the gap between Nuxt and Native? :thinking:

Feels like big times are ahead…

3 Likes

Would be cool if we end up with a way to write extensions both in Typescript for convenience and Rust for performance…

1 Like

That sounds… scary. Why not just a better JS runtime? Deno, for example? Wouldn’t that save a lot of effort? I don’t think there are a ton of Rust developers. We’ll have to rewrite all of our custom extensions, no?

2 Likes

We’re hard at work preparing for the next decade of Directus, and that does indeed include refactoring our core internal logic to Rust for improved performance and scalability. JavaScript is a great language to develop in quickly, but its runtimes are quite resource intensive to scale. Whilst our internals are moving to Rust, that doesn’t necessarily mean all extensions have to as well. The amount of developers who are familiar with and skilled in Rust is but a tiny fraction of that of JS, so the plan is still to keep JS as a first class citizen target for extensions. It’s a bit too early to go into full detail on what that’ll look like as it’s still in active development, but hope to have some more fun news to share before the end of the year :smiley: :tada:

6 Likes

You should also consider making dotnet a first-class citizen.

I would assume there’s a horde of corporate dotnet devs out there who would love to plug their controllers into a solid, manageable backend with an extendable, nice looking admin UI taking the burden of webdesign from them :wink:. It might not take much more than spinning up a dotnet runtime instead of JS, given the interfacing is done by gRPC.

I had some hope that Umbraco would fill this gap as a dotnet powered multipurpose backend, but its evolution seems to have slowed down over the course of the past years. So please consider giving the homeless a new home :folded_hands:

1 Like

Will the functionality be the same or will we start from zero with some basic features?

Early access releases will always start a bit smaller, but it’s too early for me to tell with full confidence what that release timeline and process looks like :+1:

1 Like

i understand that completely!

If you have any details, it would be nice to know :slight_smile: