Just say no to backward compatibility!
Backward compatibility is one of many banes of programmers existence. When you’re going through a program and ask “Why do you have code to support a 3-5 year old version of this software?” the answer almost always is “Because of backwards compatibility”. Sometimes you can look at the code and realize that the only way a person would run into a situation where it is needed is when they’ve updated to the newest version, in other words the code doesn’t need to exist.
Is this a pointless rant? Nope, not at all. Code that’s quite vulnerable stays in programs and isn’t removed under the guise of backwards compatibility. If you don’t know what backwards compatibility is, it’s simply supporting older versions of code that your code is dependent on. One example is PHP. The actual codebase for PHP has extremely ancient code, because if they remove it anything that’s ever used it could break.
So, if we get rid of backwards compatibility how are we supposed to stop the web from breaking when one piece of software is reliant on a language or a framework for a certain piece of code? It’s extremely simple — you deprecate the code and then give 3 months to 6 months for everyone to get their code up to date and do as many press releases that the web will break on a certain date if companies do not comply. Yes, I realize this is a tiny bit of backwards compatibility, but it’s needed to keep the web functioning. The sites that break, well, I wouldn’t want to use a site that can’t update their codebase in six months. Yes, I know certain functions are widespread like a plague across millions of lines, but you can easily search and replace all areas automatically with say grep. We should not be held hostage to other companies or users failures to understand why they shouldn’t use a certain bit of ancient code Internet Explorer 6 or IE at all for that matter.
Making backwards compatibility enables people to keep using insecure code or code that needs to be removed due to programmers thinking it does something it actually doesn’t do, like the absurd PHP function magic_quotes which I believe has been completely removed from the PHP language. The sooner we force people to update their code, the sooner we hopefully can have nice things online. Right now just a few megabytes of code will have hundreds of security holes, which I know as a fact from helping customers at planetzuda.com.
We can write slimmer code that is usable and not millions of lines long mainly due to backwards compatibility. I am not going to get into object oriented programming and what I think of it today… I’ll save that for another day and another post.