Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Future of APIs

Cb2527e0c321fc1eb6753c06f45da93c?s=47 Z
December 13, 2016

Future of APIs

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

Cb2527e0c321fc1eb6753c06f45da93c?s=128

Z

December 13, 2016
Tweet

Transcript

  1. FUTURE OF APIs On API Design and the future of

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

  3. THE FUTURE OF APIs GOOD API

  4. YEAR 1770 The TURK GOOD API

  5. Wolfgang von Kempelen GOOD API

  6. GOOD API

  7. GOOD API

  8. GOOD API MECHANICAL TURK

  9. YEAR 1963 The ALIENS GOOD API

  10. Joseph Carl Robnett Licklider GOOD API

  11. COMMUNICATING WITH ALIENS PROBLEM GOOD API

  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
  13. INTERGALACTIC COMPUTER NETWORK How would completely unrelated beings communicate? GOOD

    API
  14. THEY WOULD HAVE TO FIGURE OUT GOOD API

  15. GOOD API

  16. PROBE TO BUILD VOCABULARY GOOD API

  17. USE THE VOCABULARY FOR COMMUNICATION GOOD API

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

  19. IBM DEEP BLUE GOOD API

  20. 227 YEARS AFTER THE FIRST TURK GOOD API

  21. YEAR 1999 The RISE of TURKS GOOD API

  22. Roy Fielding GOOD API

  23. REST ARCHITECTURAL STYLE GOOD API

  24. Web APIs GOOD API

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

  26. APIs are the new MECHANICAL TURKs GOOD API

  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
  28. REALITY GOOD API MACHINE EXPOSES INTERFACE ANOTHER HUMAN READS DOCUMENTATION

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

    DOCUMENTATION HUMAN WRITES DOCUMENTATION ANOTHER MACHINE IS TAUGHT TO USE INTERFACE HUMANS MEET % %
  30. API TURK GOOD API % HUMANS INSIDE

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

  32. BOOM OF Web APIs GOOD API

  33. STRONG BUSINESS DRIVERS GOOD API

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

  35. THE PROBLEM WITH API TURKS GOOD API

  36. SHARED UNDERSTANDING AHEAD OF TIME GOOD API PROBLEM WITH

  37. SYNCHRONICITY GOOD API INTERFACE ACTUALLY EXPOSED INTERFACE DOCUMENTED INTERFACED USED

    are they the same? are they the same? are they the same?
  38. KEEPING THINGS IN SYNC IS HARD GOOD API

  39. TIGHT-COUPLING GOOD API PROBLEM WITH

  40. TIGHT-COUPLING GOOD API % time & money spent INTERFACE CHANGED

    CLIENT FIXED BROKEN CLIENT
  41. VERSIONING IS HARD GOOD API

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

    WITH
  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”?
  44. DISCOVERY GOOD API PROBLEM WITH

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

  46. SOLUTIONS GOOD API

  47. POPULAR SOLUTIONS • Processes • Generate documentation • Generate code

    • Complex Tests • Hire more people • API Portals, catalogues GOOD API
  48. FUTURE SOLUTIONS? GOOD API

  49. HUMANS ROLE IN M2M COMMUNICATION? GOOD API

  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 % %
  51. HUMANS IN API TURK GOOD API MACHINE EXPOSES INTERFACE ANOTHER

    MACHINE IS TAUGHT TO USE INTERFACE % % API DISCOVERY Understanding WHAT & HOW
  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
  53. M2M COMMUNICATION WITHOUT HUMANS GOOD API

  54. AUTONOMOUS APIs GOOD API

  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
  56. • Share understanding at RUNTIME • Affordances • Data •

    Programming for a VOCABULARY not data structure • AUTONOMOUS service discovery GOOD API AUTONOMOUS APIs
  57. YEARS 2016/17 The ARRIVAL GOOD API

  58. WE ARE SHARING UNDERSTANDING AT RUNTIME GOOD API

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

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

  61. ALPS GOOD API Application-Level Profile Semantics

  62. GraphQL SCHEMA GOOD API Introspection system

  63. WE ARE BUILDING API CATALOGUES GOOD API

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

    API WORLD
  65. BUILDING BLOCKS ARE GETTING THE TRACTION GOOD API

  66. YEAR 2020 AUTONOMOUS APIs GOOD API

  67. API DISCOVERY AT RUNTIME GOOD API

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

    accessible over API
  69. MATURE TOOLING GOOD API

  70. DECLARATIVE API CLIENT PROGRAMMING GOOD API

  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
  72. • Sharing understanding at RUNTIME • Working with VOCABULARIES •

    AUTONOMOUS service discovery GOOD API FUTURE APIs will be
  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.
  74. GOOD API

  75. THE THING WITH API DESCRIPTIONS GOOD API

  76. MEDIA FOR THINKING ABOUT APIs GOOD API

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

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

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

  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 (?)
  81. • Shared at runtime • Affordance-centric • Carry or enable

    semantic information GOOD API FUTURE API description formats
  82. THANK YOU! Zdenek “Z” Nemec goodapi.co GOOD API @zdne zdne1

  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
  84. GOOD API

  85. HINDSIGHT

  86. interactions: viewTodoCollection: {} createTodoItem: {} viewTodoItem: {} markTodoComplete: {} source:

    http://smizell.com/weblog/2016/hypermedia-design
  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
  88. YEAR 1921 TRACTATUS GOOD API Ludwig Wittgenstein

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

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