Upload
yaliceme
View
502
Download
0
Embed Size (px)
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.
Citation preview
My Year of MeteorMeteor: Past, Present, and Future
David Glasser (@glasser)
Wednesday, October 23, 13
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
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
Meteor Past
• Demo time!
Wednesday, October 23, 13
Meteor PresentWhat we’ve done in one year
Wednesday, October 23, 13
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
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
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
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
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
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
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
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
Meteor FutureThe road to 1.0
Wednesday, October 23, 13
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
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
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
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
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
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
Thank you!
• Any questions?
Wednesday, October 23, 13