Slide 1

Slide 1 text

The Story of 1.0 Emily Stark, core developer [email protected] @estark37 Tuesday, December 9, 14

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

QUICK APP DEMO http://meteor.com Tuesday, December 9, 14

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

Livequery scaling Problem: MongoDB doesn’t have an ‘observe’ operation http://meteor.com Tuesday, December 9, 14

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

Meteor packages Early 2014: time to build a package system http://meteor.com Tuesday, December 9, 14

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

Constraint solver • In 1.0: A* search http://meteor.com Tuesday, December 9, 14

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

Meteor packages Check out atmospherejs.com: community- supported frontend http://meteor.com Tuesday, December 9, 14

Slide 25

Slide 25 text

Mobile support $ meteor add-platform [ios|android] $ meteor run [ios|android] http://meteor.com Tuesday, December 9, 14

Slide 26

Slide 26 text

1.0: the non- technical side Incredibly supportive community: patient, eager to help test new features http://meteor.com Tuesday, December 9, 14

Slide 27

Slide 27 text

1.0: the non- technical side Worldwide Meteor Day 134 cities, 4259 attendees http://meteor.com Tuesday, December 9, 14

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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