Meteor
For the past year, I’ve been working mainly with AngularJS and before that Ruby on Rails. I’ve never heard of Meteor until a few weeks ago. I am intrigued by the idea of tightly connecting the client and server together in a synergistic manner that allows for fast responsiveness, which is what Meteor is all about. I decided to go through Meteor’s tutorial online and get a feel for why the framework differentiates itself from other current technologies. From a very high level perspective, Meteor is a very good solution for quickly building an application from the ground up and provides some cool features out of the box.
A little bit on how Meteor works. It’s built purely from Javascript, with the exception of MongoDB as its database. It uses NodeJS as its server and front-end templates, which Meteor calls “Spacebars” along with HTML. Spacebars is very similar to handlebars and follows the same syntax style. Meteor’s data collections are dubbed reactive data sources and are accessible on both client and server sides. What’s cool about this concept is that updates to the database are reflected on the UI immediately. For example, if an application lists out new users on a page, and a user is added to the database on another instance, all UI’s are automatically updated visually. Unlike Rails, a user would have to refresh their page to see any updates (considering we’re following Rails-like MVC). I found this behavior to be very friendly and appealing especially on single-page applications. Of course, not everything should be tied to the server. Meteor addresses this by providing temporary UI states stored in Session. These states are unique to its instance and are purely for visual interaction.
Aside from how Meteor works under the hood, it’s also very developer friendly out of the box. An engineer can create and deploy an application from the command line and I believe one of its biggest selling points is that Meteor provides support for painlessly running a web application on both iOS and android platforms. Imagine building an application with all Javascript and then writing a few commands to deploy your application across web and mobile platforms equipped with super fast responsiveness! I had the tutorial running on both web and android emulator in less than 10 minutes.
While Meteor has a lot of promise, there are certain issues I believe can’t make it a 100% sell. Compared to Rails or even AngularJS, standard methods for testing are still being developed which means Test Driven Development would be challenging. I’ve been spoiled with heavy lifting from Angular’s two-way binding and directives, whereas in Meteor I have to declare events in Javascript that handle any user interaction. It reminds me of writing jQuery, which I prefer to use only as a last resort. Because both the server and client are tied together, I wonder if the security risk is greater. Meteor mentions that its internal functions can be customized for greater security, but I’m guessing that can be a headache compared to relying on Rails with a front-end framework. Finally, although Meteor 1.0 was recently released, Meteor is still fairly new whereas communities and support for other popular frameworks are now solid and stable.
Will I try Meteor again? Sure! I love Javascript and can see Meteor as a solid contender for building fast responsive applications. As mobile and web synergism continues to grow, developing with Meteor will become more appealing and I hope it continues to gain attention and support. Check them out: www.meteor.com