Say Hello to MUTS!
Last time, I talked about how I gave myself the ultimate software engineering challenge: building my own operating system! It took a while to let the decision sink in.
A couple of weeks actually, but that’s okay. Building your own OS isn’t a choice to be made lightly. If, after a month, you’re still excited about the idea, then you’re probably good to go! It will take loads of my time, it will test my patience to the extremes and I’ll definitely make tons of mistakes. However, in the end, it’ll all be worth it.
So, what is the next thing to do when you’ve decided you’re going to build your own system? You’re going to think of a name! Your awesome new OS needs a name that will spread widely over the internet!
Alright, let me talk you out of that. Unfortunately, the chances of your operating system being widely used is slim. Furthermore, it’s of no use to decide right now what the name will be, since building an OS will take a long time. By the time you’re able to release it, your name might already have been taken. So, instead, make up a development name. Microsoft and Apple have used them too!
Did you know that the code name for Windows 10 during development was Redstone?
Make up a name for yourself! In my case, I call my project MUTS. It’s a Dutch word for a woolen hat but my boyfriend also uses it to call me over. MUTS is also an abbreviation for “My Ultimate Training System”, since I’ll be learning a lot during this project!
Now, you’ve finally made up a name for you OS. Maybe a code name like I have, maybe another one. What is the next step? Well, it is very useful to think about the goals you want to achieve by creating your own operating system but also why you want to build it? What is your motivation behind it.
My motivation is quite simple: I love a big challenge. Something where I’ll probably bite off more than I can chew but I like to prove others wrong with it by still completing the challenge. I’ve already received multiple skeptical looks from my friends. A few support me, though, so that boosts the motivation even more!
As for my goals, they are for now quite simple.
- I just want to learn a ton, whether it being languages, concepts, architectures, design, you name it.
- I want to create a functional operating system.
- My system will be better than Windows!
The former two are quite realistic and reachable within this project. The latter, however, is of course quite unrealistic. For now. But one can always dream and have big goals! Maybe one day, I’ll be able to achieve mine.
Naturally, as the project proceeds, more goals will be added to the project because I’ll be gaining more and more knowledge about Assembly, C, and operating systems in general. These goals will most likely be more specified and targeted to one part of the operating system.
Still, you cannot dive into a project of this magnitude like a headless chicken. You need a plan! Thus, I made myself a little plan for approach for my first objective which I call: just sponge. Soaking in as much information as I can to start building this operating system is mandatory. With my current knowledge, I won’t get anywhere.
So, I’ve divided my first plan of approach in two sections:
- Gaining Programming Knowledge & Practice
- Research OS Design & Development
Just researching does get boring after a while. So, instead, I want to make sure that I can balance it with something fun (and frustrating). Since I have to learn to program with Assembly and C because those are common languages for developing operating systems.
For the programming, I want to start small. Probably something among this steps:
- Simple ‘Hello World’ Assembly programs
- Build a Simple Bootloader
- Build a ‘Hello World’ Kernel
- Dive further into Assembly
- Simple ‘Hello World’ C programs
- Build Small Simple C programs
- Dive further into C
- Probably Follow Tutorials and Such
- Read a Ton!
As for the research:
- Define Main and SubQuestions
- Gain a Long List of Books About Everything
- Research, research, and oh … more research!
It is quite a list of tasks but I have a lot of time to complete the tasks. Building your own operating system does take a long time after all. This plan helps me to keep track of my progress and remind me why I’ve decided to torture myself with this challenge. But I shall complete it nonetheless!
At some point in time…