< Return to Video

EmberConf 2015 - Opening Keynote

  • 0:17 - 0:20
    YEHUDA: Hey, so, EmberConf 2015
  • 0:20 - 0:22
    this is the second time we're doing EmberConf
  • 0:22 - 0:24
    and it's twice as big or something as last year
  • 0:24 - 0:28
    There are 625 plus attendees,
  • 0:28 - 0:29
    we didn't count everybody in here
  • 0:29 - 0:31
    but it looks full
  • 0:31 - 0:34
    and there are 625 seats in here, so, great
  • 0:34 - 0:37
    also Tom hand counted 25 countries
  • 0:37 - 0:38
    on the Excel spreadsheet, so...
  • 0:38 - 0:41
    TOM: Well, it's actually 24, but I consider
  • 0:41 - 0:44
    New Jersey it's own country, so
  • 0:44 - 0:47
    YEHUDA: We need the rimshot
  • 0:47 - 0:49
    So, Ember is actually doing really great
  • 0:49 - 0:52
    Ember is growing a lot in a lot of different ways
  • 0:52 - 0:54
    and we wanted to talk a little bit about that
  • 0:54 - 0:56
    just to start, so obviously as we said
  • 0:56 - 0:58
    there's more EmberConf attendees,
  • 0:58 - 0:59
    there's twice as many
  • 0:59 - 1:01
    every year when we decide to go with,
  • 1:01 - 1:03
    you know, 625, that's the number this year
  • 1:03 - 1:04
    we're like "are we going to be able to sell out"
  • 1:04 - 1:08
    and as usual it sold out super fast, right, so
  • 1:08 - 1:11
    great. There's more Ember CLI users,
  • 1:11 - 1:13
    way more than there were last year
  • 1:13 - 1:15
    when Ember CLI was barely a thing.
  • 1:15 - 1:17
    We announced it at EmberConf last year.
  • 1:17 - 1:19
    Way more addons, if you go to
  • 1:19 - 1:20
    emberaddons.com, there's hundreds
  • 1:20 - 1:22
    and hundreds of addons now for Ember.
  • 1:22 - 1:24
    There's also more apps, and I thought
  • 1:24 - 1:26
    we'd highlight a few of them, that
  • 1:26 - 1:28
    came out this year, apps that happened
  • 1:28 - 1:31
    this year. So first of all, Square Cash,
  • 1:31 - 1:33
    that's an Ember app you may not have known
  • 1:33 - 1:36
    about, yeah, go Square.
  • 1:36 - 1:38
    Heroku Dashboard, announced this year
  • 1:38 - 1:41
    TOM: Yeah! That is awesome.
  • 1:41 - 1:43
    YEHUDA: This is actually a really awesome app
  • 1:43 - 1:44
    I often see accolades on Twitter,
  • 1:44 - 1:46
    about the Heroku Dashboard,
  • 1:46 - 1:47
    people who may not know it's
  • 1:47 - 1:50
    an Ember app. Ghost switched to
  • 1:50 - 1:52
    Ember this year, so now it's another
  • 1:52 - 1:53
    big open source project using Ember.
  • 1:53 - 1:59
    The app Beatport, I think Tom
  • 1:59 - 2:00
    knows more about Beatport than me.
  • 2:00 - 2:01
    TOM: It's like a hip DJ thing, you
  • 2:01 - 2:03
    wouldn't really know about it.
  • 2:03 - 2:05
    [audience laughter]
  • 2:05 - 2:09
    Intercom.io, did a large rework in Ember
  • 2:09 - 2:13
    this year. Consul, which is like Hashicorp's
  • 2:13 - 2:16
    new thing, is written in Ember.
  • 2:16 - 2:18
    Customer.io is written in Ember,
  • 2:18 - 2:20
    and the Nest Store is written in Ember.
  • 2:20 - 2:22
    So a whole bunch of new apps that you may
  • 2:22 - 2:23
    have heard of that are written in Ember
  • 2:23 - 2:25
    and this is actually something that maybe
  • 2:25 - 2:26
    doesn't get captured that effectively
  • 2:26 - 2:27
    when you're looking at some random trend
  • 2:27 - 2:29
    graph that someone's passing around
  • 2:29 - 2:31
    is, how many really big apps end up
  • 2:31 - 2:32
    being written in Ember? Ember's really
  • 2:32 - 2:33
    competing in the big app space, and
  • 2:33 - 2:36
    we do really well in that space.
  • 2:36 - 2:39
    TOM: And, probably the biggest thing for me,
  • 2:39 - 2:42
    the most awesome thing, is seeing the
  • 2:42 - 2:45
    number of meetups, spring up around the
  • 2:45 - 2:47
    world, that list on the Ember Community page
  • 2:47 - 2:49
    listing all the different cities around the world
  • 2:49 - 2:51
    that have their own meetups. It's just been
  • 2:51 - 2:55
    really heartwarming. And, actually, today
  • 2:55 - 2:58
    we have a special guest, here, someone
  • 2:58 - 3:00
    who has been spending a lot of their time
  • 3:00 - 3:03
    travelling the world, sharing their love
  • 3:03 - 3:04
    about Ember.
  • 3:04 - 3:12
    [laughter, applause]
  • 3:12 - 3:14
    Tomster.
  • 3:14 - 3:17
    TOM: So, we will have an opportunity, we
  • 3:17 - 3:19
    have a photo booth, you will be able
  • 3:19 - 3:22
    to have your photo taken. Alright,
  • 3:22 - 3:24
    have to get you a little hamster
  • 3:24 - 3:27
    treadmill. Alright, so say hi to
  • 3:27 - 3:29
    Tomster everyone, he's here!
  • 3:29 - 3:32
    Alright.
  • 3:32 - 3:34
    YEHUDA: Thank you.
  • 3:34 - 3:36
    TOM: Thank you Tomster.
  • 3:36 - 3:38
    YEHUDA: And we had a little video
  • 3:38 - 3:39
    we put together, just to showcase
  • 3:39 - 3:41
    some of the awesome meetups
  • 3:41 - 3:42
    we've been having.
  • 4:34 - 4:35
    My name is Jamie, and I
  • 4:35 - 4:36
    run the Ember user group
  • 4:36 - 4:38
    here in London, England.
  • 4:38 - 4:40
    Hey, my name is Luke,
  • 4:40 - 4:41
    and I'm the organizer
  • 4:41 - 4:43
    of Ember.js NYC.
  • 4:43 - 4:45
    Hi, I'm Kait, with the
  • 4:45 - 4:47
    Ember Portland group.
  • 4:47 - 4:48
    I'm Carsten
  • 4:48 - 4:49
    Mattia
  • 4:49 - 4:49
    Jorge
  • 4:49 - 4:50
    And I'm Megan
  • 4:50 - 4:52
    And together with the trope
  • 4:52 - 4:52
    formerly known as
  • 4:52 - 4:54
    Robin Ward, we've been coordinating
  • 4:54 - 4:57
    with Toronto Ember.js user groups
  • 4:57 - 4:59
    since about November of 2012.
  • 4:59 - 5:01
    Our meetup started in 2012.
  • 5:01 - 5:05
    We have been doing this since 2012,
  • 5:05 - 5:06
    I think.
  • 5:06 - 5:07
    We have over 500 members
  • 5:07 - 5:08
    and growing.
  • 5:08 - 5:09
    We currently have just around
  • 5:09 - 5:12
    400 members and are continuing to grow.
  • 5:12 - 5:14
    We have roughly 220 members,
  • 5:14 - 5:16
    but we're growing a lot.
  • 5:16 - 5:19
    We have been consistent,
  • 5:19 - 5:20
    great talks, [..]
  • 5:20 - 5:21
    incredible community here in
  • 5:21 - 5:23
    New York. I have made so many
  • 5:23 - 5:25
    friends and met so many great people.
  • 5:25 - 5:29
    We also hold Ember Hacker Hours,
  • 5:29 - 5:30
    where members of the Ember community
  • 5:30 - 5:33
    can get together, learn and hack on
  • 5:33 - 5:34
    Ember with other developers,
  • 5:34 - 5:36
    while having a chance to socialize
  • 5:36 - 5:38
    and get to know other members
  • 5:38 - 5:39
    in the community.
  • 5:39 - 5:41
    We've held 28 events including meetups,
  • 5:41 - 5:43
    project nights and hackathons.
  • 6:03 - 6:07
    to have you come visit us. Bye!
  • 6:07 - 6:09
    Ember!
  • 6:09 - 6:11
    [applause]
  • Not Synced
    (You're on the big screen.) Cheers everybody.
  • Not Synced
    Long live Ember.
  • Not Synced
    [...] if I do scoot forward a little bit.
  • Not Synced
    What if we do something like
  • Not Synced
    where we just scooted forward all
  • Not Synced
    of the team? [..]
  • Not Synced
    What if we all like run by and scream
  • Not Synced
    happy things about Ember?
  • Not Synced
    Happy things about Ember.
  • Not Synced
    Or if we just say "yay!"
  • Not Synced
    Yay!
  • Not Synced
    [applause]
  • Not Synced
    TOM: Alright, thanks.
  • Not Synced
    Leah, Leah put that together.
  • Not Synced
    She sent out a request for all the little videos.
  • Not Synced
    It's really awesome to see,
  • Not Synced
    you know as a community run project,
  • Not Synced
    to see all these user groups springing up around the world.
  • Not Synced
    YEHUDA: And the next thing I want to talk about
  • Not Synced
    is the core team. And, so here's the core team
  • Not Synced
    today, it's a good group.
  • Not Synced
    One thing that I like to talk about,
  • Not Synced
    when I talk about the core team,
  • Not Synced
    is just how many different groups
  • Not Synced
    are represented here. It's not,
  • Not Synced
    one company that does most of the work.
  • Not Synced
    It's really a bunch of different companies.
  • Not Synced
    I like to think of Postgres as an examplar
  • Not Synced
    for me. I like our core team to be as many,
  • Not Synced
    as diverse as possible.
  • Not Synced
    And today, we're going to announce that
  • Not Synced
    we're adding 3 new people to the
  • Not Synced
    Ember Core team.
  • Not Synced
    [applause]
  • Not Synced
    These are 3 new people from 3 new
  • Not Synced
    companies who haven't previously been
  • Not Synced
    on the Ember Core team.
  • Not Synced
    And all three of them have been doing
  • Not Synced
    amazing work. Martin and "mixonic"
  • Not Synced
    have been doing great work on the
  • Not Synced
    HTMLBars engine, which has landed
  • Not Synced
    recently, we'll talk about that more.
  • Not Synced
    And Edward has actually done a lot of work,
  • Not Synced
    starting with Liquid Fire, which is a pretty
  • Not Synced
    awesome animation library if you
  • Not Synced
    haven't used it yet.
  • Not Synced
    Since he's been around the core team,
  • Not Synced
    he's been doing a lot of RFCs, and
  • Not Synced
    work in more general areas.
  • Not Synced
    So thank you, welcome to all three of them.
  • Not Synced
    TOM: Yeah. Give 'em a round of applause.
  • Not Synced
    [applause]
  • Not Synced
    TOM: So, since last year, hopefully many
  • Not Synced
    of you were here. We've been really busy.
  • Not Synced
    And we made a lot of promsies in that
  • Not Synced
    keynote, so we're gonna do a little bit
  • Not Synced
    of report card, if you will, and let you know
  • Not Synced
    what we tried, and what worked last year.
  • Not Synced
    So the first thing is rapid release.
  • Not Synced
    Last EmberConf, I think we were on version 1.4.
  • Not Synced
    So we had introduced this rapid release train
  • Not Synced
    model of releasing new versions.
  • Not Synced
    But we were only at version 4.
  • Not Synced
    And I'm here to report,
  • Not Synced
    I think you'll all agree with me.
  • Not Synced
    That model has been amazing.
  • Not Synced
    We are extremely happy with the results
  • Not Synced
    of having a six-week release cycle,
  • Not Synced
    so we can rapidly get new features
  • Not Synced
    into your hands, and you can use them
  • Not Synced
    as soon as possible.
  • Not Synced
    It's also been great for us,
  • Not Synced
    as maintainers, because it takes the pressure off.
  • Not Synced
    We know that if the feature's not ready,
  • Not Synced
    we don't have to rush to ship it
  • Not Synced
    in a big-bang release, we can just sneak
  • Not Synced
    it into the next train.
  • Not Synced
    YEHUDA: And when we started to do this,
  • Not Synced
    we basically had Chrome and Firefox as models,
  • Not Synced
    but now you're starting to see other projects,
  • Not Synced
    like the Rust project has recently announced
  • Not Synced
    that they're also going to do this rapid release
  • Not Synced
    project. So it's great that we were able to do
  • Not Synced
    a little R&D, to see if this thing that works well
  • Not Synced
    for browser engines could work outside
  • Not Synced
    of the browser space. But it's worked really great.
  • Not Synced
    And here's an example tweet,
  • Not Synced
    there's tons of tweets like this,
  • Not Synced
    of people who go from a pretty early version
  • Not Synced
    and then jump directly through many versions.
  • Not Synced
    Obviously we're in a dynamic language,
  • Not Synced
    JavaScript, and you can do a lot of stuff,
  • Not Synced
    so you know, you may have ended up doing
  • Not Synced
    something using some private API
  • Not Synced
    that wasn't expected,
  • Not Synced
    or doing something we didn't expect.
  • Not Synced
    But for the most part,
  • Not Synced
    people have a really good time upgrading,
  • Not Synced
    even though we've been releasing a huge
  • Not Synced
    amount of releases. And that's, that's really,
  • Not Synced
    we're very proud of that.
  • Not Synced
    TOM: And if you're not doing it already,
  • Not Synced
    I would really encourage you,
  • Not Synced
    all your Ember apps at work,
  • Not Synced
    or at home, subscribe to the beta channel.
  • Not Synced
    When a new beta comes out, please
  • Not Synced
    test it on your app and let us know
  • Not Synced
    if it breaks anything. That's really
  • Not Synced
    the only way we can know and we
  • Not Synced
    really rely on that beta process,
  • Not Synced
    and you filing any bugs, any regressions
  • Not Synced
    that you run into.
  • Not Synced
    YEHUDA: We effectively rely on people
  • Not Synced
    complaining a lot during the beta process
  • Not Synced
    so by the time it makes it to the release process
  • Not Synced
    the bugs have been ironed out.
  • Not Synced
    Specifically compatibility issues.
  • Not Synced
    TOM: Please don't feel like a jerk
  • Not Synced
    for complaining.
  • Not Synced
    It's actually, it's not a bug, it's a feature.
  • Not Synced
    And we couldn't do this without Robert Jackson.
  • Not Synced
    Robert Jackson has been, [applause]
  • Not Synced
    Robert has been the conductor
  • Not Synced
    of the release train for a long time,
  • Not Synced
    it makes me a little bit nervous,
  • Not Synced
    if he gets hit by a bus we should
  • Not Synced
    all pack it up and go home.
  • Not Synced
    It's not going to be pretty.
  • Not Synced
    So thank you very much Robert.
  • Not Synced
    If any of you see him out, tonight,
  • Not Synced
    or during the conference,
  • Not Synced
    please feel free to get him a beer,
  • Not Synced
    as suggested by getrwjblueabeer.com
  • Not Synced
    YEHUDA: One thing we added to the rapid release
  • Not Synced
    process, and this was something we actually got
  • Not Synced
    from the Rust project, is adding a process
  • Not Synced
    of RFCs. So we have the three Tomster bust,
  • Not Synced
    and this is the "blueprint" Tomster bust,
  • Not Synced
    that represents the RFC process.
  • Not Synced
    But if you look, there's a couple dozen
  • Not Synced
    RFCs now that were contributed by
  • Not Synced
    people on the core team, also
  • Not Synced
    community members. And this is the
  • Not Synced
    point where people have an opportunity
  • Not Synced
    to propose new ideas, and get some
  • Not Synced
    feedback before people go to implement.
  • Not Synced
    One thing that's really great about RFCs,
  • Not Synced
    is that not everyone necessarily has
  • Not Synced
    the chops to go in and do some
  • Not Synced
    deep implementation work, but RFCs
  • Not Synced
    are an opportunity for someone to give
  • Not Synced
    a high level idea, and get really detailed
  • Not Synced
    technical feedback on feasibility.
  • Not Synced
    You can throw something out there and
  • Not Synced
    get people who know the area to check
  • Not Synced
    you and make sure it makes sense
  • Not Synced
    before you go and do implementation work.
  • Not Synced
    So this is a great addition to the process.
  • Not Synced
    TOM: So, we talked a little about process.
  • Not Synced
    Let's talk about some of the features that we've landed.
  • Not Synced
    Probably the biggest one, the one
  • Not Synced
    that was certainly the most hyped up
  • Not Synced
    at EmberConf last year,
  • Not Synced
    was HTMLBars.
  • Not Synced
    So how did we do?
  • Not Synced
    Well, we landed it.
  • Not Synced
    It's out. The latest released version of Ember,
  • Not Synced
    now contains HTMLBars. And we're very happy.
  • Not Synced
    It took a little bit longer than we wanted it to take
  • Not Synced
    admittedly, but we're very happy with
  • Not Synced
    the results.
  • Not Synced
    YEHUDA: So the first thing that it does,
  • Not Synced
    just to remind you what HTMLBars
  • Not Synced
    was about, since we, I think
  • Not Synced
    announced it at the last EmberConf
  • Not Synced
    and it took until now to release.
  • Not Synced
    So, the biggest thing that this did
  • Not Synced
    was remove this dreaded syntax
  • Not Synced
    and replaces it with this.
  • Not Synced
    So that's pretty great.
  • Not Synced
    [applause]
  • Not Synced
    And that feature, that particular feature,
  • Not Synced
    lands in the 1.11 beta, so if you get
  • Not Synced
    the beta channel right now, you can
  • Not Synced
    go and change all of your bind-attrs
  • Not Synced
    in your app. I've done that in my app
  • Not Synced
    and it's very, very nice.
  • Not Synced
    The next big feature, and this wasn't part of the
  • Not Synced
    original idea for HTMLBars, but it sort of
  • Not Synced
    came along with it as Handlebars itself
  • Not Synced
    progressed. If you look at existing Ember,
  • Not Synced
    you'll see that there's a few different ways
  • Not Synced
    that in Ember you can have a block
  • Not Synced
    that has some additional context
  • Not Synced
    that gets used inside of it.
  • Not Synced
    So we have "each item in list",
  • Not Synced
    we have "with long.title as t",
  • Not Synced
    and then we have components,
  • Not Synced
    which don't really have any good way
  • Not Synced
    of having the component provide anything
  • Not Synced
    inside of the block that you're using.
  • Not Synced
    And these three ended up feeling very similar,
  • Not Synced
    in programming languages, these things
  • Not Synced
    are just functions that take parameters.
  • Not Synced
    What we've done is unify that into one API,
  • Not Synced
    which is block parameters. [applause]
  • Not Synced
    You can use the syntax today, it actually landed.
  • Not Synced
    One thing to note is that these block params
  • Not Synced
    for components, are not just something that is
  • Not Synced
    magic inside of Ember. Any component can
  • Not Synced
    just yield anything.
  • Not Synced
    When you say "yield day" over there,
  • Not Synced
    that just means that that becomes the
  • Not Synced
    block parameter for the outer component.
  • Not Synced
    Right, so this is very easy, it's trivial to use,
  • Not Synced
    and it basically gives you the feature that
  • Not Synced
    you need and it already landed in 1.10.
  • Not Synced
    So this is very exciting.
  • Not Synced
    The last thing that HTMLBars does in theory,
  • Not Synced
    although this has not landed yet,
  • Not Synced
    is it allows you to take components
  • Not Synced
    that look like this,
  • Not Synced
    and convert them into components
  • Not Synced
    that look like this.
  • Not Synced
    That actually exists in Canary, but there's
  • Not Synced
    some details to work out about exactly,
  • Not Synced
    precisely how this works.
  • Not Synced
    But the HTMLBars engine enables the capability
  • Not Synced
    of doing this, and that's something we're all very
  • Not Synced
    excited about.
  • Not Synced
    TOM: It's also allowed us to have a rendering
  • Not Synced
    engine that's significantly faster than it was before,
  • Not Synced
    And uses less memory.
  • Not Synced
    So hopefully if you've upgraded to the newest
  • Not Synced
    release that contains HTMLBars,
  • Not Synced
    you should see better performance
  • Not Synced
    across the board and reduced memory usage.
  • Not Synced
    And you should expect to see us continue
  • Not Synced
    to iterate on that performance and memory
  • Not Synced
    benefits that HTMLBars gives us as we
  • Not Synced
    proceed through the release cycle.
  • Not Synced
    YEHUDA: The tl;dr is basically just,
  • Not Synced
    rebuilding the rendering engine
  • Not Synced
    from the bottom up gave us a lot
  • Not Synced
    of headroom to make additional changes.
  • Not Synced
    TOM: And then it turns out that having
  • Not Synced
    an HTML parser is useful for a lot more
  • Not Synced
    reasons than just implementing the rendering
  • Not Synced
    engine. For one thing, it turns out
  • Not Synced
    that I am a very bad programmer,
  • Not Synced
    and I malform my HTML all the time.
  • Not Synced
    Unfortunately, Good Guy Browser decides
  • Not Synced
    that that's awesome, and just proceeds as
  • Not Synced
    though nothing was wrong, and tries
  • Not Synced
    to have my back. Unfortunately,
  • Not Synced
    it's not really doing me a favor.
  • Not Synced
    So one of my favourite features of HTMLBars,
  • Not Synced
    is that at compile-time, we can tell you
  • Not Synced
    that you have malformed HTML in your app
  • Not Synced
    and give you a warning before you start debugging
  • Not Synced
    weird errors in production.
  • Not Synced
    YEHUDA: And actually, one thing to keep
  • Not Synced
    in mind about our HTML engine-- parser,
  • Not Synced
    is that it's a fully compliant HTML
  • Not Synced
    parser. So any HTML that wasn't an error
  • Not Synced
    in the first place, that you copied-and-pasted
  • Not Synced
    in, you don't have to learn a new syntax
  • Not Synced
    or anything, it basically just works,
  • Not Synced
    but we've implemented a parser that's compliant.
  • Not Synced
    And finally, this is a thing
  • Not Synced
    that sucks. Maybe if you've only started
  • Not Synced
    using Ember really recently, you haven't
  • Not Synced
    experienced this, but we have basically killed
  • Not Synced
    the metamorph tag.
  • Not Synced
    [applause]
  • Not Synced
    TOM: Gone baby gone.
  • Not Synced
    YEHUDA: Now the next big feature that we did,
  • Not Synced
    and I remember, we had already got the inspector
  • Not Synced
    working at last year's EmberConf,
  • Not Synced
    but we've made a huge amount of progress since then.
  • Not Synced
    So, one thing that really stuck in my craw,
  • Not Synced
    a lot was I would often be using the wrong version
  • Not Synced
    of jQuery or something, and just not know.
  • Not Synced
    And I would be like, it really feels like the
  • Not Synced
    inspector could just put an info tab that
  • Not Synced
    tells me all the things that's going on.
  • Not Synced
    So we did that pretty early last year
  • Not Synced
    And this is something that's extensible,
  • Not Synced
    so any plugin, an addon, can basically
  • Not Synced
    put additional stuff into this pane
  • Not Synced
    to give you an idea of what versions are running.
  • Not Synced
    So this is, small, but it's something
  • Not Synced
    that I've spent a lot of time failing
  • Not Synced
    due to not having in the past.
  • Not Synced
    Second of all, the Ember Data pane
  • Not Synced
    has gotten a lot better, and this is
  • Not Synced
    just you can see we've gone to the
  • Not Synced
    Nest website and we're just looking
  • Not Synced
    at a product here.
  • Not Synced
    Basically it works really well,
  • Not Synced
    so, I don't really have anything else to
  • Not Synced
    say on Ember Data, other than it works,
  • Not Synced
    the inspector works great.
  • Not Synced
    Also the promises pane, I think was
  • Not Synced
    either not working last year or barely
  • Not Synced
    working, and it's gotten a lot better
  • Not Synced
    since last year. If you've ever had to
  • Not Synced
    deal with debugging promises,
  • Not Synced
    the fact that you can go in here and see all
  • Not Synced
    the promises, which ones were rejected,
  • Not Synced
    you can get stack traces.
  • Not Synced
    All that stuff is pretty awesome,
  • Not Synced
    given that you're dealing with
  • Not Synced
    asynchronous stuff that inherently
  • Not Synced
    is harder to debug.
  • Not Synced
    And finally,
  • Not Synced
    we also have a Render Performance tab,
  • Not Synced
    Robin Ward contributed this.
  • Not Synced
    And this basically will just show you
  • Not Synced
    for any given rendering, what happened
  • Not Synced
    and what took time. So you can drill down,
  • Not Synced
    and say "okay, I can see that this little
  • Not Synced
    area is a thing that took 100ms" and
  • Not Synced
    go and optimize that area.
  • Not Synced
    And we couldn't really cover everything,
  • Not Synced
    but there's been a huge amount of inspector
  • Not Synced
    improvements over the past year,
  • Not Synced
    including things like Firefox support,
  • Not Synced
    changing the UI, having a navbar
  • Not Synced
    that tells you if Ember is running
  • Not Synced
    on a particular page, that you can
  • Not Synced
    turn on the options, these are all great.
  • Not Synced
    The bookmarklet is actually maybe my favourite feature.
  • Not Synced
    You can put the Ember Inspector as a bookmarklet,
  • Not Synced
    into like Internet Explorer or something,
  • Not Synced
    and have it work -- or Safari.
  • Not Synced
    So, those are all great.
  • Not Synced
    And I just want to thank @teddyzeenny,
  • Not Synced
    who's really been,
  • Not Synced
    who's actually at EmberConf
  • Not Synced
    for the first time year.
  • Not Synced
    [applause]
  • Not Synced
    TOM: First time. If you see Teddy around,
  • Not Synced
    please give him a big thank you. I don't
  • Not Synced
    know if he drinks beer, but if he drinks
  • Not Synced
    beer buy him a beer, if not, maybe like
  • Not Synced
    a tea or something. He's poured in a ton
  • Not Synced
    of work and I personally benefit from using
  • Not Synced
    this tool every day, so big thanks to Teddy.
  • Not Synced
    The other thing that's obviously huge,
  • Not Synced
    and was actually just in it's infancy at
  • Not Synced
    EmberConf last year,
  • Not Synced
    is Ember CLI. Which is a little bit
  • Not Synced
    crazy to think about, because it's become
  • Not Synced
    such an integral part of the community's workflow.
  • Not Synced
    And we won't get into too much detail here, but
  • Not Synced
    there are so many great new features
  • Not Synced
    that have been worked on over the last year.
  • Not Synced
    It's been a huge theme of people working on it,
  • Not Synced
    I think the biggest thing to come out
  • Not Synced
    of Ember CLI obviously has been an addon
  • Not Synced
    ecosystem. Ember itself was a very
  • Not Synced
    opinionated framework about how you
  • Not Synced
    should build and architect your web applications
  • Not Synced
    but when it came time to actually build
  • Not Synced
    those things for production, wire all
  • Not Synced
    your assets together. I know many
  • Not Synced
    of you in the audience have personally
  • Not Synced
    spent weeks in meetings deciding
  • Not Synced
    which tools to use.
  • Not Synced
    Steve. [laughter]
  • Not Synced
    So what's really great about having
  • Not Synced
    a conventional structure, is that once as a community
  • Not Synced
    we agree on that conventional structure,
  • Not Synced
    we can start to build addons on top of it.
  • Not Synced
    And there have been some awesome addons
  • Not Synced
    released over the last year.
  • Not Synced
    So if you want CSS pre-processing,
  • Not Synced
    like Sass, or others,
  • Not Synced
    if you want to deploy to hosting,
  • Not Synced
    if you want to integrate real time
  • Not Synced
    data updates. All of these things are
  • Not Synced
    just a single install command away.
  • Not Synced
    It was stuff that took half an hour
  • Not Synced
    to an hour to set up before,
  • Not Synced
    now you can do in seconds.
  • Not Synced
    And I've noticed myself working on
  • Not Synced
    more side projects on the weekends,
  • Not Synced
    because before I'd be like
  • Not Synced
    "well I don't really want to spend 6 hours
  • Not Synced
    setting up Grunt, so maybe I'll just
  • Not Synced
    go outside instead". [laughter]
  • Not Synced
    But now, in literally 30 seconds,
  • Not Synced
    I can have a new app up and running
  • Not Synced
    and that is a tremendously liberating
  • Not Synced
    thing.
  • Not Synced
    YEHUDA: And even though we don't personally like
  • Not Synced
    CoffeeScript in our own projects, the fact that it's
  • Not Synced
    so easy to make a CoffeeScript addon and use
  • Not Synced
    it in your own projects, is pretty nice also.
  • Not Synced
    TOM: Yeah. The team has been doing amazing
  • Not Synced
    work to make the addon system very flexible.
  • Not Synced
    So really anything you could possibly want to
  • Not Synced
    augment Ember CLI to do, it's possible.
  • Not Synced
    You can add new generators, new blueprints,
  • Not Synced
    you can shim in to add CLI commands,
  • Not Synced
    you can add test outputs, so you can
  • Not Synced
    add whatever test harness you want
  • Not Synced
    if QUnit is not to your taste.
  • Not Synced
    It's super flexible, but
  • Not Synced
    super easy out of the box as well.
  • Not Synced
    So we'd like to give a
  • Not Synced
    big thank you to the Ember CLI team
  • Not Synced
    unfortunately there's been way more
  • Not Synced
    people working on it than we can
  • Not Synced
    thank. [applause]
  • Not Synced
    So the next thing I want to talk about
  • Not Synced
    is just testing in general. So there was
  • Not Synced
    a point in time when Ember had a
  • Not Synced
    reputation as being hard to test,
  • Not Synced
    or that it wasn't test-first.
  • Not Synced
    And I'm happy to report that in 2015,
  • Not Synced
    you can just (well we did this in 2014,
  • Not Synced
    now it's 2015) at the end of 2014
  • Not Synced
    now into 2015, I'm happy to report to you
  • Not Synced
    today, that Ember has an awesome testing story.
  • Not Synced
    Out of the box we have a really simple, expressive
  • Not Synced
    API for doing asynchronous integration testing.
  • Not Synced
    All of these helpers are built in,
  • Not Synced
    you get them out of the box with Ember CLI.
  • Not Synced
    Anyone, even if they're not an Ember developer
  • Not Synced
    can drop in and pretty much understand what's
  • Not Synced
    going on here. And they're instrumented
  • Not Synced
    using promises under the hood.
  • Not Synced
    So it handles asynchrony really elegantly.
  • Not Synced
    And we also have a really awesome unit testing API
  • Not Synced
    this is an example of a unit test for a component.
  • Not Synced
    And again, very expressive.
  • Not Synced
    Handles asynchrony in a very elegant way.
  • Not Synced
    And we've got some awesome plans to improve
  • Not Synced
    even more in 2015.
  • Not Synced
    YEHUDA: There's not much to say here, except
  • Not Synced
    that it sucked that in EmberConf 2014,
  • Not Synced
    Query Params hadn't landed yet, and I
  • Not Synced
    remember @machty gave a big talk about
  • Not Synced
    why it was taking so long, and I'm glad
  • Not Synced
    that it landed early in 2014 and we now
  • Not Synced
    have Query Params support in Ember.
  • Not Synced
    TOM: It still surprises me how easy it is,
  • Not Synced
    I'm like, "man I really wish I could
  • Not Synced
    persist the sorting of this list" and it's
  • Not Synced
    literally one line of code and it works.
  • Not Synced
    It's really amazing. Great job @machty.
  • Not Synced
    YEHUDA: We also during the last year
  • Not Synced
    changed all of our internals to use
  • Not Synced
    JavaScript modules, and we also now
  • Not Synced
    via Ember CLI, all new Ember apps
  • Not Synced
    use JavaScript modules. We were actually
  • Not Synced
    really early adopters of this.
  • Not Synced
    We've been through a lot of changes in the syntax,
  • Not Synced
    but we were also able to drive a lot of the process
  • Not Synced
    of making the JavaScript module spec awesome.
  • Not Synced
    So, that's great, and really I'm very thankful to the
  • Not Synced
    community for having got hitched their wagon on
  • Not Synced
    to my quixotic quest to get JavaScript modules
  • Not Synced
    awesome in TC39 by helping to make it awesome.
  • Not Synced
    So thank you very much.
  • Not Synced
    YEHUDA: I can talk about Ember Data?
  • Not Synced
    So Ember Data has actually been a thing
  • Not Synced
    we knew we needed from the beginning,
  • Not Synced
    we needed a data framework,
  • Not Synced
    and it's actually gone through a number
  • Not Synced
    of different iterations.
  • Not Synced
    The most recent iteration has been a fairly
  • Not Synced
    big rethink that took into consideration
  • Not Synced
    all the things we learned over the past few years
  • Not Synced
    and I would say that the number one thing
  • Not Synced
    that was problematic about all the
  • Not Synced
    previous versions of Ember Data
  • Not Synced
    until this one was how exactly
  • Not Synced
    relationships work.
  • Not Synced
    Now one thing to keep in mind,
  • Not Synced
    is that on the server, it's actually very easy,
  • Not Synced
    because any time you want to get a
  • Not Synced
    relationship, you can stop the world,
  • Not Synced
    go to your database, get your
  • Not Synced
    relationship, come back to it and
  • Not Synced
    do whatever you need to do.
  • Not Synced
    But in the browser of course,
  • Not Synced
    any data could come in asynchronously
  • Not Synced
    at any time, you could make any fetches
  • Not Synced
    for any data asynchronously at any point.
  • Not Synced
    I think that most people start with something like this,
  • Not Synced
    they start with loading all their data at one time,
  • Not Synced
    and they have a Post object and a few Comments,
  • Not Synced
    and of course, if all your data gets loaded at the same time,
  • Not Synced
    it's very easy to do this,
  • Not Synced
    you basically just say
  • Not Synced
    "post dot comments equals your array"
  • Not Synced
    and then you set the post for each comment.
  • Not Synced
    But very quickly, when people are building apps,
  • Not Synced
    they don't load everything at once, they load
  • Not Synced
    something first and they get relationships on demand.
  • Not Synced
    So obviously you want to start
  • Not Synced
    "post dot comments equals an empty array",
  • Not Synced
    and then when you get your comments
  • Not Synced
    you want to go and modify it so it has the right thing.
  • Not Synced
    If you were doing this by hand,
  • Not Synced
    you'd have to remember to do this when
  • Not Synced
    you got the comments in.
  • Not Synced
    Now what about what happens when you get
  • Not Synced
    a few comments loaded first? Obviously,
  • Not Synced
    you don't have a Post yet, so when the
  • Not Synced
    Post comes in you want to be updating
  • Not Synced
    the comments so they have the right thing,
  • Not Synced
    so that seems easy enough,
  • Not Synced
    but what happens if you get a comment later?
  • Not Synced
    Now of course you want to make sure
  • Not Synced
    that you update your post as well.
  • Not Synced
    So the point is, the tl;dr of all this is,
  • Not Synced
    data can come at any time and people
  • Not Synced
    really do expect two-way relationships
  • Not Synced
    to remain in sync. And this ended up
  • Not Synced
    being a large quest that took multiple years
  • Not Synced
    to get right, I think largely because we just
  • Not Synced
    made mistakes through a few of
  • Not Synced
    the iterations, and the last effort,
  • Not Synced
    which was called the
  • Not Synced
    "Single Source of Truth" or SSOT branch,
  • Not Synced
    that landed in 2014, and I think
  • Not Synced
    that's a good starting point for us
  • Not Synced
    to make additional progress.
  • Not Synced
    And just in general, one of the things
  • Not Synced
    that came out of that was that we always
  • Not Synced
    were really trying hard to have
  • Not Synced
    relationship computed properties
  • Not Synced
    in Ember Data be synchronous,
  • Not Synced
    because we thought people would want that,
  • Not Synced
    or, we thought people would feel like if they
  • Not Synced
    loaded all their data at once, at first
  • Not Synced
    it would feel bad for them to be asynchronous.
  • Not Synced
    What we found over time was that it was
  • Not Synced
    causing more confusion than help to
  • Not Synced
    let relationships sometimes be synchronous
  • Not Synced
    and sometimes asynchronous,
  • Not Synced
    so in Ember Data, now, relationships
  • Not Synced
    are pretty much always asynchronous
  • Not Synced
    and that's something that we spent some
  • Not Synced
    time recently on. And what that means
  • Not Synced
    is that the relationship system in
  • Not Synced
    Ember Data is built with async loading in mind,
  • Not Synced
    where earlier on I think we were avoiding
  • Not Synced
    forcing async loading into the model,
  • Not Synced
    but I think it ended up being more confusing
  • Not Synced
    than it helped.
  • Not Synced
    And finally, one thing that really came out
  • Not Synced
    of having Ember Data at all, is that
  • Not Synced
    we've formed a pretty good adapter ecosystem,
  • Not Synced
    so any general purpose server like
  • Not Synced
    Firebase, or Parse, or CouchDB, or Rails,
  • Not Synced
    people end up building adapters for it
  • Not Synced
    that you can pretty much just drop in
  • Not Synced
    and do a little bit of configuration if you
  • Not Synced
    need to. And that ended up being pretty great,
  • Not Synced
    because it means if you just want to use
  • Not Synced
    Firebase, or Parse, or any of these things,
  • Not Synced
    there's something that's built-in, and
  • Not Synced
    it's not a totally different programming model,
  • Not Synced
    it's not like "use the Parse API in Ember Data",
  • Not Synced
    it's just like "use the regular Ember Data
  • Not Synced
    API and the adapter will handle it behind the scenes".
  • Not Synced
    So, Tom and I have been busy with Ember,
  • Not Synced
    Igor basically took over the reins of
  • Not Synced
    Ember Data after we moved on to Ember
  • Not Synced
    to work on Ember more aggressively,
  • Not Synced
    and Igor's basically been doing the heavy lifting
  • Not Synced
    there for a year or more,
  • Not Synced
    so thank you very much Igor. [applause]
  • Not Synced
    And finally, just in general,
  • Not Synced
    I touched on this a little earlier,
  • Not Synced
    But we've really been an early adopter
  • Not Synced
    of ES6 features, things like promises and modules,
  • Not Synced
    and that has really filtered back into the
  • Not Synced
    standards process. Obviously,
  • Not Synced
    ES6 you may have heard is now called ES2015,
  • Not Synced
    but I think the point is that we plan to
  • Not Synced
    continue being an early adopter of features
  • Not Synced
    in the future, so we plan to be an early adopter
  • Not Synced
    of ES2016 features and 2017 features, obviously
  • Not Synced
    to the extent we think that they're stable and
  • Not Synced
    pretty much landed, and the standards process
  • Not Synced
    has really improved to make that something that you
  • Not Synced
    can feel careful about, so we're going to keep doing that.
  • Not Synced
    TOM: So that's what happened last year,
  • Not Synced
    and I think you'll agree we made a lot of
  • Not Synced
    pretty crazy promises, and we've largely delivered on them.
  • Not Synced
    Almost everything that we said was going
  • Not Synced
    to be coming in the year has come,
  • Not Synced
    so hopefully at this point we have a
  • Not Synced
    track record of shipping, maybe off by a couple months,
  • Not Synced
    but the point is, we shipped.
  • Not Synced
    And I think you should rest assured,
  • Not Synced
    that the stuff we talk to you about next,
  • Not Synced
    we are going to ship, and it's going
  • Not Synced
    to be in your hands for you to use over the next year.
  • Not Synced
    So what's next for Ember in 2015?
  • Not Synced
    Well, the first one is I'm very happy to announce
  • Not Synced
    that we're switching to a versioned guide system.
  • Not Synced
    So going forward, (yeah!) the guides will be versioned.
  • Not Synced
    And a big thank you, @trek and Brian Clifton
  • Not Synced
    have been working their tushes off getting
  • Not Synced
    this feature ready. So this is live today.
  • Not Synced
    If you go to guides.emberjs.com, you'll see
  • Not Synced
    it redirect you. Here's a lovely screenshot.
  • Not Synced
    And, here's a link you can type into the address
  • Not Synced
    bar of your browser.
  • Not Synced
    YEHUDA: Turns out that URLs are a good idea.
  • Not Synced
    TOM: As it turns out.
  • Not Synced
    So we're very excited about this, because it
  • Not Synced
    will give us the freedom to update more rapidly
  • Not Synced
    update the guides without feeling like we may
  • Not Synced
    be leaving people on older versions behind
  • Not Synced
    if they happen to be stuck on an older version.
  • Not Synced
    And, even more importantly,
  • Not Synced
    and the thing I'm most excited about,
  • Not Synced
    is that we ae bringing all the guides
  • Not Synced
    up to date to use Ember CLI semantics.
  • Not Synced
    So the happy path using Ember, out of the box,
  • Not Synced
    is going to be using Ember CLI.
  • Not Synced
    You won't have to have someone tweeting at you
  • Not Synced
    three weeks after you start using Ember,
  • Not Synced
    being like "why are you not using Ember CLI?
  • Not Synced
    You should just use it", and you're like,
  • Not Synced
    "well maybe you should mention that on the website!"
  • Not Synced
    Hmm.
  • Not Synced
    YEHUDA: Now that you mention it.
  • Not Synced
    TOM: Good point.
  • Not Synced
    So, as of last night, many of you
  • Not Synced
    I thought you would all be out at the bars,
  • Not Synced
    but many of you were at home
  • Not Synced
    compulsively refreshing the Ember.js website.
  • Not Synced
    [laughter]
  • Not Synced
    You've noticed that we've removed the
  • Not Synced
    Starter Package, the Starter Kit,
  • Not Synced
    and now we just instruct people to use
  • Not Synced
    Ember CLi, the next version, all the guides
  • Not Synced
    are going to be updated to use ES6 modules,
  • Not Synced
    and Ember CLI. It should be really awesome.
  • Not Synced
    YEHUDA: Now the next big feature,
  • Not Synced
    this is something that is still in the RFC process,
  • Not Synced
    Tom and I wrote this RFC several months ago,
  • Not Synced
    but this is basically just the ability to
  • Not Synced
    take a piece of an application in a big team
  • Not Synced
    and have it be fully encapsulated with namespaces
  • Not Synced
    and everything, so that if you have a company
  • Not Synced
    with a number of teams on it
  • Not Synced
    and you have teams working on one piece,
  • Not Synced
    teams working on another piece,
  • Not Synced
    people have worked out how to make this work
  • Not Synced
    in sort of ad-hoc ways, and this feature is about
  • Not Synced
    making an official way to do that in a reliable way.
  • Not Synced
    This is something that companies that end up
  • Not Synced
    adopting Ember and have a lot of teams
  • Not Synced
    have asked us a lot, pretty much any time
  • Not Synced
    we ever do any consulting at a company of that size
  • Not Synced
    it's like the number one feature request.
  • Not Synced
    So I'm excited that this will be landing as
  • Not Synced
    soon as it gets through the RFC process.
Title:
EmberConf 2015 - Opening Keynote
Description:

more » « less
Video Language:
English, British

English subtitles

Incomplete

Revisions