Slide 1

Slide 1 text

May 2019 GitHub API Change Done Right Claire Knight Ecosystem API Lead

Slide 2

Slide 2 text

GitHub API Change Done Right - Claire Knight Background

Slide 3

Slide 3 text

GitHub API Change Done Right - Claire Knight Quality Versions Integrators Change…

Slide 4

Slide 4 text

GitHub API Change Done Right - Claire Knight Changes and Versions

Slide 5

Slide 5 text

GitHub API Change Done Right - Claire Knight Changes Adding a new REST endpoint Adding a field to a GraphQL object Previews to wrap new functionality BUT many more changes are breaking ones!

Slide 6

Slide 6 text

GitHub API Change Done Right - Claire Knight Versioning vN in URL Timestamps Continuous Accept Headers n+1 version numbers in the host or URL path Very similar to n+1, and again in the URL Relies on client negotiation of what they can handle Version details sent as part of Accept headers

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

GitHub API Change Done Right - Claire Knight Integrators

Slide 9

Slide 9 text

GitHub API Change Done Right - Claire Knight Hyrum’s Law With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors of your system will be depended on by somebody.

Slide 10

Slide 10 text

GitHub API Change Done Right - Claire Knight • Published schedules for deprecations • Good communication and announcements • Example code • Migration paths • A place for asking questions and getting and giving feedback • Actually responding to their feedback in a thoughtful way ❤

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

GitHub API Change Done Right - Claire Knight Quality and Consistency

Slide 13

Slide 13 text

GitHub API Change Done Right - Claire Knight Maintaining the API Complete Testing Review Changes Tooling Ensure all public endpoints have tests Also ensure GraphQL objects are covered by test queries Engineering needs to own the Public API Automated as much review as possible

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

API Change Done Right - Claire Knight GitHub Closing Thought An API is just the language to communicate with a service. And languages constantly evolve. Additions, change of meanings, lack of use… APIs are no different!