Right after Y2K I decided to resurrect a project I had started in the late '70s to write an operating system. I started a project called EasyOS (1) on SourceForge to develop an OS based upon the best parts of Linux, FreeBSD, OpenBSD, etc. After toying around with that project for a while I decided that part of the problem was that all existing operating systems are basically the same as the operating systems I worked with in the 1970s. The only significant difference is that they had a GUI pasted on top of them. For example: data ends up being stored in files.
I finally decided that I needed to stop trying to base it upon the same principals as existing operating systems and rethink all of the concepts about how an OS works. I started another project, New World OS on SourceForge. And in December 2004, I wrote an article for OS News about some of my ideas.
When it came time to start developing the system, I debated whether I should really start completely from scratch and develop it from the hardware interface level and work my way up or if I should start by testing some of my ideas on an existing system. If I started on top of an existing system I could see if my ideas were feasible, before dumping years worth of time into them just to discover that I had overlooked some fundamental flaw. I decided it made the most sense to test out some ideas on top of another OS first.
One of my main ideas was to store objects directly on the hard drive, NOT in files. But since I was running on top of Linux, I started out storing the objects in files. I started out storing each object in a separate file, but that proved to be pretty messy. I then tried storing all of the objects in a "sparse" file. Oddly, that ended up consuming tons of disk space. I don't remember the exact ratio, but it was on the order of kilobytes to store each 256 byte object. I finally decided that since what I really wanted to do was store objects directly on the hard drive, I should just store them on the hard drive. I changed it to read and write the objects directly to an entire hard drive (like /dev/hdb) or a disk partition (like /dev/hda7). I later discovered that really only works on Linux. I later changed the code so that it will work with a file again so that it can be used on other operating systems (2).
Here is where the great irony of the project came in. One of the fundamental ideas, if not THE fundamental idea, I had was to eliminate storing data in files. I wanted to store data in a format more natural to the computer, so that a program did not have to read and convert it's data from a file, do its thing, and then convert the data back to a file. I wanted the program to store it's data in objects and then only if the data had to be exchanged with another device convert it to a file. I don't remember now exactly why I started this, but I decided I could have a generic "file" object and store some of my files in the system until I got it to the point of storing the data in objects. So I started importing my important files in the system. I now have over 3,000 files stored, and information on over 10,000 files and what backup discs they are stored on, in my system.
Public objects...
Everything stored in one place. Where did it come from?
At some point I decided that it would suffice to just run my project on top of another operating system. That way I could start using it now instead of waiting for what could be years and years. So I started yet another project, Objectify, on SourceForge that I want to move the current code that runs on top of an existing operating system into. However, I have not yet completed the move so the CVS repository and the released packages are still under the New World OS project. The only thing I have in the Objectify project so far are the Feature Requests.