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

Future of APIs

Z
December 13, 2016

Future of APIs

The deck I've used during my talk at API Days Paris 2016.

Z

December 13, 2016
Tweet

More Decks by Z

Other Decks in Programming

Transcript

  1. FUTURE OF APIs
    On API Design and the future of API Description formats
    Z (@zdne)
    goodapi.co
    GOOD
    API

    View Slide

  2. Zdenek “Z” Nemec
    goodapi.co
    @zdne
    zdne1
    GOOD
    API
    apiary.io

    View Slide

  3. THE FUTURE OF APIs
    GOOD
    API

    View Slide

  4. YEAR 1770
    The TURK
    GOOD
    API

    View Slide

  5. Wolfgang von Kempelen
    GOOD
    API

    View Slide

  6. GOOD
    API

    View Slide

  7. GOOD
    API

    View Slide

  8. GOOD
    API
    MECHANICAL TURK

    View Slide

  9. YEAR 1963
    The ALIENS
    GOOD
    API

    View Slide

  10. Joseph Carl Robnett Licklider
    GOOD
    API

    View Slide

  11. COMMUNICATING WITH
    ALIENS PROBLEM
    GOOD
    API

    View Slide

  12. Memorandum For Members and Affiliates
    of the Intergalactic Computer Network
    Consider the situation in which several different centers are netted
    together, each center being highly individualistic and having its
    own special language and its own special way of doing things. Is it
    not desirable, or even necessary for all the centers to agree upon
    some language or, at least, upon some conventions for asking such
    questions as “What language do you speak?” At this extreme, the
    problem is essentially the one discussed by science fiction writers:
    “how do you get communications started among
    totally uncorrelated 'sapient' beings?.”
    GOOD
    API

    View Slide

  13. INTERGALACTIC COMPUTER
    NETWORK


    How would completely unrelated beings communicate?
    GOOD
    API

    View Slide

  14. THEY WOULD HAVE TO
    FIGURE OUT
    GOOD
    API

    View Slide

  15. GOOD
    API

    View Slide

  16. PROBE TO BUILD
    VOCABULARY
    GOOD
    API

    View Slide

  17. USE THE
    VOCABULARY
    FOR COMMUNICATION
    GOOD
    API

    View Slide

  18. YEARS 1996/7
    TURK’s END
    GOOD
    API

    View Slide

  19. IBM DEEP BLUE
    GOOD
    API

    View Slide

  20. 227 YEARS
    AFTER THE FIRST TURK
    GOOD
    API

    View Slide

  21. YEAR 1999
    The RISE of TURKS
    GOOD
    API

    View Slide

  22. Roy Fielding
    GOOD
    API

    View Slide

  23. REST
    ARCHITECTURAL STYLE
    GOOD
    API

    View Slide

  24. Web APIs
    GOOD
    API

    View Slide

  25. source: http://visual.ly/api-infographic

    View Slide

  26. APIs
    are the new
    MECHANICAL TURKs
    GOOD
    API

    View Slide

  27. WHAT WE THINK API IS
    GOOD
    API
    MACHINE EXPOSES
    INTERFACE
    ANOTHER MACHINE
    LEARNS & USES
    INTERFACE
    MACHINES MEET
    OVER THE NETWORK
    discovery
    machine to machine

    View Slide

  28. REALITY
    GOOD
    API
    MACHINE EXPOSES
    INTERFACE
    ANOTHER HUMAN
    READS
    DOCUMENTATION
    HUMAN WRITES
    DOCUMENTATION
    ANOTHER MACHINE IS
    TAUGHT TO USE
    INTERFACE
    HUMANS MEET
    discovery

    View Slide

  29. API TURK
    GOOD
    API
    MACHINE EXPOSES INTERFACE
    ANOTHER HUMAN READS DOCUMENTATION
    HUMAN WRITES DOCUMENTATION
    ANOTHER MACHINE IS TAUGHT
    TO USE INTERFACE
    HUMANS MEET


    %
    %

    View Slide

  30. API TURK
    GOOD
    API





    %
    HUMANS INSIDE

    View Slide

  31. YEARS 2010-17
    GOLDEN AGE of TURKS
    GOOD
    API

    View Slide

  32. BOOM OF Web APIs
    GOOD
    API

    View Slide

  33. STRONG BUSINESS DRIVERS
    GOOD
    API

    View Slide

  34. source: http://www.slideshare.net/programmableweb/web-api-growthsince2005

    View Slide

  35. THE PROBLEM WITH API
    TURKS
    GOOD
    API

    View Slide

  36. SHARED UNDERSTANDING
    AHEAD OF TIME
    GOOD
    API
    PROBLEM WITH

    View Slide

  37. SYNCHRONICITY
    GOOD
    API



    INTERFACE
    ACTUALLY
    EXPOSED
    INTERFACE
    DOCUMENTED
    INTERFACED
    USED
    are they the same?
    are they the same?
    are they the same?

    View Slide

  38. KEEPING THINGS IN SYNC IS
    HARD
    GOOD
    API

    View Slide

  39. TIGHT-COUPLING
    GOOD
    API
    PROBLEM WITH

    View Slide

  40. TIGHT-COUPLING
    GOOD
    API



    %
    time & money spent
    INTERFACE
    CHANGED
    CLIENT
    FIXED

    BROKEN
    CLIENT

    View Slide

  41. VERSIONING IS HARD
    GOOD
    API

    View Slide

  42. HUMANS INVOLVED
    in
    MACHINE TO MACHINE
    COMMUNICATION
    GOOD
    API
    PROBLEMS WITH

    View Slide

  43. HUMANS INVOLVED
    • Error-prone
    • Opportunity for missed understanding
    • Doesn’t scale
    GOOD
    API
    speed and resources
    humans do errors
    is “title” the same as “heading”?

    View Slide

  44. DISCOVERY
    GOOD
    API
    PROBLEM WITH

    View Slide

  45. HOW DO I LEARN A SERVICE
    EXISTS?
    GOOD
    API

    View Slide

  46. SOLUTIONS
    GOOD
    API

    View Slide

  47. POPULAR SOLUTIONS
    • Processes
    • Generate documentation
    • Generate code
    • Complex Tests
    • Hire more people
    • API Portals, catalogues
    GOOD
    API

    View Slide

  48. FUTURE SOLUTIONS?
    GOOD
    API

    View Slide

  49. HUMANS ROLE
    IN
    M2M COMMUNICATION?
    GOOD
    API

    View Slide

  50. HUMANS IN API TURK
    GOOD
    API
    MACHINE EXPOSES INTERFACE
    ANOTHER HUMAN READS DOCUMENTATION
    HUMAN WRITES DOCUMENTATION
    ANOTHER MACHINE IS TAUGHT
    TO USE INTERFACE
    HUMANS MEET


    %
    %

    View Slide

  51. HUMANS IN API TURK
    GOOD
    API
    MACHINE EXPOSES INTERFACE
    ANOTHER MACHINE IS TAUGHT
    TO USE INTERFACE


    %
    %

    API DISCOVERY
    Understanding
    WHAT & HOW

    View Slide

  52. HUMANS IN API TURK
    • API DISCOVERY
    • Understanding WHAT
    • Understanding HOW
    • Programming
    Is there a service…
    …that gives me weather in Paris…
    …and I know how to call?
    Great! Let’s hook it up with my program!
    GOOD
    API

    View Slide

  53. M2M COMMUNICATION
    WITHOUT
    HUMANS
    GOOD
    API

    View Slide

  54. AUTONOMOUS APIs
    GOOD
    API

    View Slide

  55. AUTONOMOUS APIs
    GOOD
    API
    MACHINE EXPOSES
    INTERFACE
    & PROFILE
    AND REGISTER ITSELF
    AT DISCOVERY SERVICE
    ANOTHER MACHINE IS
    TRAINED TO USE A
    VOCABULARY &
    DISCOVERY SERVICE


    API DISCOVERY
    SERVICE

    View Slide

  56. • Share understanding at RUNTIME
    • Affordances
    • Data
    • Programming for a VOCABULARY not data structure
    • AUTONOMOUS service discovery
    GOOD
    API
    AUTONOMOUS APIs

    View Slide

  57. YEARS 2016/17
    The ARRIVAL
    GOOD
    API

    View Slide

  58. WE ARE SHARING
    UNDERSTANDING AT
    RUNTIME
    GOOD
    API

    View Slide

  59. HATEOAS
    GOOD
    API
    Hypermedia as the Engine of Application State

    View Slide

  60. JSON-LD
    GOOD
    API
    JavaScript Object Notation for Linked Data

    View Slide

  61. ALPS
    GOOD
    API
    Application-Level Profile Semantics

    View Slide

  62. GraphQL SCHEMA
    GOOD
    API
    Introspection system

    View Slide

  63. WE ARE BUILDING
    API CATALOGUES
    GOOD
    API

    View Slide

  64. Rapid API
    Hitch HQ
    GraphQL Hub
    GOOD
    API
    YAHOOs of API WORLD

    View Slide

  65. BUILDING BLOCKS ARE
    GETTING THE TRACTION
    GOOD
    API

    View Slide

  66. YEAR 2020
    AUTONOMOUS APIs
    GOOD
    API

    View Slide

  67. API DISCOVERY AT
    RUNTIME
    GOOD
    API

    View Slide

  68. GOOGLE of API WORLD
    GOOD
    API
    Page Rank for APIs accessible over API

    View Slide

  69. MATURE TOOLING
    GOOD
    API

    View Slide

  70. DECLARATIVE
    API CLIENT
    PROGRAMMING
    GOOD
    API

    View Slide

  71. DECLARATIVE CLIENT
    PROGRAMMING
    // Using a terms from schema.org dictionary,
    // find services that offers WeatherForecast.
    services = apiRegistry.find(WeatherForecast, { vocabulary: http://
    schema.org})
    // Query a service for WeatherForecast at GeoCoordinates.
    forecast = service.retrieve(WeatherForecast, { GeoCoordinates: … })
    // Display Temperature
    print forecast(Temperature)
    GOOD
    API

    View Slide

  72. • Sharing understanding at RUNTIME
    • Working with VOCABULARIES
    • AUTONOMOUS service discovery
    GOOD
    API
    FUTURE APIs will be

    View Slide

  73. • Reduce costs
    • Reduce errors
    • Reduce time to market
    • Enable scaling
    • Enable API changes, evolution, resilience
    • Enable reuse
    GOOD
    API
    FUTURE APIs
    Instagram client used for FB, Twitter, LinkedIn etc.

    View Slide

  74. GOOD
    API

    View Slide

  75. THE THING
    WITH
    API DESCRIPTIONS
    GOOD
    API

    View Slide

  76. MEDIA FOR
    THINKING ABOUT APIs
    GOOD
    API

    View Slide

  77. YEAR 2016
    Web API Design Maturity Model
    GOOD
    API
    Mike Amundsen

    View Slide

  78. source: http://amundsen.com/talks/2016-11-apistrat-wadm/2016-11-apistrat-wadm.pdf

    View Slide

  79. source: http://amundsen.com/talks/2016-11-apistrat-wadm/2016-11-apistrat-wadm.pdf

    View Slide

  80. WSDL – 2000
    WADL – 2009
    SWAGGER – 2010
    API BLUEPRINT – 2012
    RAML – 2013
    1999 – REST
    2020 – Autonomous APIs
    QraphQL – 2016
    GOOD
    API
    ALPS – 2015
    Web API Design Maturity
    OBJECT
    CENTRIC
    RESOURCE
    CENTRIC
    AFFORDANCE
    CENTRIC
    – 2020
    Hindsight (?)
    Crichton (?)

    View Slide

  81. • Shared at runtime
    • Affordance-centric
    • Carry or enable semantic information
    GOOD
    API
    FUTURE API description formats

    View Slide

  82. THANK YOU!
    Zdenek “Z” Nemec
    goodapi.co
    GOOD
    API
    @zdne
    zdne1

    View Slide

  83. REFERENCE
    • https://twitter.com/mamund/status/794203466998644736
    • http://smizell.com/weblog/2016/hypermedia-design
    • https://onedrive.live.com/view.aspx?resid=E73792DC59D3EF31!567871&ithint=file%2cpptx&app=PowerPoint&authkey=!
    AFO4p5VTwD6WtRQ
    • http://raml.org/blogs/looking-back-raml-10
    • https://vimeo.com/67076984
    • http://visual.ly/api-infographic
    • http://www.slideshare.net/programmableweb/web-api-growthsince2005
    • http://smizell.com/weblog/2016/hypermedia-design
    • http://amundsen.com/talks/2016-11-apistrat-wadm/2016-11-apistrat-wadm.pdf
    • https://github.com/apiaryio/api-blueprint/wiki/Roadmap
    • http://apiary.io
    • http://goodapi.co
    • https://github.com/smizell/hindsight

    View Slide

  84. GOOD
    API

    View Slide

  85. HINDSIGHT

    View Slide

  86. interactions:
    viewTodoCollection: {}
    createTodoItem: {}
    viewTodoItem: {}
    markTodoComplete: {}
    source: http://smizell.com/weblog/2016/hypermedia-design

    View Slide

  87. interactions:
    viewTodoCollection:
    description: |
    The `item` link is only available when there are
    items found in the lookup.
    scenarios:
    noTodos:
    when:
    storage:
    getTodos: []
    then:
    links:
    - self
    actions:
    - create-todo
    status: success
    withTodo:
    when:
    storage:
    getTodos:
    - id: 1
    body: Get milk
    completed: false
    then:
    links:
    - self
    - item
    actions:
    - create-todo
    status: success
    source: http://smizell.com/weblog/2016/hypermedia-design

    View Slide

  88. YEAR 1921
    TRACTATUS
    GOOD
    API
    Ludwig Wittgenstein

    View Slide

  89. YEAR 1980
    THOUGHTS WE CANNOT THINK
    GOOD
    API
    Richard Hamming

    View Slide

  90. Bret Victor
    YEAR 2013
    MEDIA for thinking UNTHINKABLE
    GOOD
    API

    View Slide