Programming ≈ Fun

Written by Krešimir Bojčić

Compatibility Matters!

I was an avid Linux user. I love tinkering with computers and Linux provided more than enough material. You need a lot of love and time to pursue things of such vast complexity.

There was this one thought in the back of my head that kept bothering me. I understand that not everything has to work, but the fact that sound stops working on (almost) every upgrade was troublesome. It did not work any better for anybody else, so why did it break? Sound cards are not exactly new concept.

It was almost as nobody did not care about this. After a few years of feeling “paranoid” this confirmed my fears - What Killed the Linux Desktop.

  • This guy knows what he is talking about
  • It’s exactly what happens in practice

He says:

Back in February I attended FOSDEM and two of my very dear friends were giggling out of excitement at their plans to roll out a new system that will force many apps to be modified to continue running. They have a beautiful vision to solve a problem that I never knew we had, and that no end user probably cares about, but every Linux desktop user will pay the price.

So they are doing The Right Thing. They where tough enough to make a tender chicken MIT style. Just one tiny little detail - end users paid the price. Bozhidar Ivanov Batsov said it the best, just check “The shit I’ve endured section”. I can certainly feel his pain and relate to it.

I mean, one has to wonder “why is my Google Talk video call upside down”.

Then it hits you:

We are loosing vast amounts of time running in circles, doing the right thing and fixing issues that do not matter while disregarding compatibility as “boring”.

Science Projects

I understand how this works. You are a volunteer, and doing stuff on your free time. So it better be interesting and also you want to express your own ideas.

I can appreciate this. It’s awesome. I love how people took 12 years to work on Perl 6. I also love the result. It’s a bit disturbing that I can’t get basic web server running because of some deep issues with sockets. But only if I depend on it.

Since I am not depending on it I really enjoy playing with it. (The plan is to make it work with Perl 5, so it’s all good other than IMO being too late to the game)

Compatibility Examples

Windows

Back it the day when Microsoft was a top dog, Windows NT source code leaked and was studied. Conclusion was it was a very well written code with a lots of tweaks and dirty hacks to keep it backward compatible with a bunch of outdated concepts. Coincidence? I don’t think so.

MFC

There is this story that MS made a new native library that was abstracting native Win32 API. The existing Win32 API developers hated it so much that they rewrote the MFC libray to make it a tiny wrapper over original API and with that they eased the transition.

Keyboard

QUERTY is alive and well. (I have enough issues with Z and Y being replaced, just imagine what kind of havoc would Dovrak create).

Calendar

I don’t imagine we could have invented worse calendar system with more exceptions. But still it’s here to stay.

Fruit Fly

If you take a fruit fly while developing, and inject in it eye control switch genome it will grow a few more pair of eyes.

Then if you isolate the same control switch from mouse and inject it in fruit fly it will still grow a few more pair of eyes, fruit fly eyes!

It means we all have the same control switch. See, compatibility does matter!

Conclusion

Keeping things compatible is a worthy goal that can help a lot in the long run.

Please, don’t ignore compatibility. Always ask yourself:

Is this idea superior enough to justify pulling the rug from under everybody else?

Comments