Building a Filesystem to Actually Understand One
I’ve spent years thinking I know about filesystems. What an inode is. Or the superblock. But there’s a difference between knowing something theoretically and understanding it through your fingers - the kind of understanding that comes from making something crash, fixing it, and seeing exactly why it works now.
Most people don’t learn for the sheer pleasure of learning anymore. I say this without judgment, but I notice it. The pragmatic view dominates: learn what you need for the next sprint, the next promotion, the next job change. But I have gaps in knowledge and I’m still hungry to fill them, even when there’s no career ROI. Filesystems were one of those gaps - something I could describe on paper but had never actually built.
So, I decided to build one. In Python. From scratch.
Why Another Toy Filesystem?
Every operating systems course teaches filesystems through textbooks. You study the theory: inodes store metadata, directory entries map names to inodes, bitmaps track free space. You might trace through ext4 or NTFS diagrams. But do you ever implement one yourself, watching the raw bytes take shape on disk?
I wanted that experience. Not to build something production-ready - that would be insane - but to make the abstract concepts concrete. So I’m building SimpleFS with intentional simplifications: 4KB maximum file size, no permissions, no symbolic links, an implementation small enough to understand completely in an evening. It’s a proof of concept designed purely for learning. Read more

