Designing libraries for source and binary compatibility
We have all experienced at least once the dismay of trying to use two libraries, only to discover that they are not binary compatible with each other. The good news is: we can avoid this kind of situation, if we correctly design our libraries and their APIs so that we can *evolve* them later in binary compatible ways. In this talk, we will first explain what source and binary compatibility are, why they matter, and when. Then, we will give practical advice on designing APIs that can be evolved in backward compatible ways, as well as recommendations for versioning libraries.