3 ms·
You can have backward compatibility while fixing the foundations. The trick is to add a "compatibility layer" that works well enough for existing clients, then
by panic 10y ago
You can have backward compatibility while fixing the foundations. The trick is to add a "compatibility layer" that works well enough for existing clients, then slowly phase it out. Apple in particular is very good at this. They've gone from 68k to PPC, PPC to Intel, "Classic" Mac OS to Carbon to Cocoa, 32-bit to 64-bit, Obj-C to Swift, and so on by maintaining compatibility for old programs on top of new foundations. Unfortunately, these compatibility layers aren't very fun to write and can be difficult to test and maintain, so people (in open source projects especially) tend not to be very interested in the concept.
- erlehmann_ 10y agoYou do not have to phase out any kind of compatibility layer, if your implementation is forwards compatible. Implementing protocol negotiation and extensibility serves this purpose. Examples for forwards compatible systems are HTTP (upgrade header), XML (namespaces), X11 (extensions).