Quite a number of people who are into OS development hang out around
http://osdev.org/ and similar places.
I quote, from that site:
> Why develop an OS?
> There are various reasons why people choose to develop an operating system. Each individual developer may have their own, but some reasons are common among some (if not most) developers:
> * Having complete control over the machine. When developing an application or other userspace program, the developer has to take the code written by others into consideration: the operating system, the libraries, other programs, etc. It is a powerful feeling for the only code to be running on a machine to be your own.
> * Research. Quite a few operating system projects are started as homework or research projects. While starting an operating system as a homework assignment in a pre-tertiary or first-year environment is generally considered a bad idea (due to short deadlines), a long-term project is quite fine. Research projects are usually undertaken to improve on existing operating systems. A common beginner mistake, however, is to underestimate the time needed to write an operating system from scratch.
> * To replace the currently available operating systems. Maybe they don't have a particular feature that the developer wants. Maybe they just generally suck (Linux is bloated, Windows is unstable, etc). This may be for profit; although any returns are likely to be a long time away.
> * Because it's fun. Low level programming is a fun and exciting task, because you have to do everything. This may seem more difficult (it is, don't worry) but by the same reasons more fun. You know how everything works, how it all fits, and the inner-most workings of your program.
If nothing else, building your own operating system teaches you a lot about the internals of the magic suite of programs that run on your machine and makes them less mystical. Nothing compares to writing your own syscall or scheduler, and I certainly have learnt far more from my experiments than I would have if I had simply read Linux source code.