Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Unfortunately, this sort of thing seems to snowball. MS bends over backwards to preserve backwards compatibility, so third-party vendors basically have free reign to abuse the OS, requiring MS to bend over backwards even more to accommodate them, and on and on.

Apple, for example, had much less of a problem with this even before the days of the App Store and the accompanying restrictions, because developers largely knew that if they depended on undocumented behavior there was a good chance that their app would break and Apple wouldn't fix it for them.



There are many stories to MS doing this. There are actually tons of conditionals in the MS source and kernel explicitly to fix broken vendor code. Look up the SimCity fixes they put in the Win Malloc to fix bugs Maxis wouldn't so that upgrades wouldn't break the game, despite the bug being entirely Maxis' fault.


Such things are no longer fixed directly in the kernel or other OS code. They have shims that can be enabled on a per-application basis that sit between system calls and the program. Those can then fix such things, e.g. lie about the OS version, allocate a little more than requested to avoid buffer overruns, etc. Windows then ships with a database which application requires which shims; in Vista that included some 5500 programs.


The other side is that Apple is not preferred in many corporate shops exactly because of that.


And how. My company relies on a lot of in-house software that was built against Microsoft technologies from the 1990s, and are still supported. We have plenty of resources; we could port/rewrite them if we needed to. But that isn't cheap, and I imagine we've saved a lot of money over the years thanks to Microsoft's devotion to backward-compatibility on Windows. Not just development cost, but cost related to software defects we have not created because we've been able to leave already-working software in place.

(Web applications that rely on ActiveX, on the other hand. . .)


That's an excellent point. Neither approach is perfect, just different tradeoffs.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: