"Everything is a file" is a nice idea not taken far enough. The execution is full of frustrating omissions and holes at the edges, e.g.:
- unless you are using Plan 9 or gpm, reading mouse events is almost certainly going to be a lot more involved than opening /dev/mouse
- you can't portably use select() to wait on pthread conditions
- lots of useful things (like POSIX shared memory objects) are file descriptors, but aren't filesystem namespaced
Sometimes I wonder what the world would look like if Plan 9 had won.