Backward Compatibility!

Backward Compatibility

The internet is littered with articles on backward compatibility and why it is important and rants of people who work/use 1970s systems on the same. Well the last sentence there was a pun but people do rant on not being able to use the PS2 games on PS4 and or not being able to use Lint with the new c++11 or c++14 features or sticking to an outdated kernel (2.6.36) and not being able to use the new virtual environment enhancements, etc. Finally, all of these rants boil down to, “Everything should be backward compatible and should not break existing systems”.

But hey, your existing system is 20 years old and it is soon going to break down. Will you then try to search for a similar existing system or beat the old donkey till you live? I mean, there is this infatuation with backward compatibility in system developers. Yep, I am talking about those old, pot bellied, bald guys who did great c99 coding in their hay days but will not use tuples because it is NOT what they know and they have no clue as to how they can keep up with new standards. Bjarne Stroustrup in one of his talks explains why people should move away from the old ways of working and embrace newer things. I think it is the below lecture that he nicely sums up (in a better and positive manner) than what anybody could ever do.

He also explains the reasons as to why we don’t really need to keep doing things in the same old ways. And use the newer features available even in old code (i.e. refactor it). My understanding of the essence of what he wants to say is to get rid of backward compatibility. Stop doing things the wrong way and give the reason as being backward compatible. In that sense, the full stack development people are really fast to adapt and change. Not even a single person have I heard who says that he wants to stick to WordPress version 1.0 and PHP 3.x because of blah blah blah (insert your favorite 1980s keywords here).

In our organization, we have a product X which is being precisely used by 2 components A and B. Both A and B are moving to the new c++11 standards (or least are compiling towards the newer ABIs). The people now maintaining this product X still wants to be backward compatible? WTF? Who the heck is using your product? The A and B who are your clients are moving on, they are never going to come back and use the old things (at least not till time machine is invented and somehow magically all the pot-bellied, bald developers become young, the year changes to 1980 and Linus Torvalds never ever takes birth and yes, we still have Richard Stallman running around and GNU Hurd is still being penned down). I can go on and on, on what should not change for A & B to come back. But that’s it. Everything changes and everything has changed.

Wake up you pot-bellied, old, bald, about to retire dinosaurs. Everything is in a continuous state of change. Your product is outdated. Components A & B are still using it because the developers of those components are busy implementing new features (or are just too lazy to move over) or are restricted by the management class (another of those pot-bellied, old, bald, about to retire dinosaurs) to do any changes to what’s working. In any case, who are you maintaining the backward compatibility for? Why don’t you want to use the new features? Do you think that your stupid old code would be so useful that someone in future would just start using it?

I mean common guys. The only time your backward compatibility will ever be useful is…. “NEVER”. So stop being backwards compatible. We have got airplanes. We will not use donkeys anymore. I think this should be the motto of each and every developer. STOP BEING A DONKEY (or an asshole if you will)! Backwards compatible is essentially the same thing as trying to hold on to your youth. Hey, its gonna wither. Embrace the baldness and wear a wig. OKAY. Enough of my rant. If I write a bit more, I am pretty sure my article will be censored by Google and only people above 200 years of age will be able to read!

Signing off with this rant. Hope you like it. Give me your comments & suggestions on what you think. But hey, if you are for backwards compatibility, you are just one of those pot-bellied, old, bald and about to retire developers! Naah, just joking. Send in your comments.