Compatibility is evil


From a business stand point of view, compatibility is God. New versions of .Net framework should never break applications working fine in previous version of .Net framework.


 


But from a developer of .Net framework’s point of view, compatibility is *evil*.


 


No matter how crappy your API is, you *cannot* fix it, because somewhere in the universe someone will depend on it.


 


You either don’t ship anything, or you keep shipping crap, and crap, and more crap.


 


Maybe it is OK. After all, we are living in a chaotic world.

Comments (5)

  1. Anonymous says:

    Considering your burst series of posts on side-by-side assemblies, should I understand that your management is forcing some decisions on you? (For example, doing something wrong from a technical point of view for the sake of keeping the business moving? Are you actually being forced to knowingly ship crap?)

    Off-topic: I honestly hope you didn’t introduce AppCompat or other dumb features like that in the CLR.

    The way I see things, doing AppCompat for instance is like lying for ever and ever and ever. Eventually you’re going to have to come up with more elaborate and costly lies to keep this fragile web intact.

    Imho, instead of introducing AppCompat, MS should work with the people who wrote broken apps in the first place and teach them how to fix them. It’s cheaper in the long run.

    [I received an error when trying to post the comment. If I double-post, please delete one of the comments.]

  2. n4cer says:

    "Imho, instead of introducing AppCompat, MS should work with the people who wrote broken apps in the first place and teach them how to fix them. It’s cheaper in the long run."

    They do this whenever possible, but in many cases, the app publisher is no longer in business, won’t support an old codebase, or the end-user needing compatibility doesn’t have access to the code. Sometimes, the developer doesn’t have access to complete source (may depend on third-party dlls, legal issues, code was lost, etc.).

    When changes to the software can’t be made, end-user satisfaction usually trumps breaking compatibility unless security is of issue.

    IIRC, Raymond Chen talked about this a while ago. I remember him or someone else mentioning that many hotels still use custom apps written for DOS that they consider mission-critical. App compat for that is probably a bit different than old Windows apps that bind to specific versions or use reserved fields to store data, but the end-user just knows his app does/doesn’t work and doesn’t usually care about the technnical details.

    Raymond’s Blog

    http://blogs.msdn.com/oldnewthing/

    Also, sometimes app compatibility is MS’ responsibility because, as said in Junfeng’s post, whatever v1 API they ship, someone is going to use it. Even if the app devs create perfect code, it still has a dependancy on MS’ (hypothetical) crappy v1 API. If elegant v2 of the API breaks compatibility w/ crappy v1, the apps coded against v1 also break which means the users (and devs who aren’t at fault in this case) of those apps will be mad at MS. Angry (potentially ex) customers and devs make compatibility a necessary evil.

  3. junfeng says:

    For a developer, you want the freedom to change things.

    From a business standard point, you want things to be stable.

    Business always takes precedence. It does not always make developers happy. But that is how you survive the business.

  4. mgrier says:

    Maybe someone should have told the people involved that they were working on software that people were really going to use in the real world so that they could have only done half as much and had a better chance of getting it right. Yeah, that reality will happen someday. right.

    I feel little remorse; the system in question was going through a series epileptic feature frenzy convulsions without any thought about longevity vs. "dev friendliness". The shame is that the people truly responsible for the series of decisions which led to this probably got a lot of bonus, stock and promotions and now the cleanup crew is left holding the bag. As usual.

  5. Anonymous says:

    So… What is the ugly hack you’re supposed to ship? Is still hope it’s not AppCompat. It would be one of the lamest things to do, considering how much work you put into SxS… 🙁