The 9P protocol truly is a beautiful work of engineering. There's actually another informal extension called 9P2000.e which is used by Erlang on Xen that adds session keys and a few new macro-operations (read whole file; overwrite contents) composed from lower level T/Rmsgs, but with ability to gracefully fall back to 9P2000. Linux v9fs has its own 9P2000.L in addition to the standard: https://github.com/chaos/diod/blob/master/protocol.md
Either way, it's much more elegant and portable than something like FUSE.
FUSE is an informally specified one-stop library that explicitly targets the Linux VFS, so it might be considered more convenient for whatever reason. There's also a general lack of knowledge about Plan 9 and Inferno on anything beyond a superficial level, though this might be improving.
9P is a small generic protocol that is often independently implemented because of its simplicity, so there are many heterogenous libraries for it.
Which required significant kernel additions in the case of the BSDs, and is a third-party kext for OS X.
In contrast, 9P is just a byte stream protocol that ranges from weekend project implementations in ~1000 LoC (yet still perfectly usable) to full strength client-server libraries. It's much more versatile and can be done entirely in userspace without special kernel cooperation beyond a basic POSIX runtime.
TLS tunneling is common. v9fs and diod give SSH port forwarding as an option. It's very generic, so the options are plentiful. 9P is formally transport-agnostic, from what I recall. Plan 9 natively preferred IL over TCP for a while before officially deprecating it around 2003.
It's just SSL; you can get more information at http://plan9.bell-labs.com/sys/doc/auth.html. There is also factotum, which serves a purpose somewhere between ssh-agent and an OS X-style Keychain.
I've been reading about Plan9 for a while. While I love the elegance of everything being a file addressable through the 9P protocol, I wonder about the feasibility of piping a "framebuffer" or other heavy process. Does someone know how the Plan9 holds, in this area, agains Unix in performance?
Back when I was excited about Plan9, I saw Tom Duff at Siggraph and I asked him if there was anyone present who would be interested in talking about the new Plan 9 window system, rio (which provides a compositing algebra-based raster graphics layer). He just said "no", basically, which led me to conclude that graphics on Plan 9 was not flourishing, even though the rio model is interesting.
Performance over the network can't really be much worse than X11 for raster-heavy applications. I suggest you experiment with Plan 9/rio in a VM if you are really curious.
I should add that the model of an application that is split across the network (e.g. Rob Pike's Sam editor) offers ways to improve that. I can't speak to the efficiency losses of locally using pipes rather than some kind of shared memory, DMA, or direct graphics access, but maybe inferno has some multimedia-oriented fixes for that, I don't remember.
This looks great. Can someone recommend more books / papers / blogs / tutorials on writing file systems? I want to deep dive into it during Thanksgiving and want to create toy filesystems to play around with.
The book "Introduction to Operating Systems Abstractions using Plan 9 from Bell Labs" (also known informally as 9.intro) by Francisco Ballesteros has some well-written content that should be suitable even for beginners.
Ideas on how to present resources as file systems can be found in the original Plan 9 and Inferno papers.
In addition, Charles Forsyth's "The Ubiquitous File Server in Plan 9" might also prove useful.
Either way, it's much more elegant and portable than something like FUSE.