3 ms·
I'm saying that "a local protocol that can function as a networked protocol" isn't always an ideal design decision. We should consider designs that allow differ
by Jasper_ 6y ago
I'm saying that "a local protocol that can function as a networked protocol" isn't always an ideal design decision. We should consider designs that allow different local and remote protocols, and consider the tradeoffs in each space separately.
> Yes, you can use a network protocol to chat between local processes as well as between remote processes. Desirable? It's impossible to avoid...
Using a network protocol to chat between local processes comes with a lot of drawbacks. UNIX local sockets support features like datagrams and FD passing, and of course you can communicate resources in a shared namespace (e.g. a filesystem paths). So limiting yourself to the lowest common denominator of a TCP socket restrains the kinds of tools your protocol can make use of.
> X isn't a remote procedure call system.
It has requests, and it has replies. Xlib will block on a reply by default. That's the building blocks of a classic RPC system. It has all the messiness of distributed systems, but none of the innovations from the past 40 years. Error handling is particularly gnarly in Xlib; since all resources are global, another client can stomp on or delete your window behind your back. You can't be sure of anything before you try, and get an error back. In theory, you can make a lot of requests without blocking, but that's a super annoying process and isn't easy to do in practice; lots of information requires getting a reply back from the server.
> which has nothing to do with X other than being descended from one of the low-bandwidth X extensions
It has a lot to do with X11! It's championed as an example of the success of X11's "network transparency", but instead is very much a custom design suited for the network.
- wnoise 6y ago> Xlib will block on a reply by default > Error handling is particularly gnarly in Xlib; I don't think anyone strongly objects to the consensus that Xlib is a bad binding of the X protocol for these reasons. But libxcb has been usable for quite some time by now.
- kjs3 6y agoI keep reading what you write, and also was there (I used X10 at one point, and built the Athena platform from 9-track tape). I dunno...the whole screed strikes me as bizarre. You say things like "Xlib will block" and "error handling is particularly gnarly in Xlib", when Xlib is only one possible implementation of the X protocol. There are other possibilities like XCB. I have no idea if it has the same issues as Xlib, but the inability to separate protocol from implementation speaks to a specific bias. Further, you obsess over the use of the term "network transparency" like a previous generation used the term "commie", even cite up-thread "documentation" where the term isn't used. But no less that Jim Gettys used it to describe X11: https://static.usenix.org/event/usenix02/tech/freenix/full_papers/gettys/gettys_html/ https://static.usenix.org/event/usenix02/tech/freenix/full_p.... You might find it inappropriate, but it doesn't seem to be confounding vernacular to most other commenters. I dunno...I think we've gone beyond butthurt because people didn't agree with you on the direction a project should go, to some obsession that has nothing to do with the technology.