Living with the Legacy
Thursday, November 13th, 2008
As developers we seem to naturally always want to be on the cutting edge, the internet therefore often seems to be the best place to be to scratch this itch. Whilst this is largely true we also have a bit of a large downside to deal with as well, the horror that is legacy issues. Let me show you a practical example, I was recently reading a horror story of a feature from Javascript extraordinaire John Resig. Essentially it boils down to a feature which was developed rather short-sightedly a number of years ago. Because this is a long standing feature it is therefore potentially utilised in billions of web pages. Can we fix this “bug”? The short answer is unfortunately no, fixing this “bug” will potentially break far too many sites. What we are left with are legacy problems which we have to work with. It is the same issue as having to deal with the blight of IE6, we all know it is broken, we developers hate it with a passion, but we can’t do a lot about it. There’s a bleeding edge of development we’d all love to be working on but it is tantalisingly out of reach because of the legacy we all live with.
I have long been of the opinion of - well that sucks but hey what can we do? Lately though I have been wondering how long we can continue working like this? I shudder to think how much money the economy bleeds through supporting these legacy issues, I know we spend a large proportion of front-end development time wrestling with cross browser support. What if we just said no, we will no longer do that. We will no longer accommodate these issues. I can see two things happening here, first let’s take the bug mentioned above. Let’s say we will say no more to DOM0 expando properties, from now on they are gone. What will happen is that we may break a ton of code, but is this such a bad thing? If the code is that important wouldn’t it be worth fixing for the greater good? Don’t break the web has long been a mantra from Microsoft, yet even they have seen the folly in this approach and in their next release of IE8 they have opted for standards which will potentially break a lot of existing code.
The second thing I could see happening if we were to say no to legacy issues is pretty much what the concept of progressive enhancement is built on. We say ok we know there are legacy issues, but accommodating these legacy issues is too much work. As long as the application works, if it isn’t the best experience, hey we can live with it. People affected may have an option here, users may be able upgrade their browsers to remove the legacy issues and probably should be actively encouraged to do so. It would be a bold move for sure, however if you have followed the development technique of progressive enhancement you are not actively excluding people.
Another thought I had (or more likely read somewhere else and took as my own) was updating some of the legacy issues which are actually bugs through automatic updates. Browser vendors fix security bugs, why not fix layout bugs as well? Whether this would work or not I’m not sure. If people don’t upgrade their browsers, they’re probably unable or unlikely to install automatic updates. Still it could potentially get around one of the problems highlighted here, enterprises could choose not to install such updates and then their internal applications wouldn’t get affected. Or imagine being able to switch your layout engine or javascript engine on the fly, an update for IE6/7 could be created which did just this. Ok my brain just overloaded with the potential confusion this could cause.
What we really need is a brilliantly simple solution to the legacy issues, anybody?
