When I decided to work on
my own thing seriously, one of the first decisions I had to confront was "What should I write the darn thing in?" To cut to the chase, I ended up going with
Ruby on Rails, and here's why.
The natural decision was to go with .NET. I've been professionally employed writing .NET software for the last 7 years, and I'm pretty good at it. And, I don't
dislike it either; it's a well documented environment, and has a pretty good ecosystem. I especially like
ASP.NET MVC, and heavily considered writing my app in it and storing everything in SQL Server, and using the Entity Framework to easily store and retrieve data. Price wasn't a factor in my decision either; Microsoft offers a pretty nice deal through the
BizSpark program.
There was one thing though. Like I said, I've been writing .NET code for a while, and I realized that if I didn't do something different, I'd just get burned out from programming in the same environment over and over. I'm already advising and contributing to another extra-curricular project that will be using
ASP.NET MVC, and yet another .NET project would just be too much.
What else was there then? I wrote my
photo blog in a Python framework called
Pylons. I thought Pylons was alright, but the documentation left quite a bit to be desired. It was difficult to track down answers to questions, and just took too much time to really be productive.
There's also
Django, another popular Python framework. It has
fantastic documentation, and a vibrant community. There's a lot of stuff to like about it, so why didn't I go with it? It wasn't that I found fault with Django itself, just that I liked what I saw with Rails more.
Rails has been around since 2004, making it
incredibly mature as far as web frameworks go. The documentation isn't quite as good as Django's, but still better than most things. The
guides are especially good. But, perhaps the killer feature of Rails is the plugin model and library. If you need some piece of functionality, someone has probably already thought about it and written a
gem for it.
From a productivity standpoint, I feel that even though I've only been using Rails for about 4 weeks, I'm already more adept at it than I am with Pylons, and I've used Pylons [off and on] for two years.
Nothing is perfect, and there are certainly things I don't like about Rails, but nothing I can't deal with and work around. Right now my biggest problem is that I just don't know what I don't know! Some of the code I've written will surely make Ruby aficionados cringe and curse my name, and I have spent way too much time on a small part only to find that it was already built into the language or framework just waiting for me. These are the birthing pains though, eventually, I will be better at it.
So, Rails it is. I'm not using a funky
HTML or
CSS generator yet (one thing at a time), but I might incorporate them some time down the line. I haven't settled on a database yet either; one of the the nice things about Rails is that it's
Migration model allows you to change it very easily. I'll probably go with MySQL, or perhaps Postgres (Oracle being responsible for MySQL fills me with dread, but haven't used Postgres... ever).