New World OS/Objectify Overview

History

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.

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.

Public Objects

One of the things that occurred to me while developing this system is that there is a lot of information that can be shared by everyone.   An existing example is the FreeDB.org where the data only has to be entered into the system one time and then everybody can share it.   I want to do the same thing, but on a much larger scale and have it built into the system.   Instead of just having the album title, track, song title, and artist.   It will have more information about all of that, plus the song's composer, who is in the band, when the album was released, information on the people in the band, and so on.

Let's take an example, you store an Ogg Vorbis file of The Beatles While My Guitar Gently Weeps in the system.   The system will link that file to the public information about that file, so that you can directly access the public information about the song; who wrote it, different versions of the song, who was in The Beatles, when George Harrison, John Lennon, Paul McCartney, Richard Starkey were born, if and when they died, etc.

put web site links above!!!!!

Unfortunately, that part of the system is still vaporware.   Right now the public objects are contained in a file that is downloaded from SourceForge and I am the only one who can add information to them.   My plan is eventually have the public objects be accessed from a server, so that you always have the most up-to-date information and any registered users can input data.

I also want the Public Objects to accessable via a web interface.   I have set up a demo web site at http://www.worldwide-database.org, but the only thing that can currently be displayed is the data on the Ubuntu .iso files that I have entered.   Another piece of public information I wanted to store is the checksums of downloadable files.   I decided to input the Ubuntu .iso files as an example, thinking there were maybe 20 or 30 files and it would take me a few days.   I had no idea there were over 300 of them (I started before 8.04 was released) and it took me weeks to input them all.   The next thing I want to do is expose some of the other information that is stored in the Public Objects.   (And if anyone would like to volunteer to input the information on other .iso files, say other Linux distros like CentOS or FreeBSD, etc., please contact me.) Put a screen shot of verifying files with --public talk about wiring into wget!

The Power of Free Software

What Can It Do Now?

In The Near Future

The environmental thing (too many discs)

Everything stored in one place. Where did it come from?

Notes:

  1. In early 2005 someone else wanted to use the EasyOS moniker on SourceForge.   Since I was concentrating on New World OS by that time, I let them take it over.   So the EasyOS project that is now on SourceForge has no relation to my project.
  2. I have tested the code on FreeBSD, OpenBSD, and Cygwin.   I have started trying to get it to work on Mac OS X but there were a couple of functions that are missing on OS X and I haven't had time to work all of that out yet.