Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×

The Importance of OS Backwards Compatibility 380

gbjbaanb writes "Raymond Chen (of ancient Microsoft heritage) has a blog where he describes some of the things he's worked on, as well as oddments of obscure code and design decisions in Windows. Regardless of what anyone thinks of Windows, it is informative and often thought-provoking. Recently, Raymond posted an entry about backwards compatibility, and why it is such a big deal for large corporations. Something that I have read about on Slashdot regularly (where Windows is criticized for bothering with it at all), I thought readers would be interested in exactly why Microsoft spends so much effort on backwards compatibility, and by inference, why it is an important topic for getting Linux adopted by big business."
This discussion has been archived. No new comments can be posted.

The Importance of OS Backwards Compatibility

Comments Filter:
  • by NineNine ( 235196 ) on Tuesday November 14, 2006 @12:36PM (#16839052)
    Do people really think Windows does a good job with backward compatibility?

    Absolutely. Probably the best in the industry. You can still run Visicalc on any Windows machine.
  • by Great_Jehovah ( 3984 ) * on Tuesday November 14, 2006 @01:01PM (#16839512)
    We have several in-house apps that were written recently enough to be done in C# and none of them work in Vista. We have two guys working to convert them and they've had no success after spending dozens of hours on the problem.
  • Re:Huh? (Score:3, Informative)

    by Jerf ( 17166 ) on Tuesday November 14, 2006 @01:19PM (#16839864) Journal
    Raymond Chen's blog is worth reading for the technical posts, and the most interesting ones are about Windows reverse compatibility or why certain Windows API things are the way they are, but there is no one link that you can give for them. That's probably why the submitter's links seem unfocused. His blogging software doesn't seem to have any categorization.

    There are some real gems in there and if you are serious about software development you should probably just read the whole blog. Doesn't take that long and you can skip the more personal posts if you like.
  • Incorrect (Score:2, Informative)

    by Orrin Bloquy ( 898571 ) on Tuesday November 14, 2006 @01:21PM (#16839884) Journal
    OOo chokes on Mac Word files from 5.0 and before, and 5.0/Mac was a huge segment of the Word market in the 90s. The current MS Office apps on both platforms can read them. Trust me, I've tested this extensively. Sun has gone on record that they don't think pre-6.0 Word files for Mac are any kind of a priority for OOo, although they hint StarOffice might be able to do it.
  • by LunaticTippy ( 872397 ) on Tuesday November 14, 2006 @01:23PM (#16839922)
    What's the problem? I converted all our in-house vb.net and c# code to work in vista already. The only hiccups I had were a quirky parallel port library for some external hardware. Most of our apps didn't even need to be recompiled.
  • by Anonymous Coward on Tuesday November 14, 2006 @01:26PM (#16839964)
    Of course you can write poor programs that don't work. If you do idiotic stuff like hard code "C:\Documents and Programs\" etc. instead of looking up the user folder using the appropriate API, you'll have problems because you're not programming correctly. I see this all the time, mostly from developers who don't understand best practices of developing software. Recommendation: find some real developers.
  • by ms139us ( 723585 ) on Tuesday November 14, 2006 @01:49PM (#16840320)
    I appreciate where you are coming from and I cannot comment on AIX or HPUX, but I can comment on Solaris. Sun has been fascist about binary backword compatibility.

    I wrote a 32 bit SCSI target driver in the early-90s using the (then deprecated) Solaris 2.3 ABI and it worked flawlessly until the early 2000s when we were required to switch to a 64 bit kernel, a switch we had delayed since the 90s.

    The company still runs a version of Oracle compiled for Solaris 2.2 (1992?) and it works flawlessly, except it has a bug in its use of log archiving that was masked by earlier versions of the UFS. They still run the 14-year old 32 bit Oracle binaries on a 64 bit Solaris 8 box.

    Backword compatibility is critical in the enterprise, and honestly, much of the OSS world ignores this.
  • by Anonymous Coward on Tuesday November 14, 2006 @02:00PM (#16840476)
    > my software works fine with GD 2.0.23

    There are two possibilities: either later versions introduced a bug that breaks your code, or your code does not follow the spec correctly and relies on a bug in the earlier version.

    > Look at the FOX toolkit. The interface completely changed from 1.X to 2.X.

    The FOX toolkit is not 'Linux'. But help is at hand. Just make your code link to (libraryname).so.1 and it will not use the .so.2. You are not forced to use the latest version.

  • by Alphager ( 957739 ) on Tuesday November 14, 2006 @02:24PM (#16840894) Homepage Journal
    why this is modded funny is beyond my understanding: Debian supplies its releases with updates for _ALL_ the software included. Oldstable still includes KDE 2.2 .......
  • by SanityInAnarchy ( 655584 ) <ninja@slaphack.com> on Tuesday November 14, 2006 @03:05PM (#16841666) Journal

    Looks like I'm arguing against it.

    Those who do not understand package management are doomed to reimplement it, poorly. Although you do make a point:

    Note, that this is mearly an issue for third-party packages for your os.

    Perhaps, but most distros now support adding third-party repositories, and even if you don't, when you download a .deb file manually, it's still going to pull in dependencies when you install it.

    Ultimately, I see compiling things statically as being kind of like offering a WinZip Self-Extractor file for a Windows XP program. Ok, it's guaranteed to work, but it's still a bit of pointless waste.

    And by the way:

    Because if something else uses that lib, chances are it will need libfoo-1.7.4.so, and be incompatible with libfoo-1.7.5.so (even though minor version increases shouldn't break compatibility, but it happens anyways).

    There are multiple, very good ways of dealing with this. The libfoo guys shouldn't have broken compatibility, or should've sat around and come up with all the ways they'd like to break compatibility and put together libfoo-2.0.0. Or, the package that's incompatible with libfoo-1.7.5 could depend on libfoo-1.7.4 -- both can easily exist on the same system. Or you could just not symlink libfoo-1.7.5.so to libfoo-1.7.so or any of its other aliases -- packages that know about 1.7.5 can link to the 1.7.5 version, packages which don't know about them will stick with 1.7.4 automatically.

    All of this can be handled by a distro maintainer, so a really simple solution for most of these problems is to simply find a way to allow your app to be distributed, or if you can't do that, pay some developers to maintain parts of the distro that your app cares about, and keep everything compatible.

    And audio/video codecs should not break compatibility between versions... period. How simple can you get? But if you let your app use a shared library, that means your app could automagically get any codec I install with the system.

Happiness is twin floppies.

Working...