Backward compatibility
Backward compatibility is a property of a system, product, or technology that allows for interoperability with an older legacy system, or with input designed for such a system, especially in telecommunications and computing. Backward compatibility is sometimes abbreviated to BC, or called downward compatibility.[1] Modifying a system in a way that does not allow backward compatibility is sometimes called "breaking" backward compatibility.[2] A complementary concept is forward compatibility, which is a design philosophy, usually based on open standards, that strives for methods that will continue to work with newer and future products. Design that is forward-compatible usually has a roadmap for compatibility with future standards and products.[3]
Benefits and cost
The associated benefits of backward compatibility are: the appeal to an existing user base through an inexpensive upgrade path; and the network effect, which is particularly important, because it increases the value of goods and services proportionally to the size of the user base. The associated costs of backward compatibility are: a higher bill of materials if hardware is required to support the legacy systems; increased complexity of the product which may lead to longer time to market, technological hindrances, and slowing innovation; and increased expectations from the users in term of compatibility.[2]
Hardware
A simple example of both backward and forward compatibility is the introduction FM radio in stereo. FM radio was initially mono, having only one audio channel represented by one signal. With the introduction of two-channel stereo FM radio, a large number of listeners had only mono FM receivers. Forward compatibility for mono receivers with stereo signals was achieved through sending the sum of both left and right audio channels in one signal, and the difference in another signal. This allows mono FM receivers to receive and decode the sum signal while ignoring the difference signal, which is only necessary for separating the audio channels. Stereo FM receivers can receive a mono signal and decode it without the need for a second signal, and they can separate a sum signal to left and right channels if both sum and difference signals are received. Without the requirement for backward compatibility, a simpler method could have been chosen.[4]
Full backward compatibility is particularly important in computer instruction set architectures, one of the most successful being the x86 family of microprocessors. Their full backward compatibility spans back to the Intel 8080 processors produced in 1974, but not to its predecessor the Intel 8008. These fully backward compatible processors can process the same binary executable software instructions as their predecessors, allowing the use of a newer processor without having to acquire new applications or operating systems.[5] Similarly, the success of the Wi-Fi digital communication standard is attributed to its broad forward and backward compatibility, growing in popularity over standards that weren't backward compatible.[6]
Software
A program that creates document files may have a new version of that program that is said to be backward compatible with the old version of the program when it can both read and write documents that work with the old version. Everything that the old version could do must also be possible to do with the new version, including saving documents that can be read by the old version. 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.
Many computer programs write their software versioning number in the data files and documents they create. This allows for newer programs recognize the data structure and allow some compatibility with it. Even when the newer program is unable to completely understand deprecated features in documents produced by a much earlier version of the program, the presence of a version number can help the user find some previous version of the program that can completely understand that file.
Backward compatibility of software libraries can be separated to binary compatibility and source compatibility. Binary compatibility means that newer versions of the library work with legacy software without requiring recompilation of the software, while source compatibility requires recompilation of the software but no changes to the source code.
Many platforms rely on emulation, the simulation of an older platform in software, to achieve backward compatibility.
Compiler backward compatibility may refer to the ability of a compiler of a newer version of the language to accept programs or data that worked under the previous version.[7] By this definition, if the previous versions were also backward compatible, which is often the case, then the new version will also accept input that worked under any prior version after, and including, the latest one that was not backward compatible. However, in practice, features are often deprecated and support is dropped in a later release, which is yet thought of as backward compatible.
A data format is said to be backward compatible with its predecessor if every message or file that is valid under the old format is also valid, and retains its meaning, under the new.[8]
Bugwards compatible
A newer system that attempts to achieve integration with an older system may implement backwards compatibility that maintains the known flaws—or "bugs"—in a way that is referred to as bug-compatible or "bugwards-compatible".[9][10][11]
Format rot
When backward compatibility is neglected, "format rot" may occur: loss of data not due to losing information, but due to losing the means to interpret it, either through unavailability of software to parse the format, unavailability of the operating system to run said software, or unavailability of hardware to run said operating system. Open formats are more resistant to format rot than proprietary formats.
List of backward compatible systems
Software
- Microsoft Office products can read and write most files created by previous versions.
- Several computer operating systems have various methods of running software originally designed for older versions or other OSes:
- Mac OS 9 applications could be run on PowerPC versions of Mac OS X up to 10.4 Tiger.
- 32-bit versions of Microsoft Windows can run 16-bit Windows software and some MS-DOS software.
- 64-bit versions of Windows can run 32-bit software.
- The Intel versions of Mac OS X from versions 10.4 (Tiger) to 10.6 (Snow Leopard) had Rosetta, a binary translation program that allowed applications meant for use on PowerPC Macs to run on Apple systems that use Intel processors.
Video game consoles
Numerous video game consoles are backward compatible and are able to play the games created for predecessor consoles.
- The Atari 7800 is backward compatible with almost all Atari 2600 games.
- The Sega 32X add-on is backward compatible with all Sega Genesis cartridges.
- The Game Boy line and Nintendo DS line contain many instances of backwards-compatibility:
- The Game Boy Color is backward compatible with all Game Boy cartridges.
- The Game Boy Advance and Game Boy Advance SP are backward compatible with all Game Boy and Game Boy Color games.
- The Nintendo DS and the Nintendo DS Lite are backward compatible with all Game Boy Advance games.
- The Nintendo 3DS line are backward compatible with most Nintendo DS and Nintendo DSi software.
- Similarly, the Wii U can play Wii games, and the Wii could play GameCube games.
- The PlayStation 2 and PlayStation 3 are backward compatible with most of the original PlayStation library. Likewise, earlier models of the PlayStation 3 could play most PlayStation 2 games.
- The Xbox 360 can play some Xbox games via software emulation. Similarly, the Xbox One can play over 250+ Xbox 360 games.[12]
Computer hardware
- PCI Express 2.0 is backward compatible with PCI Express 1.1.
- Universal Serial Bus (USB) ports support devices intended for earlier versions of USB. For example, USB 3.0 ports support USB 2.0 and USB 1.1 devices.
- The IBM 7080 transistorized computer was backward compatible with all models of the IBM 705 vacuum tube computer.
TV and video
- The NTSC color broadcast system was engineered by RCA to be backward compatible with black-and-white NTSC television sets.
- DVB-T MPEG4 television tuners can also decode MPEG2 signal.
- Most DVD drives are able to play standard CDs, and most Blu-ray players can also play standard DVDs and CDs.
Camera lenses
- The modern Nikon F-mount SLR camera lenses from the late 1970s - present (its design dates back to 1959) can function on the newer Nikon DSLR cameras with some limitations.
- Lenses for the Canon EF-mount, introduced with the company's EOS family of film SLRs in 1987 and used to this day on Canon full-frame and APS-H EOS DSLRs, can function fully on the company's APS-C DSLRs that use the Canon EF-S-mount (although their angle of view will be different on the smaller APS-C sensor).
Telephone
- When Touch Tone dialing was introduced into the telephone system, the network continued to work with the existing rotary telephones, a situation that continues today.
- Telephones that used Pulse dialing were compatible with parts of the telephone network that did not yet work with tone dialing by mimicking the pulses generated by a rotary phone.
See also
References
- ↑ J.K. Petersen (2002), The Telecommunications Illustrated Dictionary (Second ed.), CRC Press, ISBN 9781420040678
- 1 2 Paul Belleflamme; Martin Peitz (2010), "Strategies in standard wars", Industrial Organization: Markets and Strategies, Cambridge University Press, ISBN 9780521862998
- ↑ Jeffrey Zeldman (2006). Designing with Web Standards. Peachpit Press. pp. 15–16. ISBN 0-321-38555-1.
- ↑ Steve Winder; Joseph Carr (2002), Newnes Radio and RF Engineering Pocket Book (3 ed.), Newnes, pp. 121–123, ISBN 9780080497471
- ↑ Naresh Jotwani (2009), Computer System Organization, Tata McGraw-Hill Education, pp. 320–324, ISBN 9781259081217
- ↑ Eldad Perahia; Robert Stacey (2013), "Foreword", Next Generation Wireless LANs: 802.11n and 802.11ac, Cambridge University Press, ISBN 9781107016767
- ↑ Michael Kay, XSLT 2.0 Programmer's Reference, Wiley Default, 2004 ISBN 0-7645-6909-0 ISBN 978-0-7645-6909-8
- ↑ Bert Bos (2003), "Backwards Compatibility", What is a good standard?, retrieved July 12, 2016
- ↑ Keith Dawson, Jargon Scout
- ↑ Tobias Reif, bugwards compatibility, XHTML, embed
- ↑ Autoconf 2.13
- ↑ "All the Xbox One Backwards Compatibility Games". GameSpot. CBS Interactive. Retrieved September 30, 2016.