Backward compatibility

From Wikipedia, the free encyclopedia

Jump to: navigation, search

In technology, for example in telecommunications and computing, a device or technology is said to be backwards or downwards compatible if it allows input generated by older devices.[1] A standard, for example a data format or a communication protocol, is said to allow backward compatibility, if products designed for the new standard can receive, read, view or play older standards or formats.

This should not be confused with forward compatibility, which implies that old devices allow (or are expected to allow) data formats generated by new (or future) devices, perhaps without supporting all new features. A standard supports forward compatibility if older product versions can receive, read, view or play the new standard.

For example, the introduction of FM stereo transmission, or color television, allowed backward compatibility since new receivers could receive monophonic or black-and-white signals generated by old transmitters. It also allowed forward compatibility, since old (and new) monophonic FM radio receivers and black-and-white TV sets still could receive a signal from a new transmitter.

In programming languages, backwards compatibility refers to the ability of a compiler for version N of the language to accept programs or data that worked under version N - 1.[2] (By this definition, if version N - 1 and other previous versions were also backward compatible, which is often the case, then by the principle of recursion, version N will also accept input that worked under any prior version after the latest one that was not non–backward compatible. However, in practice, features are often deprecated and support is dropped in a later release - yet still thought of as backwards compatible.)

In other contexts, a product or a technology is said to be backward compatible when it is able to fully take the place of an older product, by inter-operating with products that were designed for the older product.[3][Need quotation on talk to verify]

Contents

[edit] Description

Backward compatibility is 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.[citation needed]

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 (which is something that v1 could do.)

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 (assuming that all customers generate files at the same the average rate.)

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] Examples

  • PCI Express 2.0 is backward compatible with PCI Express 1.1.
  • The NTSC color broadcast system was engineered by RCA to be backward compatible with black-and-white NTSC television sets.
  • The IBM 7080 transistorized computer was backward compatible with all models of the IBM 705 vacuum tube computer.
  • Numerous video game consoles are backward compatible and are able to play the games created for predecessor consoles:
  • Most Blu-ray disc drives are able to play standard DVD discs.
  • Microsoft Windows contains application compatibility shims to make the platform 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. Windows versions at least until Vista also maintain the ability to run 16-bit DOS programs (with technical limitations which give rise to many exceptions) so Windows can be said to be backward-compatible with MS-DOS, its predecessor.
  • 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.
  • By adding the proper external hardware, many video game 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 Converter".
    • The Super Nintendo Entertainment System can play games for the Nintendo Entertainment System by adding a Super 8.
    • 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 licensed by Nintendo. The Nintendo 64 can also play Gameboy Advance games by adding a Super Wideboy, although this add-on was for developer use only.
  • Several computer operating systems have various methods of running software originally designed for older versions or other OSs:
    • 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

[edit] References

[edit] External links