Versioning remains one of the trickiest and under-discussed aspects of software development. Shipping 1.0 of a library or framework can be easy compared with shipping 1.1 and worrying about your existing users. "But semantic versioning!" you respond... yeah, not so much. It's easy to say "No breaking changes within a major version" - but what does that mean, exactly? And what does shipping 1.1 or 2.0 mean for anyone who depends on your package? How can we avoid an impending versioning apocalypse?
This talk will use C# and .NET for concrete examples, but the questions raised are applicable - with potentially different answers - to all platforms and languages.