I've always thought that #Plan9 was designed around #9P.
Turns out, it was not. 9P was designed to serve the specific #implementation of Plan 9 that Pike had in mind.
#9P2000 was a smart evolution of 9P serving the same purpose.
The biggest evident is the Dev kernel structure, that requires walk.
The walk semantics in 9P2000 are suspiciously weird: on error it does not always reply with Rerror, but with Rwalk whenever a partial walk is possible.
This is needed to identify #mount points. /1
@Shamar that's kinda sad
@Shamar indeed. Makes the implementation a lot simpler and easier to reason about, doesn't it?