There's lots of hype these days about HTML5. Never mind that no one actually knows what "HTML5" is. But with all the talk, it's surprising that so very few have blogged about what could possibly be the most important browser feature to date.
Yep, that's it. It's that simple. Firefox, Chrome, Safari and IE10 browsers all have the ability to update themselves. Think about that for a second.
What if IE6 had released with auto-update capability?
This significantly changes front-end web development. Essentially, it means that when targeting Evergreen Browsers, you can be pretty confident that if your code runs on your browser, it's going to run on your customer's browser too.
A polyfill provides a fallback implementation for a browser that doesn't natively support a particular API or feature.
Now, I don't want you to think that I'm wearing rose-colored glasses over here. This still doesn't solve all our problems. For example, there's always IE. While the other browsers are heavily leveraging their auto-update capabilities by making frequent releases with new features, bug fixes and security patches, the IE team has yet to embrace an agile iterative strategy. To put it in persective, Chrome seems to update about once a month, while IE is still only updating once a year at best. Some have speculated that this has to do with IE's strong connection to the OS. Additionally, other browsers let you turn off the auto-update feature which can obviously thwart some plans.
All in all, things are in much better shape today, now that every browser has an auto-update capability. In fact, that's one of the reasons why "HTML5" is so nebulous. Browsers really aren't going to be hitting major web standards version milestones. Instead, you're going to see a constant stream of improvements as additional specs get implemented one-by-one by the various browsers, as they see fit. (This includes new language features too!) Polyfill usage will be common, but over time old polyfills will cycle out and new ones will come into play.
The strategy is fairly straight forward for modern web apps. Start with Evergreen Browsers as your baseline. Code to the feature, using polyfills where appropriate. Watch the platform underneath your app steadily enhance itself (and your app) as time passes.