I don't think that using extensions to support new features is much of a problem - if you disagree with that then you'll have to admit that Wayland has an even bigger problem because it requires even more extensions.
X11 doesn't inherently require that many round trips. Xlib does, because Xlib is bad. But, for example, clients choose their own object IDs, so they don't need round trips to find the IDs of newly created objects. Of course it requires a few round trips to do anything, but that is also true of Wayland. The complaint was about excessive round trips, not a few.
> I don't think that using extensions to support new features is much of a problem
You are arguing issues that were not even raised. Read 1st para more carefully, especially the last sentence.
> X11 doesn't inherently require that many round trips. The complaint was about excessive round trips,
Why do NX, x2go, and xpra exist if the X11 protocol over high latency networks is such a peach? It's lovely that clients don't need to round trip for IDs, but this is like saying the Trabant is one the best cars ever made because it possesses a steering wheel (and fwiw Wayland has an even more flexible client side ID allocation). As already said, just because something isn't horrible doesn't mean it's any good either.
There is so much other typical crap that has to go on that is suboptimal: property requests, chatty window management, inefficient frame synchronization, inefficient event handling.
Even if certain operations don't require a lockstep roundtrip, overall chattiness also contributes to latency.
> Of course it requires a few round trips to do anything, but that is also true of Wayland
The Wayland project is not perfect (it is implementing de facto X12 and a large undertaking in a computing world much more complicated both technically and financially than 1986), but it's patently ridiculous and just misinformed to imply the core protocol doesn't address some fundamental shortcomings of X11.
Meanwhile I thought it should be obvious that dispensing with the baked in network transparency of X11 was done as a conscientious choice not because a bunch of smart people just "forgot".
"So here's the thing: X works extremely well for what it is, but what it is is deeply flawed. There's no shame in that, it's 33 years old and still relevant, "... "Though the code happens to implement an unfortunate specification,"
X11 doesn't inherently require that many round trips. Xlib does, because Xlib is bad. But, for example, clients choose their own object IDs, so they don't need round trips to find the IDs of newly created objects. Of course it requires a few round trips to do anything, but that is also true of Wayland. The complaint was about excessive round trips, not a few.