Meteor aims to make JavaScript programming fun again

The framework, aimed at streamlining the creation of the new breed of Web apps, moves toward 1.0 release

meteor js background
Meteor JS

Meteor is billed as an open source JavaScript platform for quickly building Web apps. Only launched in 2012, Meteor has quickly become popular with developers, but it vies for the hearts and minds of software builders against other JavaScript frameworks, such as Angular.js, Ember.js, and Backbone.js. InfoWorldEditor at Large Paul Krill recently interviewed Matt DeBergalis of Meteor Development Group, who co-authored Meteor along with Geoff Schmidt and Nick Martin, about the project and its uniqueness.

InfoWorld: Why the name Meteor?

DeBergalis: We wanted something evocative. Look, programming got way too hard in the last 10 years. Web programming used to be very simple. The original Rails book was less than an inch thick, if I remember right. And that's all you needed to know. You could write a whole app. And we lost our way. Somehow in the last 10 years, it got incredibly hard to write these apps. Now you need to piece together a dozen technologies to have a modern application. And it stopped being fun somewhere along the way. Meteor is designed to be fun for developers. It's designed to be something that people can enjoy, that kindles a sense of curiosity and excitement. We really want it to be possible for many more people in the world to be able to write really great software, and the name is something that we just think reflects [that] it's cool, it's a little science-y, it's accessible, it's not supertechnical, it's not jargon, it doesn't scare you off if you're not an expert developer.

InfoWorld: What's different about Meteor? What separates it from other JavaScript frameworks like Angular.js or Derby or Node.js?

DeBergalis: The reason we wrote this is that there is a shift in the Web application platform, and specifically, people are starting to write a new kind of application, what we call a thick client, where most of the code is actually running inside the Web browser itself rather than in a data center. This is an architectural change from running the software in the data center and sending HTML on the wire to a model where we have data on the wire and the actual rendering, the displaying of the user interface, is happening on the client. That's the way Facebook and Google and Twitter are writing their apps now. Google+, for example, is a program. It's running in your browser. That's why it feels more interactive. It's not page-based like the old Web. It's much more engaging.

InfoWorld: Are you describing Meteor's live page updates feature, where developers write templates that automatically update when the database changes?

DeBergalis: That's one thing you end up needing. To build an interactive app like that, you end up needing a lot of infrastructure that you don't get in the last generation of frameworks, things like PHP and Rails, which were designed to send pages at a time from scratch to the browser. In a PHP app, you click a link, and you get a whole fresh page and the screen flickers and it changes and then you see something new. In these apps, you're constantly looking at new information. So the server is sending you new data, new pictures, new information, and as you swipe or click, your screen automatically redraws to reflect what's happened. We built Meteor as a current-generation solution to that problem because it turned out that it's really hard to write those apps using technology that was designed for this page-based presentation-on-the-wire era. That's how it differs.

You mentioned Node, for example, but Node is still a server-based environment for writing server-based code. A pure Node app has the same problem. So there's been this investment in components like Angular, which redraws the screen automatically as data changes. There's several things like that. Facebook has an open source library called React. It does the same thing. Meteor includes a component called Meteor UI, which does the same thing. What's different about Meteor is that's just one of the challenges where a developer or a team that sits down to write an application like this.

Another challenge: How do I get new data? So some change happens in the world. Let's say that someone else posts a story about me on Facebook. How do we get that piece of information into all of the running copies of Facebook in different people's browsers throughout the world that want that to update their screen? There's a feed of information on the right-hand side of that app. Or in Twitter, I want to explain new tweets as they come in. To do that, I need a new wire protocol. I need a streaming wire protocol that lets the server publish data into the client. HTTP won't work for that. It's request-response protocol that was designed for a different model. Meteor includes a real-time wire protocol called DDP (Distributed Data Protocol).

Another example is the very act of how do you deliver one of these rich applications to the browser? [As a developer] I need some infrastructure to bundle that up into JavaScript and CSS and HTML, and I need to be able to deliver that into a browser when they first come to my app, and as I make updates, I have to have a story for how I'm going to push those updates going to push those updates into the client without disrupting the user. The story of Meteor is it's not one thing, it's an end-to-end or a full-stack framework that addresses all those different pieces in a unified way with one language and one API for how to write an application like this.

InfoWorld: When did you first release Meteor? It was only about a couple years ago, wasn't it?

DeBergalis: April 2012 was the first public announcement, and we were absolutely overwhelmed at the level of interest because it was far from finished, and we wanted to show off what we were thinking.

InfoWorld: What are some of the major success stories with Meteor? Can you point to any major websites, Web projects, whatever, that were built using it, or is it still early for that?

DeBergalis: It is early, and we have had to caution people that it's rapidly changing. The interfaces are still undergoing, in some cases, rapid change. There's an app gallery on our website so you can see some examples of what people have gone ahead and used Meteor in production. One theme you'll see is startups where development velocity is very important and where they're comfortable with new technology. We've seen companies take advantage of Meteor just to be able to develop an interactive rich application very, very quickly, faster than they could have otherwise.

InfoWorld: At what stage of development is Meteor?

DeBergalis: We're at, I believe it's 0.6.6 [release] today, and we have announced a road map for a 1.0 release in early-2014.

InfoWorld: What improvements are you planning for Meteor between now and with the 1.0 release?

DeBergalis: There's a few big-ticket items. I can talk about those in a second, but the main point about 1.0 is that signals when Meteor's APIs are stable, the core APIs are stable and we can stand behind those for a company that's looking to build a significant app, where they want to know that they can depend on those interfaces for, say, a year and that we would be able to support that. Specifically, there's a couple things in flight that we're wrapping up. One of them is a scalability project around the interaction of MongoDB, which is our database, and the real-time queries that let us push new information into the browser. And one of them is Meteor UI, which is our technology for automatically redrawing the screen.

This story, "Meteor aims to make JavaScript programming fun again," was originally published at Get the first word on what the important tech news really means with the InfoWorld Tech Watch blog. For the latest developments in business technology news, follow on Twitter.

Copyright © 2013 IDG Communications, Inc.