FUSE allows developing filesystems in userspace by acting as a bridge between the Linux kernel and filesystem implementations running in userspace. It works by passing filesystem operation requests like open, read, write from the kernel to a FUSE library in userspace. The library then calls functions implemented by the filesystem to handle each operation. A simple example filesystem is presented that implements basic functions like getattr in memory without directories. Further examples add functionality like initializing metadata, deleting files, and adding a hierarchical directory structure. Options are discussed for multithreading and concurrency support when processing concurrent operation requests.