Backward compatibility

From Wikipedia, the free encyclopedia

In technology, especially computing (irrespective of platform), a product is said to be backward compatible when it is able to take the place of an older product, by interoperating with products that were designed for the older product.

Contents

[edit] Description

Backward compatibility is a relationship between two components, rather than being an attribute of just one of them. More generally, a new component is said to be backward compatible if it provides all of the functionality of the old component.

Backward compatibility is the special case of compatibility in which the new component has a direct historical ancestral relationship with the old component. If this special relationship does not exist then it not usually spoken of as "backward" compatibility but is instead just "compatible"—a consistent interface allowing interoperability between components and products that were each developed separately.

Data does nothing in the absence of an interpreter, so the notion of compatibility does not apply to document files, it only applies to software. In the case of a program that creates document files, a new version of that program ("v2") is said to be backward compatible with the old version of the program ("v1") when it can both read and write documents that work with v1. Everything that v1 could do must also be possible with v2, including saving documents that can be read by v1.

If a newer software version cannot save files that can be read by the older version, it is not backward compatible with the older version, although it may provide an irreversible upgrade capability for the old files. This situation has often been used strategically by software vendors to force customers to purchase upgrades since, over time, the number of data files usable by an old version diminishes at a rate proportional to the number of other customers that have upgraded.

Levels of compatibility vary. In software, binary-compatibility and source-compatibility are distinguishable. Binary compatibility means that programs can work correctly with the new version of this library without requiring recompilation. Source compatibility requires recompilation but no changes to the source code.

Many platforms rely on emulation, the simulation of an older platform in software, to achieve backward compatibility.

[edit] Compatibility checking

Approaches for checking compatibility between the client program and the server component include:

  • Check by version number;
  • Check by an interface definition language (IDL)
  • Check by just-in-time test runs (the client program gives some example inputs to the server component to see if the component returns the desired example outputs).

[edit] Alternate meaning

In certain contexts, people will sometimes refer to syntax additions or library changes that would break previous compilers or runtimes as "backward incompatible". In this case, the meaning of backward compatibility has been overloaded to mean both "new server is compatible with old input" and "old server is compatible with new input". This secondary meaning is closer to Forward compatibility, though its use is not uncommon.

[edit] Examples

  • PCI Express 2.0 is backwards compatible with PCI Express 1.1
  • The telephone is one of the few inventions being 100% backwards compatible, meaning the very first telephone could be hooked up and could work like any new telephone.
  • The Canon EF-S lens mount for Canon digital SLRs is backward compatible with the Canon EF lens mount.
  • The NTSC colour broadcast system was engineered by RCA to be backward compatible with black-and-white television sets.
  • A computer system is backward compatible if it is able to work with software or accessories designed for the system it is meant to replace.
    • The IBM 7080 transistorized computer was backward compatible with all models of the IBM 705 vacuum tube computer.
    • The Atari 7800 is backward compatible with most Atari 2600 games.
    • The Commodore 128 is 99% backward compatible with Commodore 64 software and hardware.
    • The Game Boy Advance line (except the Game Boy Micro) is backward compatible with previous Game Boy systems, meaning all Game Boy and Game Boy Color titles are playable on this system.
    • The Nintendo DS is backward compatible with Game Boy Advance games only in single-player mode, due to the system's lack of a GBA link cable port.
    • The PlayStation 2 is backward compatible with most of the original PlayStation library.
    • The PlayStation 3 is backward compatible with most PlayStation and PlayStation 2 games. This is provided by the inclusion of the original Emotion Engine chip that is built inside the PS2. This form of compatibility is only available to the first series of consoles that launched across North America, Japan, Hong Kong and Taiwan, the later launch of the system in many PAL areas (Europe, Oceania, Asia) lacked the chip provided in the original units and instead relied on software emulation (which greatly reduced the number of playable titles) for backwards compatibility. It was announced that future versions of the console in all areas will lack the Emotion Engine with the first use of this seen in the new 80GB model. Also the new 40GB model removes PS2 compatibility altogether to lower costs but retains the ability to play PSone titles as this functionality is implemented entirely in software.
    • All of Intel x86 processorsCore 2, Core, Pentium 4, Pentium III, Pentium II, Pentium Pro, Pentium, 80486, 80386, 80286, 80186 and 8086 – are backward compatible with their predecessors, because they can execute programs written for an earlier processor.
    • The Mega Drive/Genesis is backward compatible with the Master System, howe. Master System controllers can also be used with the Mega Drive.
    • The Xbox 360 is backward compatible with some Xbox games. This is achieved through emulation.
    • The Wii is backward compatible with all games from the previous Nintendo system, the Nintendo GameCube, due to it being based on the PowerPC, the same base as the latter. It is compatible with GameCube controllers and memory cards but not with other peripherals such as the Game Boy Player. Some games originally released for older consoles – the NES, SNES, Nintendo 64, Sega Genesis, Turbografx 16 and Neo Geo – are available to play on the Wii via emulation, however the Wii cannot be said to be backward compatible with these systems as the software in its original format (i.e. cartridges) cannot be used.
  • Other examples of backward-compatible software
    • Microsoft Windows 32-bit versions contain code to be backward compatible with most software from earlier 32-bit and 16 bit versions (e.g. Civilization (circa 1991, designed for Windows 3.0) running on Windows Vista). XP, Vista and Server x64 versions drop 16 bit support for reliability while maintaining 32-bit support.
    • Microsoft Word 2000 was backward compatible with Word 97 because it could read and write files in Word 97 format, with the understanding that features unique to Word 2000 would not appear in Word 97. Same applied to Word 2002 and Word 2003.
    • By adding the proper external hardware, many consoles can become backward compatible. This includes:
      • The Atari 5200 can play Atari 2600 games by adding the "Atari VCS Cartridge Adapter".
      • The ColecoVision can play Atari 2600 games by adding the "Expansion Module #1".
      • The Intellivision can play Atari 2600 games by adding the "System Changer".
      • Although the Sega Mega Drive/Genesis is backward compatible with the Sega Master System, due to a different cartridge format games can not be played without adding a pass-through cart. The Mega Drive also supports Master System controllers.
      • The Sega Game Gear can play Sega Master System games by adding a "Master Gear".
      • The Super Nintendo Entertainment System can play games for the original Game Boy by adding a "Super Game Boy" cartridge
      • The Super Nintendo Entertainment System can play games for the Nintendo Entertainment System by adding a Super 8 (video game accessory).
      • The Nintendo 64 can play games for the Nintendo Entertainment System and Super Nintendo Entertainment System by adding a Tristar 64, although this add-on was not licenced by Nintendo.
      • The Nintendo GameCube can play any existing game from the Game Boy line by adding a "Game Boy Player" add-on and disc.
    • Several computer operating systems have various methods of running software originally designed for older versions or other OSes:
      • Windows NT and successors have various subsystems to run legacy applications. MS-DOS and Win16 subsystems (only on i386) can run some applications for those platforms, and it has an OS/2 subsystem for running CLI OS/2 applications.

[edit] See also