Contracts with Your Future: Applications Programming Interfaces
Most code can afford to be “agile,” whether it changes or not has little impact on outsiders. Applications Programming Interfaces (APIs) are different; they are the quintessential “outside face;” providing the contract for outside interaction. In both technology and biology, internal mechanisms evolve; interfaces are conserved. New and improved interfaces never supplant established interfaces; instead both interfaces must continue to coexist. Release is merely the first step of a gradual, painful, never-ending process. Complete replacement is the subject of worship, but it is never achieved. We will examine ways to avoid “rebooting” APIs.