david glasser in chicago - meteor: past, present, & future

21
My Year of Meteor Meteor: Past, Present, and Future David Glasser (@glasser) Wednesday, October 23, 13

Upload: yaliceme

Post on 10-May-2015

498 views

Category:

Technology


0 download

DESCRIPTION

David Glasser is a core developer at Meteor Development Group (see his bio at http://www.meteor.com/about/people). On September 26, 2013, David was a guest at the Meteor Chicago meetup group (http://www.meetup.com/Meteor-Chicago). He spoke about how Meteor has changed in the year since he joined Meteor in September 2012 and showed us what's on the horizon for Meteor's future.

TRANSCRIPT

Page 1: David Glasser in Chicago - Meteor: Past, Present, & Future

My Year of MeteorMeteor: Past, Present, and Future

David Glasser (@glasser)

Wednesday, October 23, 13

Page 2: David Glasser in Chicago - Meteor: Past, Present, & Future

My Year of Meteor

• April 2012: Meteor launches publicly• September 2012: I joined Meteor

Development Group• September 2013: I give this talk• ???: Meteor 1.0 is released

Wednesday, October 23, 13

Page 3: David Glasser in Chicago - Meteor: Past, Present, & Future

Meteor, April 2012: the application platform for the rich client era• Data on the wire• One language• Database everywhere• Latency compensation• Full stack reactivity

Wednesday, October 23, 13

Page 4: David Glasser in Chicago - Meteor: Past, Present, & Future

Meteor Past

• Demo time!

Wednesday, October 23, 13

Page 5: David Glasser in Chicago - Meteor: Past, Present, & Future

Meteor PresentWhat we’ve done in one year

Wednesday, October 23, 13

Page 6: David Glasser in Chicago - Meteor: Past, Present, & Future

Sending email: September 2012

• My first project!• A simple server-side Email.send API• Implemented in my first week at Meteor

Development Group• Zero configuration needed for “meteor

deploy”

Wednesday, October 23, 13

Page 7: David Glasser in Chicago - Meteor: Past, Present, & Future

Meteor Accounts: October 2012

• Full-featured auth system• Fine-grained user-based controls over

database reads and writes• Federated OAuth login (built-in support

for Facebook, Google, Twitter, GitHub, Weibo)

• Secure password login• Email validation and password recovery• Optional UI widgets implementing login,

signup, password change, etc

Wednesday, October 23, 13

Page 8: David Glasser in Chicago - Meteor: Past, Present, & Future

Cursor deduplication: November 2012

• Problem: many users subscribe to the same database query, but the live database publisher could not cache

• Caching live updating data streams is harder than caching static data

• Node’s concurrency model does not lend itself well to this

• Built new concurrency primitives in order to create a live DB query cache

Wednesday, October 23, 13

Page 9: David Glasser in Chicago - Meteor: Past, Present, & Future

New DDP wire protocol: February 2013• We redesigned our wire protocol based

on a year of experience• Supporting more data types (Date,

Mongo ObjectID, binary, etc)• Actually wrote a spec• The messages in the protocol better

match the “observeChanges” primitive for watching a database query

• (Also: Improve the logic behind observeChanges to poll less often)

Wednesday, October 23, 13

Page 10: David Glasser in Chicago - Meteor: Past, Present, & Future

appcache: March 2013

• Want your app to use the HTML5 AppCache API to load faster? Just type “meteor add appcache”

• First major feature built entirely by an open source community member

Wednesday, October 23, 13

Page 11: David Glasser in Chicago - Meteor: Past, Present, & Future

Engine, a new distribution system: April 2013• Install multiple releases of Meteor on

your developer machine at once• Pin each app to a specific release• Put your own packages inside your app• Use Node packages from npm

Wednesday, October 23, 13

Page 12: David Glasser in Chicago - Meteor: Past, Present, & Future

Package linker: August 2013

• Meteor is a collection of packages plus a build tool

• The “linker” release rethought exactly what a package is and how they depend on each other

• Packages now have real namespaces• Source maps (including for CoffeeScript)• standard-app-packages• Weak dependencies

Wednesday, October 23, 13

Page 13: David Glasser in Chicago - Meteor: Past, Present, & Future

Devshop: January 2013 – tonight

• We host a monthly devshop at our office in SF

• 2pm-late• Invited talks• Lightning talks• Meet other Meteor users and the core

team

Wednesday, October 23, 13

Page 14: David Glasser in Chicago - Meteor: Past, Present, & Future

Meteor FutureThe road to 1.0

Wednesday, October 23, 13

Page 15: David Glasser in Chicago - Meteor: Past, Present, & Future

Bug Week!

• Meteor is an ambitious project• We’re in “preview” mode• Most of our work goes into brand new

packages or rewrites• Over 80 external contributors• We pay attention to our GitHub issues,

but we don’t drop everything to fix them• Except this week

Wednesday, October 23, 13

Page 16: David Glasser in Chicago - Meteor: Past, Present, & Future

Meteor UI: A new rendering engine

• In reactive templates, you just write {{name}} and if the name changes, it magically updates

• No “when the name changes, find every reference and update it” needed

• Current Meteor templates rerender the entire template and use a clever “patch” algorithm to update the screen

• Doesn’t work well with jQuery• So David Greenspan rewrote it

Wednesday, October 23, 13

Page 17: David Glasser in Chicago - Meteor: Past, Present, & Future

Galaxy: the next generation of “meteor deploy”• Running your app should be as smooth

as developing it• “meteor deploy” has no SLA• Galaxy is an advanced version of the

“meteor deploy” server that you can easily run on your own infrastructure

• Auto-scaling, auto-updating• We’ve been running our own sites on it

since July• Enterprisey features will cost money

(aka: yes, we have a business plan)Wednesday, October 23, 13

Page 18: David Glasser in Chicago - Meteor: Past, Present, & Future

Oplog tailing: scaling with MongoDB

• The core data read operation in Meteor is “publish the results of a query and tell us when it changes”

• MongoDB doesn’t actually have this operation

• We fake it with polling and heuristics• Instead, watch the “oplog” for changes• A community user has a prototype

implementation that performs well but doesn’t implement the full API

• I’ve done a rough draft of a core versionWednesday, October 23, 13

Page 19: David Glasser in Chicago - Meteor: Past, Present, & Future

Atmosphere in core: Third Party Packages• Meteor is a build tool plus a set of

packages• You can write your own packages in your

app• No supported way to share packages• Atmosphere/Meteorite: community

package repository (582 packages!)• Needs a better versioning story• Concept: Ubuntu-style packaging

Wednesday, October 23, 13

Page 20: David Glasser in Chicago - Meteor: Past, Present, & Future

Next stop: 1.0

• Meteor 1.0 will be a release we can feel comfortable supporting for a while

• We’d love to get there as soon as we can• We’re hiring :)

Wednesday, October 23, 13

Page 21: David Glasser in Chicago - Meteor: Past, Present, & Future

Thank you!

• Any questions?

Wednesday, October 23, 13