Let's go back into the 80s of the last century when X got invented. Back then
Unix didn't support shared libraries. Drawing functions on the other hand were
quite complex and adding it to each process was not possible due to memory
constraints. Therefore a client-server approach was used so that all the
drawing functionality would be in the server and the clients would only need a
considerably smaller library to use the protocol to communicate with the
server.
That's how X became network transparent, but it has never been the aim to be
so, it's rather a side-effect of the constraints by the operating system and
hardware back in those days.
If one works with the protocol (and I do so each and every day, a printout is
just in the moment next to my keyboard on the desk) one notices that it's not
designed for network. The protocol has huge overhead, doesn't support
compression, is more sync than async (very bad for network), etc. etc.
What X provided for rendering were the most basic primitives for rendering
what was supported in the 80s and what was invented and not patented in the
80s. Yeah quite some common algorithms used today didn't exist back then and
the patents luckily expired by now. In the 90s this started to get painful and
applications wanted to be better. Slowly, slowly things got replaced by new
extensions (e.g. XRender extension in 2000) or moved directly into the clients
(e.g. fonts).
In the last decade moving to the client went even further. All modern toolkits
render completely client side, that is use either CPU or OpenGL to render into
a local buffer and just transfer the resulting image to X. And that's the
point where the network transparency really hits its limits. What we are now
doing is transferring video over X - without any compression, neither loss-
less nor lossy). In such a situation VNC provides clearly the better choices.
The end result of this trend is Wayland which doesn't have a server side
rendering component any more.
Obviously one can say now that everything used to be better in the past, but
there are reasons why it's done that way. CPU or OpenGL is just faster on a
local machine which is as of today the majority of systems. The exchange of
the image data is extremely fast on a local system as one can use the SHM
extension and just use a shared memory segment as the rendering target. So the
local usage increases while the remote capabilities go down. In the discussion
about Wayland one can see again and again that people complain about it, but
nobody "in charge" cares about it, because X was never meant to be used that
way.
[^] # Re: OSEF
Posté par xcomcmdr . En réponse au journal Le mythe de la transparence réseau. Évalué à 8.
Suffit de lire le journal que tu commentes.
Ou de voir cette vidéo (vieille) :
https://www.youtube.com/watch?v=RIctzAQOe44
"Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)