MicroISV: Deciding on a platform (aka Ruby on Rails) (aka Rapid Application Development for people who know how to program)

by javery on August 25, 2005

One of the first steps in any sort of application development is usually deciding on what platform to use for the application. This usually includes deciding on a development platform (.NET, J2EE, LAMP, etc) and then deciding back-end database (SQL, Oracle, etc) and finally what kind of operating system your application will run on (2k3, XP, Linux, etc). (This process differs greatly depending on whether you are creating a client vs. server application)
 
From the beginning I thought it was a forgone conclusion that I would use ASP.NET, SQL Server, and Win 2k3 for my upcoming product as these are my “bread and butter”… but then I ran across a couple articles on Ruby on Rails and was instantly intrigued. Ruby is an object oriented language that alot of industry heavy weights love (Fowler, etc) and Rails is a web development framework that allows you to quickly and easily create web applications using Ruby.
 
As with most things of this nature I was pretty skeptical. Ruby sounds very cool, but I wasn’t so sure about Rails… so I did a little research. I read through Rolling with Ruby on Rails Pt.1 and Pt.2 and browsed around on the official web-site (watch the movie) for awhile. The intros and demos are very impressive, the best way to describe it is rapid application development for people who know how to program. It includes some impressive ORM mapping techniques as well as generating schaffolding for common CRUD functions.
 
Two things that really impressed me out of the box:
 
1) It follows MVC and other good programming practices. This is a breath of fresh air compared to the ASP.NET idea of RAD (drag your connection object to the design surface <puke>) It also uses the Active Record pattern which is what I use in .NET (I generate business entities using CodeSmith off of the table schema, rails does this for me automatically)
 
2) You can override the generated functionality without breaking everything. Lets say the insert, update, and select functions are fine but you want to change the delete. You can do this easily without losing any of the benefits from the other functions. This is what all of these style of frameworks have struggled with all along.
 
Another thing that impressed me was some of the apps that have already been written using ruby on rails, including my latest infatuation (tadalist) as well as 43things (which keeps popping up in my google searches).
 
So, all of this has me seriously considering using Ruby on Rails for my application. It really seems like a perfect fit for what I am trying to do and as a bonus I get to play with Ruby. I still plan on using SQL Server and most likely will stick with ASP.NET for the web services. I will either try and get ruby on rails running through IIS or do a side-by-side installation of Apache on my server… if I can get that all working I might give it a shot.
 
Don’t freak out though, .NET is still my bread and butter. While ruby on rails is very very cool I dont think it will challenge .NET or J2EE in the enterprise anytime soon.
 
-James

{ 7 comments }

Jeff Schoolcraft August 25, 2005 at 11:13 am

James,

If you’re instered in Ruby on Rails you should check out the Castle project:

http://www.castleproject.org/index.php/Main_Page

Marcus McConnell August 25, 2005 at 1:03 pm

If you go with ASP.NET for web services and Ruby for your main site you’ve just made a decision to use multiple platforms for your Micro ISV project. I would think the cost of supporting two platforms down the road doesn’t justify a few hours saved by the ORM tools.

Brian August 25, 2005 at 5:40 pm

Why not use the Ruby/Rails support for web services? Providing a hosted service is another option. LAMP hosting solutions are no-brainers for MicroISVs who have a clue about managing costs, and want to extract high profits.

Regards the ‘enterprise applications’ I think this is where a lot of things have gone wrong. It’s a nice term for ‘overengineer’. People turn a 20 page brochureware website into a buggy, month long project using the out-of-the-box .NET tools. People think they have to be building enterprise applications instead of building software that is actually useful. Yes this is partly an organisational culture, IT industry and Mort problem – but the tools increase the problem. MicroISVs should steer well clear of anything that will result in issues like that.

James Avery August 26, 2005 at 12:13 am

Brian,

I could definitly use Ruby/Rails support for the web services, I am just not sure what level of support there is. That is something I will investigate when I get to that point.

Sam August 26, 2005 at 3:40 am

Marcus: ActiveRecord isn’t an O/R Mapper. The first sign is that it’s Database Driven. So it by and large requires your database to be structured a certain way. James is spot on when he supposes he might save more than a few hours. ActiveRecord is far from the best part of Rails. You could use NHibernate in .NET land and get more features from Day One if that was all it offered.

James: Welcome to the dark side. :)

10.times { puts ‘Hip Hip! Hooray’ + ( ‘!’ * i ) }

Sam August 26, 2005 at 3:41 am

How shameful. :o A bug in my code!

10.times { |i| puts ‘Hip Hip! Hooray’ + ( ‘!’ * i ) }

That’s what I get for not proof-reading. :D

hammett August 26, 2005 at 4:44 pm

Castle has a Rails-like ActiveRecord implementation that uses NHibernate. So far I’m very happy with it

http://www.castleproject.org/index.php/ActiveRecord

Comments on this entry are closed.

Previous post: MicroISV: Web 2.0

Next post: Looking for a few good devs