Life after Ruby on Rails
A few years ago I set out to learn Rails, it was the first framework I ever used and it was the first thing I learned after graduating, it was far from a leap of faith, Ruby on Rails had already consolidated as a highly reliable tool for rapid prototyping and agile development, it was months away from the version 4 release.
Needless to say I was dumbfounded, today I can barely remember my learning curve, but writing so little code that did so much was magical, much like what those who used it from the beginning describe the framework.
Rails is far from dead, in fact it is one of the most popular frameworks today, I use it and won’t stop so soon, but now that it has matured if I wanted to find the magical feeling Rails gave me when I first saw it I’d have to look elsewhere.
It has been 10 years since Ruby on Rails release, there’s a completely different landscape of web and mobile development now, so I set myself to give every framework I could find a try to see which one is as groundbreaking today as Rails was one decade ago.
Rails has spoiled me a bit, every framework I pick up is immediately compared, so when I decided to check other frameworks and languages I set a part a few things that helped me when I started learning Rails: there needs to be clear documentation, simple yet useful guides and some kind of well designed open-source application that showcases it best.
For comparison purposes Rails has its famed Blog tutorial, which shows how to make a simple blog in a few minutes, it has great documentation spread around the web, a large selection of gems and several large profile open source projects such as Discourse, besides that it includes a great community with a lot of answers on StackOverflow.
So while there are a lot of frameworks out there for as many languages as one can find, I was a little biased towards a few growing popularities, because I usually go for what is shiny and hip, I was instantly drawn to whatever.js I could find.
I was first attracted to Angular as it garnered popularity I could even use it with Rails, but that felt like doing too little, I needed something completely new. That was the MEAN stack(MongoDB, Express.js, Angular.js and Node.js), it feature every shiny new toy on JS-land and used NoSQL, what more could I want?
The biggest problem with MEAN-stack framework was the community fragmentation, I found three high profile frameworks initially, that was MEAN.js, MEAN.io and sails.js, I initially chose MEAN.js because I felt its documentation was a little better at the time I checked it out, the others may have improved since then.
Despite its useful documentation I didn’t have a tutorial at hand to learn, I didn’t find a solid application showcase and I had little more than a generator to start with, I felt many of the problems that plague the Node community to this day, MEAN.js came with so many packages that did so many little different things I was often lost where to start.
After a while of fiddling with Angular and Express apps I stumbled on something much better: Meteor.
Meteor came packing much of the wow factor I once felt from Rails, it is the most starred framework on github, it includes a growing community and is developed by a group that received large investments to maintain it.
It includes a tutorial for a simple Todo application which comes in three different versions based on either Angular, React, or Blaze, its own templating library, it includes platforms to use cordova to create Android and iOs applications, and Telescope is a great sample open source app that reminds me of discourse.
Meteor is still in its early days and a lot is still getting sorted out, version 1.3 has brought a lot of improvements, it is finally shifting away from its own package system to NPM which already has a much bigger community, each major version update brings something new and useful, I really enjoy Meteor development and it caters to rapid prototyping as well as complex projects, for which you can use something like Mantra.
If you want to learn Meteor the cool way I love the practical tutorials done at Scotch.io.
This seemingly close relationship of frameworks made Phoenix an instant favourite of mine, while this can be deceiving, as Phoenix is not really Rails, and it takes quite a bit of mental overhead to shake the Object-Oriented Paradigm of your head before diving fully into Elixir, Phoenix can dazzle as much as Rails did back in the day.
The main selling point of Elixir and Phoenix is that you do not have to choose between development speed and application performance, an often cited issue with Ruby.
While Phoenix does not have all the momentum and backing that Meteor does, it may not have as many packages as the NPM ecosystem, it has a growing community, it show promising growth and it is still in its early stages, it took me a while, but I found a fun Trello clone to learn with some examples, the docs and guides could improve, I miss having a tutorial like the one in Meteor or Rails.
What else is out there
For now I am quite satisfied working with Meteor and Phoenix, but I am never tired of trying new things, there are many frameworks out there I am still interested in, including some more modest Ruby options like Sinatra and Hanami(formerly Lotus). I also have some Python frameworks I’d like to check out such as Django and Flask, I’ll continue to look for fun new alternatives and I am always eager for more suggestions!