Meteor 1.0, Emily Stark (Talks at Sourcegraph)

119fb96cbee42c286bbcc2661a9f1a63?s=47 Sourcegraph
December 04, 2014
2.1k

Meteor 1.0, Emily Stark (Talks at Sourcegraph)

119fb96cbee42c286bbcc2661a9f1a63?s=128

Sourcegraph

December 04, 2014
Tweet

Transcript

  1. The Story of 1.0 Emily Stark, core developer emily@meteor.com @estark37

    Tuesday, December 9, 14
  2. 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
  3. QUICK APP DEMO http://meteor.com Tuesday, December 9, 14

  4. 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
  5. 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
  6. 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
  7. Livequery scaling Problem: MongoDB doesn’t have an ‘observe’ operation http://meteor.com

    Tuesday, December 9, 14
  8. Livequery scaling Original strategy: poll-and-diff :( http://meteor.com Tuesday, December 9,

    14
  9. Livequery scaling New strategy: oplog tailing http://meteor.com Tuesday, December 9,

    14
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. Meteor packages Early 2014: time to build a package system

    http://meteor.com Tuesday, December 9, 14
  18. 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
  19. 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
  20. Constraint solver • In 1.0: A* search http://meteor.com Tuesday, December

    9, 14
  21. 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
  22. 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
  23. 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
  24. Meteor packages Check out atmospherejs.com: community- supported frontend http://meteor.com Tuesday,

    December 9, 14
  25. Mobile support $ meteor add-platform [ios|android] $ meteor run [ios|android]

    http://meteor.com Tuesday, December 9, 14
  26. 1.0: the non- technical side Incredibly supportive community: patient, eager

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

    4259 attendees http://meteor.com Tuesday, December 9, 14
  28. Thank you! Questions? Ask me now! Or emily@meteor.com, or @estark37

    Thanks to David Glasser, Slava Kim, Sashko Stubailo, Matt Arbesfeld, other Meteor coworkers! http://meteor.com Tuesday, December 9, 14
  29. 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