There are at least two options open to deal with this.
The first is simply to carry on; keep on hacking and shimming and poly-filling the gaps between the browsers we want and the ones we have, perpetuating the cat-and-mouse game of browser support for JS libraries, leaving support as an ‘n*m’ problem.
The second option, as Lyza Gardener put it at Over The Air 2013, is to “save the web by doing as little as possible”; we try to avoid the workarounds and wait for the standards and browsers to catch up. The web gets better as standards arrive and the complexity is pushed into the browsers and it is just an ‘n’ sized problem of dealing with the differences between browsers.
All we have to do is stop adding to the mess and try to resist the pressures and habits which lead us here in the first place, and this might be as hard as it sounds if we consider the context of things right now.
The internet has gone through major changes in the last decade, transforming from a desktop centric screen on the end of a paltry 56K connection into a vast array of laptops, smartphones and tablets devouring broadband and 4G. This has opened up so many possibilities but it has also created hundreds of new combinations of browser, screen and connection speed to cater for. On top of that, devices give us all kinds of new sensors to play with but each device offers a different combination or interface. The ‘m’ in our ‘m*n’ problem just became a much higher number.
All of this change is just beginning to settle down (at least until Google Glass-like devices or the Internet of Things become widely adopted and change the landscape again) and we are making the tools to provide excellent experiences on all these new forms of the internet; practices like responsive design are helping us close the gap between what is possible and what we’ve actually done. There is still an unimaginable amount of ideas to explore but, perhaps for a brief time, we have a chance to catch our breath a bit.
That means that now is the right time to start focusing on standards. We need to work on standardising APIs for real-time content, accelerometers, ambient light sensors and all the other neat inputs we suddenly have access to in a modern smartphone or tablet. Once we have the standards, the browsers can work on conforming to it and we’re back to just the ‘n’ sized problem of supporting each browser.
The earlier we start, the sooner we have all these capabilities easily and reliably accessible through browsers; We finally have a chance to help the web settle into a healthier, standardised form, ready for whatever comes next.