Abhishek Parolkar's Old Blog

"The future is not to predict it is to be designed..." Let me imagine the best design for it.

Sunday, January 27, 2008

sneOS 1.1 - The Rails Deployment OS

One of my good friend & mentor, Abhijit, pointed me to this , which was so thought provoking that I went into serious thinking on my philosophy of open source software and my contributions to community. I have been little passive from last couple of months in terms of my contributions to my own passion because I wasnt getting much time to build on my ideas, and I wasnt releasing anything incomplete because I didnt want to . But after reading the article by Josef Assad , I decided to share my ideas and mistakes with people and also let people help me build a software which solves real hard engineering problem. Most importantly the solution that evolves from community's effort without letting economics govern it.

I am a Ruby Coder and a RoR Enthusiast. From couple of months everybody has been questioning performance and scalability of RubyOnRails and everybody has been trying to play hard with ruby interpreter , threads, memory mgmt of ruby etc. One day I questioned myself that, when everybody (including Yukihiro Matsumoto & David Heinemeier Hansson) are working on the core of ruby and RoR performance , What can I do to help RoR continue spreading its glory. Few months back when I baught a VPS , I spent nights to configure for it to be the perfect RoR environment. This gave me an idea to build an RoR Environment. Hence I started sneOS , Initially goal was totally different , It was to build a minimal OS distribution that can run ruby and I was also trying to build a shared ruby interpreter (ruby as /dev/ruby or call it ruby kernel module). This didnt happen much due to time constraints but I released the first version of sneOS (24 MB) which had bare minimum OS components and ruby interpreter. Over the period of entire year I have (along with friends of mine) always faced problems in setting up RoR deployment servers , first, you need OS (Deb/RH/CentOS) then you need heavy (bulky) libraries and ruby & gems , then you need compiler tool chain so that gems installations doesn't break in extconf.rb. then you get Rails , then you need to configure mongrel cluster , then you install tools to do performance engineering on your cluster... This just goes on... and all of us spend alot of time figuring out PATH issues, native library version incompatibility issues etc. Capistrano & things like Ruby Works do help but doesnt ease the effort. To use them we still need the base OS. Well, RoR has high dependency on system environment because Ruby extensions use native libraries (classic example is RMagick ) and any inconsistency in system environment breaks things in RoR. So why not separate RoR environment from System Environment?. Can life be simpler if we are given a toolset which asks , Which Gems? Which Version of Ruby and Rails? and builds a bare minimum OS distribution (with minimal footprint). This footprint can be dumped on to your VPS or real server and your server no more sucks GBs of space just for OS distribution on it. This is very useful for small applications with small resources and adds a great ease for extremely large clustered systems.
Here comes sneOS 1.1 with ambitions to meet above goals. I am thankful to the team at Heurion Consulting Pvt Ltd which is bringing sneOS up again. It is available for download here. This unstable version is a 70Mb linux distribution which runs entirely in the RAM reducing all disk access time for OS to do its house keeping. This is a small yet a great value contribution from Heurion Consulting. This is not yet in stage where it can be deployed onto servers , You will still need to patch things to get your rails app up (though it has rails 2.0). You can play around with it and reply back with your feedbacks, my current focus is to get minimum footprint OS for rails environment. I am aggressively looking for people who can support this initiative. So if you want to take charge just modify the ramdisk image and reduce its size to as low as possible which ofcourse shouldnt break anything.