This question isn't really for any specific technology but more of general developer question.
We all know from experience that things change. Frameworks evolve, new features are added and stuff gets removed.
For example, how might a product using version 1.0 of the "ABC" framework adapt when version 2.0 comes along (ABC could be .NET, Java, Cocoa, or whatever you want)?
One solution might be to make the frameworks backward compatible; so that code written for 1.0 will still work in version 2.0 of the framework.
Another might be to selectively target only version 1.0 of the framework, but this might leave many fancy new features unused (many .NET 2.0 apps seem to do this)
Any thoughts on what we as developers should do as best practice to keep our technologies up to date, whilst not breaking our applications?