04.18.08
What is Monarc, and Why?
Monarc is a kernel and operating system that I have been developing for the past few years. It grew from an earlier project, the Monarc PowerPC emulator, which runs on top of an embedded kernel I wrote specifically for the task. I liked the name enough that I decided to hoist it over to my efforts in OS development, along with some of the original code.
Part of my motivation for starting this project is to push my own limits. I have been in professional software engineering for about eight years and have been writing code for over sixteen years. Most of my employment has been in mid-to-high level development and at this point it is rarely challenging or compelling. However, I have had opportunities to write low level software and that has remained the most interesting and challenging space for me.
Another part of my motivation is to produce a clean, efficient, yet flexible operating system, and to do it my way. The prevalent model in most open source operating systems is some variation of the UNIX model. While I don’t have anything against the model itself, I do feel that it is perhaps showing its age recently. A lot of good ideas can be seen in the old UNIX ways, but I don’t want to create yet another UNIX clone. Instead, I want to take a different road, designing according to the way I see computing now, and the way I expect it will go in the future. If my insights and assumptions are correct, and of course if my code is well written, then these goals should be achieved–we will see how it turns out.
But why not just contribute to an existing project? There are several well established and recognized operating systems available today and a good deal of less well known operating systems also. However, it seems to me that it is more interesting and rewarding to be involved in this kind of development from the early stages. Once a software project grows to a certain size, and especially when there are already well established leaders, it becomes hard to find parts to work on that don’t overly involve fixing other’s design flaws and bugs or filling in the “boring” parts. Of course all of that needs to be done; I just don’t want to spend most of my time there right now.
Overall, I just want to have fun. Maybe something useful will come of this project and maybe not. I am already having a wonderful time working on it, and that is worth the effort. But I also hope you will find something here that you like, whether it be useful, entertaining, or informative. Feel free to share your thoughts on this project and this blog, I appreciate the feedback.
- Corey