Why Meteor

Meteor is a platform with which you can build web and mobile applications in pure JavaScript. This means you use JavaScript on the client, which you probably would do anyway, and on the back end. The most important question you should ask about Meteor is whether it is a good fit for your next software project and if learning Meteor is a good investment of your time. After reading this article you should be able to answer that question with greater confidence.

The Meteor Development Group

The company behind Meteor is The Meteor Development Group (MDG). If you use a certain technology for your project, you will have to ensure that this technology will be supported in the future. This has become a minor concern now as Meteor has reached the eagerly awaited 1.0 version. I started using Meteor at the end of 2012 when the version number was 0.5.1. Back then I was worried about using it for my software ventures, until I learned that MDG received US$ 11 million in funding. This is certainly an indication that there are some people working hard to make Meteor a success.

The Case for JavaScript and Node

There is a good chance that an existing web application is using JavaScript for the client and another language for the back end code. Now with Node around, this will change. In course of time, more and more applications will be built with only one programming language: JavaScript. For many projects it just makes more sense to use one language instead of two. Many decision makers will vote for a JavaScript only solution, because it takes away some project risks. For solopreneurs it even makes more sense to invest time in only one programming language.

In the past you had to build a team of developers with different skill sets: one developer with back end development skills, probably Java, Python or Ruby; a developer with Objective-C knowledge who could take care of the iOS version of the app; and another developer, with yet another skill set, for building the Android version. With Meteor this becomes much easier. You need a developer who knows how to be productive with JavaScript, HTML, and CSS. So you can probably develop your app with a much smaller team and with much less lines of code. And therefore with less risk.

Meteor, the Ruby on Rails Killer

Some claim that Meteor will kill Ruby on Rails (Why Meteor will kill Ruby on Rails). This is certainly a fun title for a blog post. The future will tell whether this claim will be proved right. In my opinion not Meteor but JavaScript on the back end could kill Ruby, mainly for the reason I mentioned earlier: having to utilize only one programming language.

It also requires less effort to build your team. It is much easier to find two good JavaScript developers than it is to find one good Ruby developer and one good JavaScript developer. It is not the projects that fail or succeed, but teams do. Building good teams is the secret equation for success, not so much the technology you use.

There are many JavaScript developers out there. Finding a good Ruby programmer who has time to spare for you can be quite difficult, depending on the location. At least this is my experience; yours may vary.

Supported Platforms

With the same code base you can target different platforms with Meteor: Web, iOS, and Android. When you need to have your application on more than one platform, Meteor can save you real money and headaches, not only during the first development phase, but throughout the whole lifetime of your application. One code base means also that your development team will be smaller and more homogeneous. <irony> No more fights between Java and JavaScript developers. </irony>

Investment of Your Time

Many developers seem to hate JavaScript. In my opinion this is because they have never tried to master it. They compare it to other languages and then dismiss it as being an inferior language, without even bothering to learn the good parts of JavaScript. There are language agnostic developers, but they are rare, and I’m certainly not one of them.

There are a great many developers who have learned different programming languages. Or, should I say they have started learning those languages? To become proficient with one language takes time and deliberate learning. I have started learning a lot of programming languages: Basic, Assembler, C, C++, Java, Perl, Python, Objective-C, Lua, Ruby, JavaScript, CoffeeScript and several more. I have become fluent in many of those languages. But which languages have I really mastered? Probably none. If you meet someone who claims that she knows a programming language ask her to write FizzBuzz on a paper napkin. If you always play with the newest toy in town you will probably not take the time to really master a technology. I certainly fell into this trap quite too often in my career as a software developer.

So the point I’m really trying to make is that learning and mastering JavaScript and Meteor is a good investment of energy and time. It is more so, if you consider the different platforms you can develop for. Mastering a technology means so much more than just learning the syntax of a programming language. You need to learn frameworks, APIs, packages, and best practices, to name a few.

Database Everywhere

Meteor uses a concept called database everywhere. This means you can use the same method calls to access your database, regardless of whether your code runs on the client or on the server. This has been achieved by developing a package called minimongo, which implements nearly the complete MongoDB API. The minimongo database runs in your browser’s memory.

One Line Deployment

Heroku has been one of the first companies who made deploying your app really easy, taking away a major pain every development team had. Meteor followed their approach. Deploying a Meteor app can be done with one simple command:

  meteor deploy

Community and Package Universe

MDG employed some great community managers, who contributed much to Meteor’s success in the last couple of years. This led to a powerful community that is happy to write packages for the missing parts. One of the most used packages is iron:router. In the beginning Meteor used the routing from Backbone.js. Today nearly every Meteor project uses iron router. There are many more excellent packages for Meteor. You can search for packages on Atmosphere.

Scalability

Meteor is based on Node.js. Node is famous for scaling well. Read the article about Node.js from PayPal’s Engineering Blog. It is a good read from which we learn that JavaScript on the back end makes sense. It demonstrates how PayPal decided that all their consumer facing web applications would be built on Node.js, moving away from Java. Most Meteor developers are eagerly awaiting Galaxy, the product with which MDG wants to earn money. We can expect that MDG will make it really easy to scale a Meteor application.

Less Context Switching

JavaScript on the client and on the server. Switching between two different languages for the client and the server slows a developer down. Often you have different developers for different languages. This slows down the development even more, because it adds complexity and communication overhead. Though this is more of an argument for JavaScript on the back end, it also applies to Meteor.

Less Code

Meteor claims that you have to write less code compared to other platforms or software stacks. This is especially true when you have to bring your application to different platforms. Meteor supports four platforms at the moment: server, browser, ios, and android. The server and browser platforms are installed with every Meteor installation. If you want to use the ios and android platforms you can do so by utilizing the meteor command line tool.

Hot Code Pushes

When using Meteor you do not have to use tools to automatically reload your code (like livereload 2). Meteor supports hot code pushes since version 0.14. Whenever you make a change to one of your JavaScript, HTML, or CSS files, Meteor will notice and push the change to the browser.

Principles of Meteor

Meteor mentions some principles that have guided them during development. Those also make some convincing arguments as to why it might be good to use Meteor for future projects. The following are quoted from Meteor’s documentation:

  • Data on the Wire. Meteor doesn’t send HTML over the network. The server sends data and lets the client render it.
  • One Language. Meteor lets you write both the client and the server parts of your application in JavaScript.
  • Database Everywhere. You can use the same methods to access your database from the client or the server.
  • Latency Compensation. On the client, Meteor prefetches data and simulates models to make it look like server method calls return instantly.
  • Full Stack Reactivity. In Meteor, real-time is the default. All layers, from database to template, update themselves automatically when necessary.
  • Embrace the Ecosystem. Meteor is open source and integrates with existing open source tools and frameworks.
  • Simplicity Equals Productivity. The best way to make something seem simple is to have it actually be simple. Meteor’s main functionality has clean, classically beautiful APIs.

Fun

Last but not least. Developing in Meteor and JavaScript is a lot of fun. For me it is more fun, because I have to write less glue code and do not have to switch between two programming languages. Being empowered to build user interfaces that feel like native applications is certainly an added advantage.

Why Not Meteor

Meteor is still a pretty new technology. Although the Meteor community is growing fast, the ecosystem is still not as diverse as, for example, Rails’ ecosystem. For Ruby on Rails you will find best practices for probably all problems you will face during the development of your application, for example, about how you best structure your project, or how you tackle multi tenancy applications. No doubt, the Meteor community will catch up, but this will take time.


Jo's Profile ImageWritten by Jo Meenen who lives and works in Frankfurt building digital doodah. Stalk him on Twitter

ImpressumDatenschutz