When I was a lad, starting out in development (COM, C++, DLLs etc for Windows), we never broke an interface. That is, the latest version of a module would always support every previous API (interface) version.
However code reuse was really hard. DLLs were rarely actually reused for other projects.
Nowadays with this new web stuff it all seems to be the other way round. Reuse is everywhere but interface updates often break old code. Old code is stuck using the original reused files.
This seems wrong to me. A major version of a package shouldn't break old code. It should just offer a new API with the old stuff in parallel.
Am I missing something?