Maybe there's a survivorship bias in that only the ones that go poorly people talk about?
Maybe there's a survivorship bias in that only the ones that go poorly people talk about?
Well... if you're pre-qualifying the hypothetical rewrite with "large", that already means we take as a given it will require significant time & effort. (Unless there's a sufficiently smart automatic transpiler tool like a future ChatGPT-v17.)
There have been some successful big rewrites. Google rewrote the web crawlers from Java to C++. They also rewrote the search results front page from Java to C++. Microsoft rewrote C# compiler from C++ to C#. Go rewrote the compiler from C to Go.
In any case, for curiosity... I ran the CLOC tool to count lines-of-code in the main NGINX repo ./src/* subdir. A project to convert ~165k of C to Rust is small enough to be doable by a small team. "Small" being 1 or 2 developers. (I'm not recommending they rewrite in Rust but just comparing the scope of the work to the resources.)
Semi-related footnote is Cloudflare replaced NGINX with in-house Pingora and that was written in Rust: https://hn.algolia.com/?q=pingora
-----------------------------------------------------------------------------------
Language files blank comment code
-----------------------------------------------------------------------------------
C 256 54041 6165 153818
C/C++ Header 134 4810 1077 10041
Perl 2 45 18 112
SKILL 3 24 0 99
Bourne Shell 1 30 5 78
make 1 9 0 21
C++ 1 9 3 19
Windows Resource File 1 3 2 1
-----------------------------------------------------------------------------------
SUM: 399 58971 7270 164189
-----------------------------------------------------------------------------------JS has a different lifecycle though, I suppose. Everything gets rebuilt like 5-10 times more often than other on platforms.
Getting to the finish line matters more than using the absolute best fit so to speak.
Same goes for orgs that have a lot of JS talent but no Rust for example.
I've seen such efforts and they tend to be extremely complicated and not really doing much.
I don't assume rational agency but instead that many people make poor decisions.
The core language is okay enough, not my favorite but it works. It's the surrounding ecosystem that's a pain.
I would have to think really hard if someone asked me if I'd rather have all the infra scripts written in Perl or TS. TS is more likely to break, but easier to read and fix. The odds of Perl breaking are slim, but it is a fucking nightmare to fix. I'm pretty sure I'd rather have Perl than JS, though. JS without a type system is rough, to me at least.
I guess you'd consider librsvg in the poorly bucket, whereas its maintainer considers it a success. I think there's a distinction to be had between "maintainer lead RIIR" & "rando RIIR"
https://lwn.net/Articles/771355 https://viruta.org/librsvg-rust-and-non-mainstream-architect...