Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Meteor 1.0, Emily Stark (Talks at Sourcegraph)

Sourcegraph
December 04, 2014
2.3k

Meteor 1.0, Emily Stark (Talks at Sourcegraph)

Sourcegraph

December 04, 2014
Tweet

Transcript

  1. Welcome! Meteor: an open-source platform for app development done right

    • Instant response • Reactive UI • Fast load time • Multiple platforms http://meteor.com Tuesday, December 9, 14
  2. 0.3.2: first public launch 0.5.0: authentication and accounts 0.6.5: groundwork

    for package system 0.7.0: new livequery scaling strategy 0.8.0: new live templating engine 0.9.0: new package system 0.9.2: PhoneGap integration 1.0! April 2012 October 2012 August 2013 October 2013 March 2014 August 2014 September 2014 October 2014 The Meteor timeline http://meteor.com Tuesday, December 9, 14
  3. 0.3.2: first public launch 0.5.0: authentication and accounts 0.6.5: groundwork

    for package system 0.7.0: new livequery scaling strategy 0.8.0: new live templating engine 0.9.0: new package system 0.9.2: PhoneGap integration 1.0! April 2012 October 2012 August 2013 October 2013 March 2014 August 2014 September 2014 October 2014 The Meteor timeline http://meteor.com Tuesday, December 9, 14
  4. Livequery scaling Ideas.find({ score: { $gt: 3 } }).observe({ added:

    function (idea) { ... }, changed: function (newIdea, oldIdea) { ... }, removed: function (oldIdea) { ... } }); Credit to David Glasser for material in this section! http://meteor.com Tuesday, December 9, 14
  5. Oplog tailing Ideas.find({ score: { $gt: 3 } }).observe({ added:

    function (idea) { ... }, changed: function (newIdea, oldIdea) { ... }, removed: function (oldIdea) { ... } }); http://meteor.com Tuesday, December 9, 14
  6. Oplog tailing Ideas.find( { score: { $gt: 3 } },

    { sort: { score: -1 }, limit: 3 } ) http://meteor.com _id idea score xxx opentable for bathhouses 4 yyy pinterest for billionaires 5 zzz tinder for the homeless 6 Tuesday, December 9, 14
  7. Oplog tailing Ideas.find( { score: { $gt: 3 } },

    { sort: { score: -1 }, limit: 3 } ) { op: ‘insert’, id: ‘abc’, { idea: ‘netflix for political attack ads’, score: 2 } } http://meteor.com _id idea score xxx opentable for bathhouses 4 yyy pinterest for billionaires 5 zzz tinder for the homeless 6 Tuesday, December 9, 14
  8. Oplog tailing Ideas.find( { score: { $gt: 3 } },

    { sort: { score: -1 }, limit: 3 } ) { op: ‘insert’, id: ‘abc’, { idea: ‘fitbit for alcohol’, score: 3.5 } } http://meteor.com _id idea score xxx opentable for bathhouses 4 yyy pinterest for billionaires 5 zzz tinder for the homeless 6 Tuesday, December 9, 14
  9. Oplog tailing Ideas.find( { score: { $gt: 3 } },

    { sort: { score: -1 }, limit: 3 } ) { op: ‘update’, id: ‘aaa’, { $set: { score: 7 } } } http://meteor.com _id idea score xxx opentable for bathhouses 4 yyy pinterest for billionaires 5 zzz tinder for the homeless 6 Tuesday, December 9, 14
  10. Oplog tailing Ideas.find( { score: { $gt: 3 } },

    { sort: { score: -1 }, limit: 3 } ) { op: ‘update’, id: ‘aaa’, { $set: { score: 7 } } } http://meteor.com _id idea score yyy pinterest for billionaires 5 zzz tinder for the homeless 6 aaa spotify for jingles 7 Tuesday, December 9, 14
  11. Oplog tailing http://meteor.com • Major challenge: correctness • Not matching

    MongoDB’s behavior is disastrous • Can always fall back to polling • 2.5-10x performance improvement • Bottleneck: Mongo server CPU/bandwidth Tuesday, December 9, 14
  12. Meteor packages Early 2014: time to build a package system

    http://meteor.com Tuesday, December 9, 14
  13. Meteor packages • ‘meteor’ is a build tool and package

    system in one • Packages for server and client • Not just browsers: also iOS, Android • No multiple loading • Dependency management http://meteor.com Tuesday, December 9, 14
  14. Constraint solver • Approaches: • Multiple loading -> no constraint

    solver • Pick the first solution you find • Pick the best solution (optimizing pseudo-boolean SAT solver!) http://meteor.com Tuesday, December 9, 14
  15. Constraint solver meteor update foo • Do you expect a

    whole bunch of other packages to be updated? • Do you expect them to get updated to new versions that have bug fixes, or are you willing to accept breaking changes? • Do you expect top-level dependencies to be treated differently than transitive dependencies? http://meteor.com Tuesday, December 9, 14
  16. Constraint solver • Cost function • Penalize downgrades to top-level

    dependencies • Penalize changes from previous solution • Penalize breaking changes a lot (as determined by semver) • Penalize older versions of newly added packages http://meteor.com Tuesday, December 9, 14
  17. Constraint solver • The next generation: replacing JavaScript A* search

    with MiniSat • Challenge: explanation if there is no solution http://meteor.com Tuesday, December 9, 14
  18. 1.0: the non- technical side Incredibly supportive community: patient, eager

    to help test new features http://meteor.com Tuesday, December 9, 14
  19. 1.0: the non- technical side Worldwide Meteor Day 134 cities,

    4259 attendees http://meteor.com Tuesday, December 9, 14
  20. Thank you! Questions? Ask me now! Or [email protected], or @estark37

    Thanks to David Glasser, Slava Kim, Sashko Stubailo, Matt Arbesfeld, other Meteor coworkers! http://meteor.com Tuesday, December 9, 14
  21. Lessons in OSS productivity Focus focus focus! Make a schedule;

    stick to it. Strike a balance between listening to users, ignoring them when necessary, and giving them what they want but aren’t asking for. http://meteor.com Tuesday, December 9, 14