Forward compatibility
Encyclopedia
Forward compatibility or upward compatibility (sometimes confused with extensibility
) is a compatibility
concept
for system
s design
, as e.g. backward compatibility
. Forward compatibility aims at the ability of a design to gracefully accept input
intended for later version
s of itself. The concept can be applied to entire systems, electrical interface
s, telecommunication
signals, data communication protocols
, file format
s, and computer
programming language
s. A standard
supports forward compatibility if older product
versions can receive, read, view, play or execute the new standard.
The applicability of a forward compatible system with new versions requires not only the respecting of the older version by the designers of the newer version but additionally some agreement
on future design features with the design freeze
of current versions.
The introduction of a forward compatible technology implies that old devices partly can understand data generated by new devices.
Although forward compatibility and extensibility
concepts are similar, they are not the same. A forward compatible design can accept data from a future version of itself and pick out the "known" part of the data. An example is a text-only word processor ignoring picture data from a future version. An extensible design is one that can be upgraded to fully handle the new data in the newer input format. An example is a text-only word processor that can be upgraded to handle picture data.
A forward compatible system is expected to "gracefully
" handle input which is intended for a newer version, by ignoring the unknowns and selecting the known subset of the data that the system is capable of handling.
Forward compatibility is harder to achieve than backward compatibility because a system needs to cope gracefully with an unknown future data format
or requests for unknown future features. Backward compatibility does not have this issue because it accepts a known data format.
system was forward compatible with most games created for the Game Boy Color
. (Clear-colored cartridges however housed games not backward compatible.)
systems are designed with a robust and self-sufficient systems architecture
so that they can operate adequately even when input for a more advanced version is entered.
In all cases, when the application system accepts the input data or operating system is not as expected, it will produce an output
that will identify the problem accurately for the user.
More subtly, it also indicates whether chunks are safe to copy by readers that do not recognize them – thus ensuring that data does not become out of sync.
Extensibility
In software engineering, extensibility is a system design principle where the implementation takes into consideration future growth. It is a systemic measure of the ability to extend a system and the level of effort required to implement the extension...
) is a compatibility
Compatibility
Compatibility may refer to:* Astrological compatibility* Compatibilism – a philosophical position* Compatibility * Compatibility * Compatibility * Electromagnetic compatibility* Interpersonal compatibility-Computing:...
concept
Concept
The word concept is used in ordinary language as well as in almost all academic disciplines. Particularly in philosophy, psychology and cognitive sciences the term is much used and much discussed. WordNet defines concept: "conception, construct ". However, the meaning of the term concept is much...
for system
System
System is a set of interacting or interdependent components forming an integrated whole....
s design
Design
Design as a noun informally refers to a plan or convention for the construction of an object or a system while “to design” refers to making this plan...
, as e.g. backward compatibility
Backward compatibility
In the context of telecommunications and computing, a device or technology is said to be backward or downward compatible if it can work with input generated by an older device...
. Forward compatibility aims at the ability of a design to gracefully accept input
Input
Input is the term denoting either an entrance or changes which are inserted into a system and which activate/modify a process. It is an abstract concept, used in the modeling, system design and system exploitation...
intended for later version
Version
Software versioning is the process of assigning either unique version names or unique version numbers to unique states of computer software. Within a given version number category , these numbers are generally assigned in increasing order and correspond to new developments in the software...
s of itself. The concept can be applied to entire systems, electrical interface
Interface
-Academic journals:* Interface: a journal for and about social movements* Interfaces * Journal of the Royal Society Interface* The Technology Interface Journal-Science:* Biointerface* Interface , boundary surface...
s, telecommunication
Telecommunication
Telecommunication is the transmission of information over significant distances to communicate. In earlier times, telecommunications involved the use of visual signals, such as beacons, smoke signals, semaphore telegraphs, signal flags, and optical heliographs, or audio messages via coded...
signals, data communication protocols
Communications protocol
A communications protocol is a system of digital message formats and rules for exchanging those messages in or between computing systems and in telecommunications...
, file format
File format
A file format is a particular way that information is encoded for storage in a computer file.Since a disk drive, or indeed any computer storage, can store only bits, the computer must have some way of converting information to 0s and 1s and vice-versa. There are different kinds of formats for...
s, and computer
Computer
A computer is a programmable machine designed to sequentially and automatically carry out a sequence of arithmetic or logical operations. The particular sequence of operations can be changed readily, allowing the computer to solve more than one kind of problem...
programming language
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....
s. A standard
Standard
A technical standard is an established norm or requirement about technical systems. It is usually a formal document that establishes uniform engineering or technical criteria, methods, processes and practices. In contrast, a custom, convention, company product, corporate standard, etc...
supports forward compatibility if older product
Product
- Business :*Product , an item that ideally satisfies a market's want or need**Product , a deliverable or set of deliverables that contribute to a business solution**Nanoproduct, a product that has been enhanced with nanotechnology...
versions can receive, read, view, play or execute the new standard.
The applicability of a forward compatible system with new versions requires not only the respecting of the older version by the designers of the newer version but additionally some agreement
Agreement
Agreement may refer to:* Agreement or concord, cross-reference between parts of a phrase* Gentlemen's agreement, not enforceable by law* Contract, enforceable in a court of law...
on future design features with the design freeze
Product lifecycle management
In industry, product lifecycle management is the process of managing the entire lifecycle of a product from its conception, through design and manufacture, to service and disposal...
of current versions.
The introduction of a forward compatible technology implies that old devices partly can understand data generated by new devices.
Although forward compatibility and extensibility
Extensibility
In software engineering, extensibility is a system design principle where the implementation takes into consideration future growth. It is a systemic measure of the ability to extend a system and the level of effort required to implement the extension...
concepts are similar, they are not the same. A forward compatible design can accept data from a future version of itself and pick out the "known" part of the data. An example is a text-only word processor ignoring picture data from a future version. An extensible design is one that can be upgraded to fully handle the new data in the newer input format. An example is a text-only word processor that can be upgraded to handle picture data.
A forward compatible system is expected to "gracefully
Graceful exit
A graceful exit is a simple programming idiom wherein a program detects a serious error condition and "exits gracefully" in a controlled manner as a result...
" handle input which is intended for a newer version, by ignoring the unknowns and selecting the known subset of the data that the system is capable of handling.
Forward compatibility is harder to achieve than backward compatibility because a system needs to cope gracefully with an unknown future data format
Data format
Data format in information technology can refer to either one of:* Data type, constraint placed upon the interpretation of data in a type system* Signal , a format for signal data used in signal processing...
or requests for unknown future features. Backward compatibility does not have this issue because it accepts a known data format.
Telecommunication standards
The introduction of FM stereo transmission, or color television, allowed forward compatibility, since monophonic FM radio receivers and black-and-white TV sets still could receive a signal from a new transmitter. It also allowed backward compatibility since new receivers could receive monophonic or black-and-white signals generated by old transmitters.Video gaming
The Game BoyGame Boy
The , is an 8-bit handheld video game device developed and manufactured by Nintendo. It was released in Japan on , in North America in , and in Europe on...
system was forward compatible with most games created for the Game Boy Color
Game Boy Color
The is Nintendo's successor to the 8-bit Game Boy handheld game console, and was released on October 21, 1998 in Japan, November 19, 1998 in North America, November 23, 1998 in Europe and November 27, 1998 in the United Kingdom. It features a color screen and is slightly thicker and taller than...
. (Clear-colored cartridges however housed games not backward compatible.)
Systems architecture
Many application softwareApplication software
Application software, also known as an application or an "app", is computer software designed to help the user to perform specific tasks. Examples include enterprise software, accounting software, office suites, graphics software and media players. Many application programs deal principally with...
systems are designed with a robust and self-sufficient systems architecture
Systems architecture
A system architecture or systems architecture is the conceptual model that defines the structure, behavior, and more views of a system.An architecture description is a formal description and representation of a system, organized in a way that supports reasoning about the structure of the system...
so that they can operate adequately even when input for a more advanced version is entered.
In all cases, when the application system accepts the input data or operating system is not as expected, it will produce an output
Output
Output is the term denoting either an exit or changes which exit a system and which activate/modify a process. It is an abstract concept, used in the modeling, system design and system exploitation.-In control theory:...
that will identify the problem accurately for the user.
Document formats
An example of forward compatibility is with a word processor. Assume that Version 1 of a word processor only allows text, and no graphics. It saves files with only information about the text typed, and the font, color, and size of the text. Let's say that the program adds the mark [VERSION1 END] to denote the end of the file. However, next year Version 2 is released that accepts graphics. However, the new word processor saves all of the text at the beginning of the file, puts the [VERSION1 END] mark, and then stores the picture data next, and puts a [VERSION2 END] mark after the picture data. The Version 1 word processor would still be able to read the text data up to the [VERSION1 END] mark, but would ignore the picture data afterward. When Version 3 is released that allows videos in the word processor file, it would save in this format: text data [VERSION1 END], picture data [VERSION2 END], and video data [VERSION3 END].Adobe Reader / Adobe Acrobat
Although the above file design allows forward compatibility, there are additional features that can be added to be more useful to the user. One would be if Version 1 of a program printed a message that the file was created with a newer version of the software, and that some data was not available. The Adobe Reader program generates a message notifying the user of a PDF file that it was created in a newer version of Adobe Acrobat, and some features will not be available.MS Word
Another useful feature is if Version 1 of a program offered to download a viewer or converter that allows the user to at least read files from newer versions of the program, even though the user may not be able to edit them. In the above word processor example, Version 1 would download updates from the internet that allows the user to see the pictures and videos in later versions of the word processor, even though the user cannot add, edit, or modify the multimedia data, due to that functionality not being in Version 1. An example of this functionality is Microsoft Word. When a document is created in Microsoft Word 2007 and opened in an earlier version (like Microsoft Word 2003), Microsoft Word 2003 tells the user it can download a converter to read files in the newer Microsoft Word 2007 format. This allows Microsoft Word 2003 to read data created by Microsoft Word 2007, even though the user cannot use Microsoft Word 2003 to build new data in the advanced format.PNG
An example of forward compatibility is the Portable Network Graphics (PNG) format, which divides data into "chunks", and indicates whether these are "critical" or "ancillary", where ancillary chunks can be ignored by programs that do not understand them.More subtly, it also indicates whether chunks are safe to copy by readers that do not recognize them – thus ensuring that data does not become out of sync.
External links
- Rule of Extensibility: Design for the future, because it will be here sooner than you think, in The Art of Unix ProgrammingThe Art of Unix ProgrammingThe Art of Unix Programming by Eric S. Raymond is a book about the history and culture of Unix programming from its earliest days in 1969 to 2003 when it was published, covering both genetic derivations such as BSD and conceptual ones such as Linux....