On Storage Engines
smalldatum.blogspot.com
smalldatum.blogspot.com
Plan 9 had a beautiful and simple API for a network filesystem but real filesystem APIs (like FUSE) are complicated as hell because memory allocation matters.
Similar things turn up with storage engines. If performance, reliability and other "non-functional requirements" aren't addressed you can make something simple, but ignoring those things makes your system likely to be "non-functional" in the end.
Fuse and, indeed 9P2000.u are both indeed complicated as hell, but appear to require it as their underlying FS is posix^Wlinux-based and thus a higgledy-piggledy API nightmare.