Meteor: bringing the awesome back to web dev
Part 0: What is this thing?
Chris Quinn, Full Stack Developer at Gravitywell, shares his thoughts on Meteor
I’ve been using Meteor for the past 3 months, having previously been working exclusively with LAMP stacks and jQuery (more often than not using WordPress / Drupal).
My conclusion, after 3 months, is that Meteor brings the awesome back to web dev. Let’s talk about why.
Meteor is an open source framework for building web apps. If you’re a web developer and this is the first you’ve heard of it, you’ll be thinking the same as I did: “what, another one?”.
You’d be forgiven for a degree of choice paralysis: what with Angular, Backbone, and React all jostling for your attention (and all for different reasons), keeping up with every possible solution in our industry feels like a full time job itself.
However, Meteor wasn’t born yesterday. It’s a Y Combinator alumnus (and previously called Skybreak - how awesome is that?), and received $11m in VC funding in July 2012 from the backers of Skype and Twitter.
Fast forward to today and Meteor has been gaining immense popularity, and was even nominated as one of the top tech skills to learn in 2015, as well as being showcased in a Gartner report (for those who like that sort of thing) as a ‘cool’ vendor in April this year.
It’s also a regular as one of GitHub's “most starred” projects every month.
First and foremost, why are we even talking about Meteor? Well, aside from the pedigree mentioned above, I was looking for a way to rapidly prototype a web app. The app needed a level of realtime functionality and I made a beeline for node.js.
Even after reading up on some excellent guidance for using node/express as a rapid prototyping tool, I still felt that the solution was quite fragmented and not really as “rapid” as I was looking for. Other non-node based solutions required learning a whole suite of new technologies and frameworks, most of which boiled down to “how exactly do I get web sockets up and running?”
Most resources I came across were also immediate buzzkills, the learning curve or inflexibility immediately making what should be a fun excercise ("hey let's quickly prototype this cool new app idea!") into something of a drudge.
And then I found Meteor. Right away, it ticked several boxes:
- Open source
- One codebase for both webapp and native
- One language for server and client
- Zero config realtime web
In the words of Meteor’s founder, Matt Debergalis:
It takes care of almost all of the plumbing for you, allowing you to concentrate on developing business value."
I literally cannot resist putting that image on anything. But Matt’s description is spot on - Meteor lets you actually build your app instead of spending half your time attempting to configure the environment and dependencies.
But how does Meteor let us get away without doing any of that? Here’s a diagram of Meteor’s architecture:
“a combination of remote method invocation and attribute pub sub, tied together in a way that [allows] latency compensation on the client by simulating server methods”
-- Matt Debergalis.
We’ll come back to some of these terms in later posts, but taking a step back, DDP is actually the mechanics behind Meteor’s commitment to “data on the wire”, where after an initial rendering of markup, browsers receive realtime data updates which re-render templates (or parts thereof).
Bringing the awesome
My reaction when starting out:
The ease of getting up and running and the excellent documentation and sample apps provided convinced me I was on the right track - prototyping has been made fun!
After all, prototyping is great… but high-fidelity prototypes are even better  . With Meteor, you can reach a MVP almost as fast as you can prototype. Similarly, if you approach it correctly, you don't have to throw the logic defined in your prototype away once you move onto a full MVP, embracing so-called evolutionary prototyping.
So I began using Meteor and it has been my day-to-day for over 3 months now. I'm learning something new every day (which is awesome) and in these posts over the coming weeks, I'll be sharing some of the tips and tricks I've picked up. Hopefully they'll help others out when we inevitably come up against the question - how do we do this in Meteor?
curl https://install.meteor.com/ | sh
from your terminal. Then:
meteor create --example todos cd todos meteor
And you'll be up with a great sample app on localhost:3000
We've been intentionally light on code in Part 0 (as in it's completely absent), but subsequent posts in this series are going to be pretty heavy with examples, so stay tuned, and join us next time to Bring the awesome back to web development.
Next time: why meteor is great for developers, some awesome packages and leveraging node modules for great justice.