On Fri, Mar 24, 2017 at 4:08 PM, Andy Kosela <andy.kosela@gmail.com> wrote:
[snip]
Dan, that was an excellent post.

Thanks! I thought it was rather too long/wordy, but I lacked the time to make it shorter.

I always admired the elegance and simplicity of Plan 9 model which indeed seem to be more UNIX like than todays BSDs and Linux world.

The question though remains -- why it has not been more successfull?  The adoption of Plan 9 in the real world is practically zero nowadays and even its creators like Rob Pike moved on to concentrate on other things, like the golang.

I think two big reasons and one little one.

1. It wasn't backwards compatible with the rest of the world and forced you to jump headlong into embracing a new toolset. That is, there was no particularly elegant way to move gradually to Plan 9: you had to adopt it all from day one or not at all. That was a bridge too far for most. (Yeah, there were some shims, but it was all rather hacky.)

2. Relatedly, it wasn't enough of an improvement over its predecessor to pull people into its orbit. Are acme or sam really all that much better than vi or emacs? Wait, don't answer that...but the reality is that people didn't care enough whether they were or not. The "everything is a file(system)" idea is pretty cool, but we've already had tools that worked then and work now. Ultimately, few people care how elegant the abstractions are or how well the kernel is implemented.

And the minor issue: The implementation. Plan 9 was amazing for when it was written, but now? Not so much.

I work on two related kernels: one that is directly descended from Plan 9 (Harvey, for those interested) and one that's borrowed a lot of the code (Akaros) and in both we've found major, sometimes decades old bugs. There are no tests, and there are subtle race conditions or rarely tickled bugs lurking in odd places. Since the system is used so little, these don't really get shaken out the way they do in Linux (or to a lesser extent the BSDs or commercial Unixes). In short, some code is better than other code and while I'd argue that the median quality of the implementation is probably higher than that of Linux or *BSD in terms of elegance and understandability, it's not much higher and it's certainly buggier.

And the big implementation issue is lack of hardware support. I stood up two plan 9 networks at work for Akaros development and we ran into major driver issues with the ethernets that took a week or two to sort out. On the other hand, Linux just worked.

Eventually, one of those networks got replaced with Linux and the other is probably headed that way. In fairness, this has to do with the fact that no one besides Ron and I was interested in using them or learning how they work: people *want* Linux and the idea that there's this neat system out there for them to explore and learn about the cool concepts it introduced just isn't a draw. I gave a presentation on Plan 9 concepts to the Akaros team a year and a half or so ago and a well-known figure in the Linux community who working with us at the time had only to say that, "the user interface looks like it's from 1991." None of the rest didn't interest him at all: the CPU command usually kind of blows people's minds, but after I went through the innards of it the response was, "why not just use SSH?" I've had engineers ask me why Plan 9 used venti and didn't "just use git" (git hadn't been invented yet). It's somewhat lamentable, but it's also reality.

        - Dan C.