What makes an API Evolvable?
Long story short, an evolvable APIs is an API that has been designed to facilitate seamless evolution. This is achieved through set of characteristics, design principles and capabilities that confer the API the capability of evolving and adapting to changes without breaking clients that are already consuming it. And at the same time they allow clients to use them in a way that can discover new capabilities and enhance its behaviour automatically when that evolution happens.
This could sounds like an chasing “El Dorado”, like an impossible goal to reach, but in fact it is not.
The web is almost 30 years old. If something has been proven key, is the capability of the Web to evolve gracefully over the years.
Can we learn something from the web? Can we reuse any of its design principles for our own Web APIs? Can we prepare them to evolve as seamlessly as the Web?
If we take a look at how some APIs are built today, we could think that unfortunately we can’t. It’s common in these days to be forced to update clients because a minor feature has been removed, changed or added in the server side. Any API can become more evolvable and it’s our goal to show how.
But we think that, when necessary, we can bring some of those design principles and characteristics into the way we design and build Web APIs and take most of the benefits of Evolvability.