And even when you clear that, finding the sweet spot between "you ain't gonna need it" and "you ain't gonna need it until the rewrite is 95% done" isn't easy.
At least you have to give X-Windows credit for preemptively adding lots of crufty bloated code and protocol supporting the 10% of the features you'll never need from day 1 through 10497.https://tronche.com/gui/x/xlib/utilities/XRotate Mechanism, not policy, huh?
( there's a cool video of edlib somewhere as well.
Although the concept of separate views on the same underlying data is not novel, it's a shame such things aren't widely available (or in use) that I know of.
(See, for example, the way the Acme editor does menu commands.)It's also—whatever you think of it—what systemd is doing, sort of consuming components of the Linux userland and leaving cleaner service boundaries in its wake.
The sheer scope of that effort can make the project look bloated—but people forget to compare the codebase with the combined codebases of all the projects it took to have equivalent functionality before.
You've written 90% of the original functionality in 10% of the code.
Then you try to fill in the last 10%, and end up back where you started (with slightly better/more logical code).
The translators reminded me of edlib by Neil Brown: Is there a short summary of the features/value prop for each? A simple overview and link to Github makes a good pitch.Curious how it compares to  bspwm and  sxchd?I feel like the difference between a successful ground-up rewrite and a failed one comes from defining your scope correctly from the outset.You run into the overflowingly crufty "last 90%" work mainly because your new thing still has to plug into an ecosystem of other components that are, themselves, old and crufty.