Application compatibility

Symbian operating system and Nokia's S60 based on Symbian are well known for breaking the binary compatibility here and there, changing constants and interfaces between the minor versions, etc. As Mika Raento puts it it "Nokia is completely schizophrenic when it comes to backward compatibility". Some interfaces are maintained with the help of various compatibility layers for a long time, while another interfaces sometimes are dropped or heavily re-engineered even within the same S60 version.

While it is definitely up to Nokia and Symbian when and how to change their interfaces, the big problem for the external developers in that the principles for maintaining or dropping the backwards compatibility are not known. Therefore the software vendors don't know on which APIs to rely and of which not to rely.

One way of solving this is to get a compatibility principle based on the business value of maintaining the compatibility, i.e. on how many useful applications rely on this or that particular API. The rumors tell that when Microsoft released its Windows 95 it invested huge amount of efforts into making the OS work even with particular popular games that contained bugs normally incompatible even with the DOS (where the games worked by accident).

I first heard about this from one of the developers of the hit game SimCity, who told me that there was a critical bug in his application: it used memory right after freeing it, a major no-no that happened to work OK on DOS but would not work under Windows where memory that is freed is likely to be snatched up by another running application right away. The testers on the Windows team were going through various popular applications, testing them to make sure they worked OK, but SimCity kept crashing. They reported this to the Windows developers, who disassembled SimCity, stepped through it in a debugger, found the bug, and added special code that checked if SimCity was running, and if it did, ran the memory allocator in a special mode in which you could still use memory after freeing it.

As we know in the end this attitude made Windows the dominant desktop OS on the Earth.

In the Symbian world the situation is that opposite that despite the growing Symbian market share, Nokia's own bloggers notice that during the last couple of years the third party fail to cope with the changes and the usefulness of the 3rd party apps is diminishing. Is it because the Nokia applications improved by the order of magnitude? - I doubt. Why doesn't Nokia go over the popular applications third party providers and S60 licensees and ask them what APIs they rely on? Then Nokia could make a list of APIs guaranteed to be maintained for a long time (e.g. two years), for medium time (e.g. one year) and for undefined amount of time. Preferably with the tests attached.

Certainly, at the moment being almost the market monopoly Nokia might not have a solid business reason for it. Just the same way as Palm did not have it until Windows Mobile with the hordes of loyal developers destroyed the Palm business in just a few years.

Comments

Just wondering, which S60

Just wondering, which S60 applications (or other mobile apps) would be worth the title "SimCity of mobile apps"? I mean, something so remarkably important, that it would make business sense for the platform provider to do application specific tweaks to maintain compatibility?

The problem is that the

The problem is that the platform is changing that rapidly and unpredictably that such applications have little time to emerge :)

As for the present time, I personally would call Opera for Mobile comparable. I've been told that some teenagers are using messengers quite much (cheaper, than SMS). Then when Skype for S60 eventually comes out, it might be a good candidate.

Compatability is a mentality

Application compatability between different versions of an OS is important to users, because it protects their investments in the software they have bought. What the OS vendor is saying is this: "Your software and the time and money you have spend on deploying it, learning to work with it, are important to us. So we try to protect your investment as best as we can."

And the users say: "excellent, this is a platform we can rely on."

If applications cannot be run on new versions of the OS, the OS vendor says to it's users: "We don't care about the time and money you have invested."

And the users say: "Ok, thank you, we'll take our business somewhere else and never come back".

Great post

Great post, the application compatibility is hard, I use one software, name is isilo, it is available for palm, pocket pc, smartphone, sybmain, and windows ce, as well as for Windows. we can study something form this software, I think it is cool.