Two years and nine months ago, frustrated by mainstream desktop OSs, I decided that it was time for me to do something crazy and design one that satisfies my needs better. This is how, in the middle of January 2010, the OS|periment project was born. Now, today, as I prepare myself to review and update a lot of the project’s documentation as part of a move to a new project hosting service, I have decided to sit down a bit and think about what would be the motivations, today, for someone like me to work on a new desktop operating system.
Adapting to the modern computing landscape
Windows NT, Linux and Apple’s OS X all carry some amount of baggage from ancient computer eras where…
- x86 processors were 32-bit
- Computer screens shared a common pixel density of 96 ppi and started at the 12″, 4:3 form factor
- HIDs revolved around keyboard, mice, and game peripherals
- GUI was for newbies and real men used CLI
- Computer security systems were for those paranoid guys in the military
- Only almighty and fully trusted sysadmins were supposed to know how to administrate computers
- Computer networks were either absent or guaranteed to be available through expensive infrastructure
- CPU power increased very fast while RAM was expensive
- The computing market was immature and failure was largely tolerated in consumer products
In contrast, nowadays…
- Every x86 processor on the market is x86_64 compatible, using it in legacy operating modes wastes its resources
- There is a wide variety of screens around and counting in pixels propagates the “high-res screens are unreadable” myth
- Touchscreens and styluses are widespread
- CLI is for highly exotic tasks and situations where the GUI is broken
- Malware and security exploits are everywhere
- Computer users own their computers and administrate them themselves
- Everyone is connected to the internet, many using largely unreliable cellular connections
- CPU power stagnates and decreases through “mobile devices”, 4 GB of RAM is a commodity
- The computing market is mature, users expect perfect reliability and manual-free usability
Taking these changes into account require new approaches to operating system and software design down to very fundamental levels. Recent designs targeted at cellphones and tablet computers show that commercial OS designers tend to acknowledge this problem, but fail to realize how universal and important it is. Once again, they produce inflexible designs that will need to be rewritten when the next big thing in hardware comes out, and either leave desktop customers in the dust or hand them out hideous and barely usable backports of cellphone-oriented technology with the justification that “mobile devices are the future anyway”. In my opinion, this madness has to stop.
Proprietary operating systems become even harder to tweak
In the past, I have discusses how Windows and OS X displayed, in many ways, unattractive characteristics to build a better desktop environment on. Today, things are becoming worse on this front. Since Microsoft and Apple are too incompetent to build an operating system that anyone can safely administrate, they have taken the alternate option of becoming the new dictatorial sysadmin for the millions of personal computer users around the world.
Through unavoidable vendor software distribution channels and incremental tweak-ability lockdowns, computers running Windows and OS X are incrementally becoming as locked down as a cellphone from the Java 2 ME era. Addressing failing OS components through customization become increasingly unfeasible as the companies tighten their grip on their users, and make gigantic amounts of profit in the way by racketting software developer with ridiculously high distribution costs.
In PR documents, these companies will claim that they have a vision, build upon it, ensure that everyone shares it, and that if you don’t like it you are better off using something else. Well, let’s build that something else while we can still install that on our computers, shall we ?
Linux is still not a good base to build upon
What of the Linux ecosystem ? It has this huge developer community, it is moddable, and it provides the highest level of hardware support achievable outside of the Windows and OS X worlds. Surely, I could save myself a lot of effort by making myself more deeply familiar with Linux tech and reusing everything I can. Unfortunately, I think that there is a huge problem with using Linux tech to build a more modern desktop operating system, and that’s one of careless developer attitude.
I could trace the problem back to the origins of the Linux kernel and the Torvalds-Tanenbaum debate. But let’s look at how it is today instead. No one cares about such things as ABI stability in the kernel and user-space libraries, causing regular system updates to break third-party kernel modules and software unless they can be recompiled (and sometimes, even that is not enough, as can be seen with the recent update that broke the hard-earned Optimus support on my laptop’s Fedora distro). As soon as some major element of the Linux ecosystem stabilizes, developers invariably decide to “improve it” by massively dropping it and rewriting a successor from scratch all over again. GUI is still a largely nonstandard and unstable component, and the bulk of Linux software still solely uses CLI for such vital functionality as crash reporting. Complete software rewrites that are incompatible with their predecessors are presented as updates rather than as a new product. It is pretty much impossible to write software for Linux once, and distribute it to users of all distributions. And so on…
I use Linux because alternatives suck either as much or more. But from the distant look of the end user, it seems like developers in the Linux world pay no attention to such vital concerns as stability, reliability, usability by unexperienced users, user feedback, or the needs of commercial developers who DO NOT want to join the kernel team just to write a stupid hardware driver. Making something reliable and enjoyable out of the generally used Linux stack would not just require carefully picking the right components, but basically forking everything from the kernel to the GUI libraries to ensure that the constant upstream breakages do not propagate to users. That seems, taken together, even more difficult than starting from scratch and taking a lot of care not to fall into the same situation, if you are not extremely knowledgeable about Linux tech to start with, I applaud the Android team for having the courage to do it but I wouldn’t want to be in their place.
What of more minor OS projects ?
Overall, the advantages gained from joining or forking an existing project must be weaker than the pain it involves. This generally means that I have to find a project with similar goals as mine. So far, I have yet to find it.
- Haiku, as an example, is technologically quite interesting, but currently stuck in the past by trying to revive the dead and buried BeOS operating system. Attempts at criticizing the design of that operating system, as an example, will be often met with hostility from its developers, who seemingly never truly accepted its failure.
- BSDs essentially follow the trail of Linux on the desktop front as their developers have apparently neither the creativity nor the courage to come up with something unique and interesting in this area, often preferring to work on functionality for paranoid server sysadmins instead.
- MenuetOS has lots of interesting features, but its ASM codebase identifies it as a hobby project without any pretention of becoming something more later. Not that there’s anything wrong with that, it simply doesn’t meet my goals.
- Syllabe is now essentially the pet project of “Kaj-de-Vos”, who has very specific ideas of where he wants to go and will react with extreme hostility to opposing propositions. It is developped in almost complete secrete, the only news coming from it being related to the support of a niche programming language, REBOL, and its derivatives.
- The Genode Operating System Framework is a very interesting project from a technological point of view. From what I can gather, it attempts to define a standard OS architecture and a standard set of abstractions that can plug into many existing OS components (both at the kernel and user-space level). Kind of like UNIX set the standard low-level abstractions for many operating systems to this day. However, for now, the project doesn’t seem to have clearly stated goals, and it is unclear what this architecture they define is to be used for, how it is superior to alternatives, and so on.
If there are no mistakes in this article (please report any in the comments), it seems to me that as of today, attempting to design a new operating system that addresses modern personal computing needs is still relevant. It also appears that although inspiration can obviously be taken from the design of other open-source operating systems, none is currently suitable as a base for this project. Thus, I still have work to do on my spare time… And will hurry up, once I’m done catching up with all those things that have happen in my online life since I tried to send my computer for repairs in July.