Meteor

Real-time web development

at lighting speed


Germán Toro del Valle

What is Meteor?

Meteor is an open-source platform for building top-quality web apps in a fraction of the time, whether you're an expert developer or just getting started

#loveit-1: Integrated framework

Everything in Meteor is carefully designed to provide the developer with a new web application development paradigm

All the pieces and parts work seamlessly together. It just feels right

A development platform built by developers for developers

A whole new experience

#loveit-2: up and running

Installation:


$ curl https://install.meteor.com | /bin/sh

Creating apps:


$ meteor create myapp

Running apps locally:


$ cd myapp
$ meteor
=> Meteor server running on: http://localhost:3000/

Deploying apps:


$ meteor deploy myapp.meteor.com
$ meteor bundle

#loveit-3: Data on the wire

Don't send HTML over the network. Send data and let the client render it

The platform is responsible of the data communication, which has collateral benefits such as security and efficiency

The data is just there for the clients to use. And 'there' means locally stored

Open approach in the shape of the Distributed Data Protocol (DDP)

#loveit-4: One language

Write both the client and the server parts of your interface in JavaScript

The boundaries between servers and clients blurs. It feels like a set of components working together

JavaScript as a declarative language fits in a natural way with the traditional imperative or programmatic approach

#loveit-5: Database everywhere

Same document-oriented database API in the server and the clients

Central instance of the database on the server. Distinct views of the database on the clients

Total control by the developer (data transfer, data storage, security, etc.)

Meteor takes cares of keeping everything updated and consistent

#loveit-6: Latency compensation

On the client, use prefetching and model simulation to make it look like you have a zero-latency connection to the database

  1. Client update local database view
  1. Client request update to the server
  1. Server checks if the update is allowed
  1. If it is allowed, the server updates the central database and notifies all subscribed clients
  1. If it is not allowed, the server notifies the original client

#loveit-7: Full stack reactivity

Make realtime the default. All layers, from database to template, should make an event-driven interface available

Reactive programming = Reactive computations + Reactive data sources

Functions which are intelligently executed if some data they depend on changes

Hot code push updates: reactive apps 

#loveit-8: Embrace the ecosystem

Meteor is open source and integrates, rather than replaces, existing open source tools and frameworks

Compatible with already existent frameworks: jQuery, Bootstrap, Lungo, Firefox OS Building Blocks, etc.

Leans on trusted technologies (MongoDB, Handlebars) but from an open and plug-able perspective

#loveit-9: Simplicity equals ProductiviTy

"Things should be as simple as possible, but not simpler" (Albert Einstein)

Accomplish simplicity through clean, classically beautiful APIs

A clear repetitive workflow as the neatest sign of simplicity (the 'churrera' principle)

#loveit-10: Extensibility

Meteor is a library of packages: pre-written, self-contained modules that you might need in your app

About a dozen core packages (HTTP connections, dependency tracking, reactivity, etc.)

Hundreds of optional packages via Atmosphere and Meteorite







Hands-on time

Meteor

By Germán Toro del Valle