Writing your own operating system
John Gruber recently wrote a post on the lack of competition in the PC hardware industry. The concluding sentence seemed especially insightful. The article raises a great question; why are there only two choices when it comes to buying a computer?
[Yes, I realize Linux is technically a third option, but Linux is not really an option for most people—you have to be a computer person to do Linux. And if you doubt the veracity of that claim, go watch your parents trying use a Linux box (let alone set one up). There are hiccups, to put it midly. (Don’t get me wrong, I love Linux. But I am a computer person)]
Anyway, here’s John’s conclusion (emphasis mine):
Operating systems aren’t mere components like RAM or CPUs; they’re the single most important part of the computing experience. Other than Apple, there’s not a single PC maker that controls the most important aspect of its computers. Imagine how much better the industry would be if there were more than one computer maker trying to move the state of the art forward.
I’ll tell you why. Writing an operating system is a daunting task! No one wants to take that on.
What someone needs to do is make that task a little less daunting. Let me give it a try.
No one writes an operating system from scratch anymore. Not even Apple did that when they switched from Mac OS 9 to Mac OS X. They used the NeXTSTEP operating system which was first released in 1989. And NeXTSTEP itself was based on Unix. So we need something with which to start.
And Linux is a great place to start. The problem with Linux is not the operating system itself. That is very solid. The problem with Linux is GNOME, KDE or any other desktop environment currently available. They are ugly, bloated and generally kind of suck. They are trying to be everything to everyone. And while that is great for a picky user, it isn’t good for regular users.
No, what someone needs to do is write a new desktop environment for Linux.
[And then not call it Linux! Get your own name. Your own trademarks. Your own branding. Everyone knows Linux is for geeks. You can’t sell that. When Apple came out with Mac OS X, did they call it ‘Mac OS Unix’? Obviously not. No one cares about the technology inside. No one cares that your phone runs Andriod. All they care about is what it can do. Impress them there. Look at an iPhone ad. They show the actual interface. What the phone is actually capable of doing. Now that is a bold statement.]
Here is what they need to do with this desktop environment, they need to have one goal in mind: What are the most common tasks the most common users need to be able to do? Beat Apple at its own game. Simplify. In the Mac vs PC ads what are they always talking about? iLife and iWork. Your desktop environment doesn’t need to do everything! It needs to…
- Surf the web
- Manage music
- Manage photos
- Have a WYSIWYG document editor
- Manage videos
That’s it. Five applications.
Now I don’t mean to trivialize that task. Doing all that would be hard. Doing it well would be even harder. But setting your sights on writing a desktop environment that does only five things is a lot easier than setting your sights on writing a desktop environment that is going to match Mac OS X or Windows 7 feature for feature. Take over the world slowly, not in a day!
A couple more notes.
- Start small and gradually add more features. Do things right instead of doing things a lot. When the iPhone came out did it have everything? Did it have an API? Did it have cut and paste? Did it have exchange support? Having something good that doesn’t do much is better than having something that does everything but doesn’t do any of it enjoyably.
- Don’t plan on taking down the giants in one fell swoop. Don’t do what Roger McNamee did with the Palm Pre.
- Take risks. Try things out. Make things like this happen.