Rewrite the open source SQLite in Rust under an MIT license[2].
Of course, once you complete the core product, there is the extended ecosystem to consider.
[1] https://turso.tech/blog/introducing-limbo-a-complete-rewrite...
But by rewriting software, even in the same language we can learn from past mistakes and experiences and create better and more maintainable software.
Like I've worked places where the business ran off a layer cake of '80s tech, '90s tech that partially replaced the '80s tech, and '00s tech that partially replaced the '90s tech, and were now on their way to launch a big project to replace all that with '10s tech, a project doomed to run out of steam half way through (because legacy code got hands), inevitably leading to a codebase that consists of three failed attempts to rewrite the '80s codebase, and the '80s codebase.
As the functionality of the code was business critical, and no shift in behavior could be tolerated, they're never getting out of this mess, and would have been better off staying on '80s tech.
It's good for job security that's for certain.
In the context of free software it is usually also a method to be able to sideline part of the existing user or developer community, which you can not easily justify when making changes the existing project but can be achieved with a rewrite. But the former leads to a honest view of the trade-offs and consequences where the rewrite is a toxic power move.
The problem with never rewriting is that you miss the chance to discover better ways of doing things. No system is ever built perfectly, if all you ever do is iterate on a bad foundation you're limited by that. Approaching a problem in a different way is only possible when creating something new.
Of course you shouldn't rewrite something just to do it the same way, and you shouldn't rewrite something just because you don't understand it, but I also don't understand the perspective that you should never build something new when there is an existing solution, because it's often only through building out one or more bad solutions that you arrive at a good one. And if you follow such a strict rule, you never end up building anything good.
In Unreal's case, they built the Actor system and have used it for almost two decades. In that time we have discovered better ways of doing things, and it would be a shame to be stuck with an inferior design because Joel said to never rewrite things almost three decades ago...