July 25, 2012
by David F. Carr
If you want to make an impression with a social or mobile software app, it helps to make it blazing fast. Fast as a meteor, perhaps?
The Meteor Web development framework is gaining attention for the way it simplifies the creation of responsive applications, particularly social or collaborative applications where many users need to see the actions of the others update in their browsers or on their phones in near real time. On Wednesday, the Meteor Development Group that backs the open source project announced an $11.2 million Series A investment led by Andreessen Horowitz, with additional funding from Matrix Partners and others.
David Skok, a venture capitalist with Matrix Partners, sees Meteor as having the potential to become the next Ruby on Rails. "Every once in a while a new application development framework comes along that dramatically accelerates the way people create applications," Skok wrote in a blog post. " If you've ever looked at Google's spreadsheet and wondered how they got such great interactivity in a browser, and been impressed by the fact that it would automatically update any other user's view of the spreadsheet in realtime, then Meteor is for you. Meteor takes the complexity out of writing this kind of realtime, highly interactive web/mobile application." Skok is known for leading the company behind the JBoss open source application server to its acquisition by Red Hat, so he knows something about finding the commercial potential of open source technologies.
Meteor also includes a latency compensation mechanism, which allows each user to see the results of an action immediately, without waiting for the round-trip transmission of data between client and server. Given a well-behaved Internet connection, other users will see that update within seconds or milliseconds. When used in conjunction with the MongoDB NoSQL database on the server, Meteor further simplifies data handling by replicating MondoDB API on the client. This means developers can use the same commands to store data on either client or server, with replication between the two.
"Meteor lets typical developers build rich, responsive applications in days rather than the months it takes a team of experts to do it today," Matt DeBergalis, one of the three Meteor co-founders, said in an interview. "The biggest companies with the biggest budgets, like Google with Gmail or Facebook with its photo viewer have been able to invest massive resources in making this work. Now, users expect applications like mapping to feel fluid and interactive the way Google Maps does, but for most developers that is out of reach."
To be clear, Meteor is not some kind of point-and-click development environment for amateurs. In its current form, it requires familiarity not only with coding but command-line operations (see the video below). The preview version of the tool is available for Linux and MacOS. There is a community-developed version for Windows, but it has not yet been made part of the official distribution. DeBergalis said the installation process and some other aspects need polishing.
Meteor is designed for deployment to a cloud-based server environment, and for convenience even provides a ready-made cloud service where you can deploy to an address like myapp.meteor.com. However, you can package up the same app and deploy it to the Amazon or Heroku clouds or anywhere else that Node.js is available.
The Meteor technology is at an early preview stage, where basic programming interfaces could still change dramatically. One tutorial by developer Gabriel Manricks concluded developers should consider it anyway. "Even though Meteor is still in its infancy (beta), there isn't anything you can't get around," he wrote. "The amount of time Meteor saves in your application justifies the rare occurrence where you might need to write a workaround."
DeBergalis likened the potential of Meteor to the advent of the relational database. Before the rise of DB2 and Oracle, application developers often created their own database management systems as part of the programming process. Standardization around the relational database made it easier to create business applications because a whole category of data storage and retrieval operations could be delegated to the DBMS. Meteor wants to do something similar by providing a standard mechanism for Internet application development, on top of which developers can focus on the specifics of their application rather than the details of data replication protocols.
There will still be plenty of room for optimization, however. After the advent of the relational database, there was still a big performance difference between the applications written by novices and those written by experts who knew how to optimize every table structure and query.
Similarly, Meteor will make it easier to create a prototype application, accepting all the defaults provided by the framework, but that will not necessarily be the end of the story, DeBergalis said. "Developers still need to be very thoughtful about how they build the apps and how data moves around," he said. By default, Meteor makes it easy to build an app where "every client has a copy of the same information … and that lets you immediately get a feel for what the collaborative fluid experience feels like, which is great for a weekend project or a small internal app."
"Over time, as the application gets bigger, you'll want to think more about efficiency and scalability, in terms of how do I limit the data I send down to each client," DeBergalis added. "So maybe I write a rule that says only send to the client data that matches this filter."
The core Meteor technology is available under an MIT Open Source license. DeBergalis said the long-range revenue plan for Meteor Development Group is to deliver supporting technologies and services for the needs of enterprises, which are different than those of open-source Web developers.