On Sun, Jan 24, 2021 at 4:25 PM Larry McVoy <lm@mcvoy.com> wrote:
On Sun, Jan 24, 2021 at 01:14:34PM -0800, Jon Steinhart wrote:
> So I never liked Apollos much.  What I was referring to was Apollo's claim
> that their token-ring network performed better for large numbers of nodes.
> And they were correct.  However, they didn't consider the eventually
> invention of switches that solved the problem.

The network performance of the cluster of Apollos we had was awful.
I don't know anything about how you set that up, never liked token rings,
maybe it is possible to set it up wrong, I dunno.  All I know was network
performance was awful on the Apollos.

Interestingly, descendents of the Apollo RPC system live on in windows, and if I recall correctly, got there via the DCE/RPC library, largely contributed by Apollo. Some good judges have said that, on technical merits, the RPC layer was superior to ONC RPC, though I never used an Apollo machine to really know.

I remember working at a startup in late 1999/early 2000 that had built some hokey network daemon to track people logged into their website; this thing crashed all the time, was slow, and generally not well implemented. It occurred to me that much of the complexity of dealing with it was in the level of abstraction for the network being too low: it ran on a Sun, so reimplemented it on top of ONC/RPC with XDR for architecture independence (most of the web servers were Intel machines). The new code was a sixth of the size of what I started with, it was simpler and easier to reason about, used less memory, was significantly faster, etc. The lesson is that the right abstractions matter.

I further remember when I got to Google and saw protobuf for the first time being a little confused. "Why didn't you just use XDR? It's an Internet standard and there's an RFC defining it, and it's implemented essentially everywhere. Why do something new?" The response was very much along the lines of, "ho ho; this is Google, kid. We know what we're doing." Apparently, the variable-length encoding for integers was considered particularly important at the time, an argument I never really bought into. *shrug*

It's a statistically valid sampling of one case :-)

I can totally believe that their workstations were slow and the software environment was a bummer.

The interesting thing about all of this graphics stuff (and to tie it back to TUHS) is that none of these things ever struck me as particularly Unix-y in nature. X in particular doesn't seem like it composes nicely with anything else, and in many ways, Unix from the perspective of a user is all about composition from smaller parts. But X is this big, monolithic thing that you kind of bolted on the side. For example, it certainly doesn't integrate with, say, the permissions model.

I wonder if these seeming impedance mismatches are because pretty much being all of this stuff invented as folks went along.

        - Dan C.