Wednesday, August 18, 2010

Birth of a new Distro, Part 2: The experiment, Jet-Fu

As stated in a previous post, dependencies are getting out of hand.  I like to try out different Linux distributions in Virtualbox.  Even some of the so called 'lite' versions seem to take up over 1GB of hard drive space.  Some distributions try to stay ultra lean, like Puppy, DSL, Tinycore, etc.  But they all seem to be so minimalistic that only root user is available, or only a finite number of packages can be installed.  But, as in the case of DSL, are just outdated.

(As a side note, the current version of Puppy, 5.x, is now based on Ubuntu.  I have a Pupplet based on the 4.x series installed on an old Dell laptop with a 166mhz Pentium processor.  It runs terrific.  But the latest Puppy seems to carry the "extra's" brought over from Ubuntu.  It seems slow and sluggish.  In my  experience, I would not attempt to used the latest Puppy version on hardware older than a Pentium 3.  And, don't take that statement as a bash against Ubuntu.  I have Ubuntu 10.04 installed on my home and work PCs.  Ok, now back to the topic)

While testing Tinycore, I found even it is not immune from the bite of Dependency Overload (DO, see this post: http://wsrogers.blogspot.com/2010/07/birth-of-new-linux-distro-part-1.html ).  I figured Tinycore would make for a great base for a minimalist server.  A simple LAMP server should not need all the bloat.  While installing MySQL, one of the listed dependencies was PHP5.  Now, installing PHP 5 was on my todo list, but should not be a requirement to install MySQL.  It is not listed as a dependency on the MySQL site, nor on many other distributions.  This was 'bad' number 2.  The first 'bad' was the way Tinycore mounts new packages.  Because of it's method, only a limited number of packages could ever be installed.

A big plus is the user is able to create other users besides root.  Another plus, the whole release is around 10MB.  I recommend Tinycore for anyone looking for a small distribution to use as a base.  The size includes a window manager.  For about 6MB, Tinycore's team also offer Microcore, an X-less version.  Because this blog is not a review of Tiny/Microcore, I will not write an elaborate review, but after trying it out, I am impressed and will give it 3.5 stars out of 5.  Since my need is based on over use of dependencies, I had to remove one star, the other half is for it's rough edges.  But it's fairly new and I see that it's being actively developed.  But this rating is because the distribution failed to fit my purpose, only.

Now that I have described DO, I should describe my 'want' in a minimalistic distribution.  My experience over the course of 14 years as a now and again Linux/BSD user, and the last 5 years as an avid user, has caused me to develop the idea that the OS needs to be an embedded environment on which a user may run applications.  No one else needs to agree with me, I don't ask that of the world.  The belief is mine.  Therefore, I desire a minimalistic distribution (mini-distro) that can have multiple users, besides root.  The mini-distro should have a recent kernel with recent system applications.  I'm not looking for speed as much as memory usage.  (Here, I refer to memory as described by kernel theory, which includes all cpu cache, system RAM, and a non-volatile storage device).  I would prefer the core system stay out of the way of the users applications.  The minimalistic nature of such a system will be speedy by its nature. 

So, I would like to build my own minimalist OS.  The current name is, in the tradition of many open source projects, an acronym, Jet-Fu, Just Enough To FUnction.  It will be the base for some projects I would like to use myself.  The first is a minimalist anti-virus live image for cleaning infected systems, Jet-Fu:AV.  I won't get on my soapbox to point fingers, we are aware.

This project would be either optical disk, such as CD or DVD (such a waste of space, but they're cheap), usb, or just a tiny partition on the hard drive.  Jet-Fu: AV will boot up, hunt for viri, and clean them in some way.  The advantage is that the viri would not have a chance to put themselves in system RAM and escape detection.  The project is not fully described at this time, so automation, menu driven, or gui have not been decided.

Another project is for a LAMP server.  Although Apache is not necessarily the chosen server, lighter ones exist.  The database doesn't necessarily have to be MySQL.  I have been looking at some Document-Oriented Databases, such as MongoDB or CouchDB (google is our friend, use it).  The backend isn't necessarily going to be PHP.  While I do like PHP, I also like Python.  Not to mention some Java/Tomcat action could be possible.  Or even different flavors of this server version.  Only time will tell.  (My time that I'm willing and able to contribute to these projects)

In another blog, I will describe my new infatuation for YAML and JSON.  I will also write about how they will be tied in with my love for Python and how all three will be the basis for my experimental Jet-Fu project.

Also, some may question why I am using GNU/Linux as the base for Jet-Fu and not some other operating system (OS), such as FreeBSD, OpenBSD, NetBSD, Darwin, OpenDarwin, OpenSolaris, or some other OS.  Well, let me say, they are not ruled out, and I'm actively investigating their use.  Remember, Jet-Fu is just enough.  The name doesn't tie it to a specific OS or kernel. (Yes, XNU, I'm looking at you).  Stay tuned for Part 3, coming at a time I feel like writing.