It's recently been a year since I started working on my pet OS project, and I often end up looking backwards at what I have done, wondering what made things difficult in the beginning. One of my conclusions is that while there's a lot of documentation on OS development from a technical point of view, more should be written about the project management aspect of it. Namely, how to go from a blurry "I want to code an OS" vision to either a precise vision of what you want to achieve, or the decision to stop following this path before you hit a wall. This article series aims at putting those interested in hobby OS development on the right track, while keeping this aspect of things in mind.

As for the topic at hand (coding my own OS): I have always wanted to start coding an OS of my own, but I am really bad at actually starting something. I have no delusions of it ever reaching more than 1 user or something like that, the only reason why I'd want to code an OS of my own is simply to learn. Nothing beats learning kernel internals, memory handling and all that like actually coding it all yourself from scratch!

Actually, it was the same with me for a long time. My OS is my first successful long-time personal project so far, and I have two failed attempts on my back (main reason for their failure will be explained in the beginning of article #2 ).