I realized after writing that I was being slightly unfair since one valid use case that DOES work correctly is something like:
ssh -X <some host> <command that uses X>
This is occasionally handy, although the best use case I can think of is running a browser on some internet-facing machine so as to temporarily change your IP address, and this use case isn't exactly bulletproof since at least google chrome will look for a running instance and hand over to it (despite that instance having a different DISPLAY= setting). Nevertheless my point stands which is that IMO a programmatic API (either through .so or .dll linkage, or through ioctls or dedicated syscalls) should be the first resort and anything else fancy such as remoting, domain specific languages, /proc or fuse type interfaces, whatever, should be done through extra layers as appropriate. You shouldn't HAVE to use them.
cheers, Nick

On Mar 15, 2017 9:15 PM, "Tim Bradshaw" <tfb@tfeb.org> wrote:
On 15 Mar 2017, at 01:13, Nick Downing <downing.nick@gmail.com> wrote:
>
> But the difficulty with X Windows is that the remoting layer is always there, even though it is almost completely redundant today.

It's redundant if you don't ever use machines which you aren't physically sitting next to and want to run any kind of graphical tool run on them.  I do that all the time.

--tim