Hobby OS projects (by alaric)
The other main failure I see is in not realising what it takes to make an OS.
The most naive people, when they sit down to design an OS, design a user interface. As non-programmers, their experience of the OS is a user interface and a file manager. So they design a user interface, plus a vague list of features. They take the viewpoint that the user experience is the main result of an OS; things like reliability and efficiency are good enough in current OSes, so whatever they're doing can be copied and a better GUI put on top. However, they don't know just how much difference the design of an OS can make to the quality of the applications that run on top of it, nor do they realise how much variation there can be in the 'mental model' of a computer - the whole way applications, files, folders, and so on tie together. Also, by thinking that the user experience is the ultimate effect of an OS, they're underestimating the need for good server OSes in this networked age. They really want to be working on something like GNOME or KDE
On the other hand, people who've done an operating systems course at some point tend to design an OS by designing a kernel. They'll design a microkernel with userland file systems, so that their OS will be arbitrarily extensibly by user code. They speak highly of AmigaOS, QNX, and Plan 9. They download the Utah OSKit and build their kernel, then write a suite of system utilities, write a shell, then become daunted by what it'll take to write an application and get little further.
Some people, on the other hand, choose a model for a platform, and implement that. They get an open source implementation of their favourite programming environment - Lisp and FORTH being common choices - and glue it to the OSKit to make it boot and give it access to raw hardware resources. Within a week, they have their machine booting into a fully-featured software environment... with access to the disk as a raw series of blocks, no networking, and a basic console. Getting from that to a decent hardware interface and a suite of applications is, again, rather daunting.
All of these people are seeing just the parts of an OS that interest them, and assuming the rest will be easy.
I, however, know everything will be hard. And that everything is interesting. So I've designed a storage architecture that will bridge the gap between disk hardware and the application, including how users and applications will see the persistent state of the system, as well as a programming platform. I've even laid out some vague ideas for a user interface, although a user interface is not required for my planned initial niche - which is server-based stuff exposing services to other bits of software via a network, rather than to a human being.
Also, I've been sitting polishing my design, considering how it can be extended to deal with diverse applications and environments, since the early 1990s rather than prematurely starting to write it. As I bring the ideas together, lots of things have had to be redesigned, to various extents. I mainly plan to keep on doing so, until I have enough money from my other activities to hire about four programmers to help me implement it in reasonable time. Sure, it'll be open source, but I plan to try and make money off of it by selling packaged installs, support, and consultancy - not a lot of money, but hopefully enough to fund continued development. If it doesn't, then I'll still have had the satisfaction of seeing it working, which will be priceless.
By James, Thu 18th Dec 2008 @ 11:13 am
So whens the release? 😛 Wouldn't mind testing this thing with a couple of old forth apps I got kicking around on my drive. -Jim