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!