Wayland is the way it is because it basically lacks a ton of stuff and trusts it to be implemented elsewhere. If you'd wanna make a complete thing out of it, it won't look that much different from X. All the problems you have with something like X were just sourced out to somewhere else in wayland, basically. That said, X has a ton of cruft that's not needed anymore nowadays and the codebase looks accordingly. If you wanna see a bad codebase though, look at the GNU coreutils. And the developers there just keep happily piling shit onto it. Wew.
Screen tearing in X was never an issue for me, there's like a million ways to fix it reliably. I am not sure why most distros don't bother to do so by default and my guess is that distro maintainers don't read manpages. An also often brought up point of X being insecure because "every program can read everything" is not even applicable for programs where that would matter security wise (e.g. browsers) because the processes in browsers that might abuse this are sandboxed away from access anyways. Nobody seems to actually know this. X also has a security extension that can make it differentiate between "trusted" and "untrusted", untrusted apps being not able to read keystrokes etc. sent to other windows. This extension exists for X-based programs running on other computers displayed locally on the server, but it works just fine locally with most things too. Somehow nobody knows this either.
No I'm not claiming X is secure and yes, also because of it's complexity and coming from a time where nobody thought about security much. Hell, I wouldn't be surprised if there's someday some (other) exploit found that already existed for decades and is massive. Such is life in FOSS with legacy stuff. IMO modern computers are too complex anyways to assure security when you have a process (webbrowser) just running random code from random servers all over the world. The best idea is probably using an isolated system and not running that code locally. With the prices of computers nowadays this really shouldn't prove an impasse if you are really that worried.
Also I have seen modern day windows in action recently and even posted a rant here about it. None of that shit is easier than your average linux distribution, maybe even harder because windows is keeping from you what's actually going on most of the time behind a bunch of "Whoopsie daisy. Sorry!" error messages. I think people just parrot that talking point over and over again without thinking about it at all. If technical, googleable error messages overwhelm you so much and you just expect a computer to read your mind and actually know better what you want to do than yourself ...have you ever considered not being dumb and completely ignorant of the world around you?
This because anything done that way would work on a machine from over 40 years ago and still work in another 100 or so.
Don't get me wrong, a lot of sh syntax feels like it was scribbled by a mental patient in some dark corner of a 19th century building, but man, shit just works. Can't argue with results. You're not really supposed to do the complex stuff inside your scripts anyways, I always saw sh more as the glue that holds your *nixoid together.