$30 off During Our Annual Pro Sale. View Details »

Cross-Pollinating Communities: We all Win

Cross-Pollinating Communities: We all Win

You may have heard the quote, "Good artists copy, great artists steal."

Ember's origins were inspired by Cocoa. Ember has taken many cues from Rails, the biggest coming in the form of strong framework conventions. In 1.13, Ember's rendering engine was rewritten based on concepts pioneered by React. Instead of writing their own cli from the ground up, Angular has embraced ember-cli.

Let's examine past and future benefits of sharing ideas, and what it means for our favorite framework and our industry as a whole.

Chris Ball

March 29, 2016
Tweet

More Decks by Chris Ball

Other Decks in Programming

Transcript

  1. Cross-Pollinating Communities:
    We All Win
    cball_

    View Slide

  2. cball_
    “Good artists copy;
    great artists steal.”

    View Slide

  3. cball_

    View Slide

  4. cball_
    “I mean, Picasso had a saying. He
    said good artists copy; great artists
    steal. And we have always been
    shameless about stealing great
    ideas.”
    Steve Jobs
    Apple

    View Slide

  5. cball_
    “Good artists copy;
    great artists steal.”
    Pablo Picasso
    Painter

    View Slide

  6. cball_
    So if Picasso didn’t say it,
    who did?

    View Slide

  7. cball_
    “A good composer does not
    imitate; he steals.”
    Igor Stravinsky
    Composer

    View Slide

  8. cball_

    View Slide

  9. cball_
    “Immature artists copy,
    great artists steal.”
    William Faulkner
    Author

    View Slide

  10. cball_
    “Knowing what and
    when to steal is very
    much a part of the
    designer’s self-
    education.”
    William Faulkner
    Author

    View Slide

  11. cball_
    What does this mean?!?

    View Slide

  12. cball_
    Wait! these names sound
    familiar…

    View Slide

  13. cball_
    We are influenced by
    what has come before us.

    View Slide

  14. cball_
    Steal good ideas and make
    them your own.

    View Slide

  15. Chris Ball

    View Slide

  16. has “stolen” from
    1. Communities
    2. Communities that have “stolen” from
    is helping shape our industry
    3. How

    View Slide

  17. has “stolen” from
    1. Communities
    2. Communities that have “stolen” from
    is helping shape our industry
    3. How

    View Slide

  18. cball_

    View Slide

  19. cball_

    View Slide

  20. cball_
    Brought desktop-style
    MVC architecture

    View Slide

  21. cball_
    Brought desktop-style
    MVC architecture
    Component
    Template
    Route

    View Slide

  22. cball_
    KVO (key-value-observers)

    View Slide

  23. cball_
    get() and set()

    View Slide

  24. cball_
    Computed Properties!

    View Slide

  25. cball_

    View Slide

  26. cball_
    2011 - Rework of Sproutcore
    to support auto-updating templates.

    View Slide

  27. cball_
    2.0

    View Slide

  28. cball_
    "After a lot of soul-searching, we
    decided to start from scratch with
    SproutCore 2.0, taking with us the
    best, core ideas of SproutCore, but
    leaving the large, somewhat
    sprawling codebase behind."

    View Slide

  29. cball_
    2.0
    Amber.js

    View Slide

  30. cball_

    View Slide

  31. cball_
    http://yehudakatz.com/2011/12/08/
    announcing-amber-js/

    View Slide

  32. cball_

    View Slide

  33. cball_
    Convention over Configuration

    View Slide

  34. cball_
    Powerful Tooling

    View Slide

  35. cball_
    The Router

    View Slide

  36. cball_
    "Happy Developer" functions

    View Slide

  37. cball_

    View Slide

  38. cball_
    One-way bindings

    View Slide

  39. cball_
    Data down, Actions Up.

    View Slide

  40. cball_
    Virtual DOM, DOM Diffing

    View Slide

  41. cball_

    View Slide

  42. cball_

    View Slide

  43. cball_
    Lightweight Framework =
    lightweight functions.

    View Slide

  44. cball_
    modelForRoute
    modelDidLoad
    componentDidRender

    View Slide

  45. cball_
    model
    afterModel
    didRender

    View Slide

  46. cball_
    "With Ember.js, we've spent a lot
    of time borrowing liberally from
    concepts introduced by native
    application frameworks like
    Cocoa."

    View Slide

  47. cball_
    "When we felt those concepts were
    more hindrance than help - or
    didn't fit within the unique
    constraints of the web - we turned
    to other popular open source
    projects like Ruby on Rails and
    Backbone.js for inspiration."

    View Slide

  48. has “stolen” from
    1. Communities
    2. Communities that have “stolen” from
    is helping shape our industry
    3. How

    View Slide

  49. has “stolen” from
    1. Communities
    2. Communities that have “stolen” from
    is helping shape our industry
    3. How

    View Slide

  50. cball_

    View Slide

  51. cball_
    React Router

    View Slide

  52. cball_

    View Slide

  53. cball_

    View Slide

  54. cball_

    View Slide

  55. cball_

    View Slide

  56. cball_
    Likely others, not all projects state
    these things explicitly.

    View Slide

  57. has “stolen” from
    1. Communities
    2. Communities that have “stolen” from
    is helping shape our industry
    3. How

    View Slide

  58. has “stolen” from
    1. Communities
    2. Communities that have “stolen” from
    is helping shape our industry
    3. How

    View Slide

  59. cball_
    Promises

    View Slide

  60. cball_
    Web Components

    View Slide

  61. cball_

    View Slide

  62. cball_

    View Slide

  63. cball_
    TC39

    View Slide

  64. cball_
    Don't just create framework
    features; help out everyone.

    View Slide

  65. cball_
    Why does this matter?

    View Slide

  66. cball_
    Successful communities
    toggle between 2 modes on
    the path to greatness.

    View Slide

  67. cball_
    Mode 1: Experimentation
    aka “open mode”

    View Slide

  68. cball_
    Mode 2: Shared Solutions
    aka “closed mode”

    View Slide

  69. cball_
    Successful communities
    toggle between 2 modes on
    the path to greatness.

    View Slide

  70. cball_
    Successful communities
    toggle between 2 modes on
    the path to greatness.
    companies
    products
    developers
    designers etc

    View Slide

  71. cball_
    continues to
    innovate and iterate.

    View Slide

  72. cball_
    Um, yeah… I'm going
    to need you to go
    ahead and stick
    around for a few
    more years.

    View Slide

  73. cball_
    Build on what has come
    before you.

    View Slide

  74. cball_
    Look at other communities.

    View Slide

  75. cball_
    Look at other industries.

    View Slide

  76. cball_
    Be shameless about
    “stealing” good ideas.

    View Slide

  77. cball_
    Thanks!

    View Slide

  78. cball_
    http://networthhq.com/wp-content/uploads/2014/12/Pablo-Picasso.jpg
    Image Credits
    http://img.sxsw.com/2015/films/F52361.jpg
    https://en.wikipedia.org/wiki/File:Stravinsky_picasso.png
    http://cp91279.biography.com/
    1000509261001/1000509261001_1313105647001_Bio-Mini-Bio-Writers-Faulkner-
    SF.jpg
    https://developer.apple.com/library/mac/documentation/General/Conceptual/
    DevPedia-CocoaCore/Art/model_view_controller_2x.png

    View Slide

  79. cball_
    http://www.elementscompiler.com/images/screenshots/Oxygene-Home-Cocoa-Code.png
    Image Credits
    http://wisdump.com/wp-content/uploads/2008/06/mobileme.jpg
    http://7-themes.com/6934143-hammock-under-palms.html
    https://www.viget.com/uploads/image/blog/wwf-code-small.jpg
    http://blog.bugsnag.com/img/posts/react-code.png
    http://www.simingshanghai.com/uploadfile/2011061115464987151.jpg

    View Slide