|This article needs additional citations for verification. (July 2016) (Learn how and when to remove this template message)|
Forward compatibility is a design characteristic that allows a system to gracefully accept input intended for a later version of itself. The concept can be applied to entire systems, electrical interfaces, telecommunication signals, data communication protocols, file formats, and computer programming languages. A standard supports forward compatibility if a product that complies with earlier versions can "gracefully" process input designed for later versions of the standard; the ability of a system to select known input and ignore unknown input also depends on whether the new standard is backward compatible.
The objective for forward compatible technology is for old devices to recognise when data has been generated for new devices.
Forward compatibility is not the same as extensibility. A forward compatible design can process at least some of the data from a future version of itself. An extensible design makes upgrading easy. An example of both design ideas can be found in web browsers. At any point in time, a current browser is forward compatible if it gracefully accepts a newer version of HTML. Whereas how easily the browser code can be upgraded to process the newer HTML determines how extensible it is.
The degree to which forward compatibility is harder than backward compatibility depends entirely on how much of the future system is unknown.
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.
- The Game Boy system was forward compatible with most games created for the Game Boy Color. (Black colored cartridges could be played on either system, however clear-colored cartridges could only be played on the Game Boy Color.)
- The Neo Geo Pocket was also forward compatible with games for the Neo Geo Pocket Color. (Color games would only display in monochrome when played on a Neo Geo Pocket.)
- The Leapster is able to play Leapster L-Max games.
- The Leapster L-Max is able to play Leapster2 games.
- The original PlayStation is compatible with the DualShock 2 controller. Likewise the PlayStation 3 can be played with a DualShock 4 controller.
- It is speculated that Xbox One may run Project Scorpio games due to Scorpio's nature as a hardware refresh or intermediate iteration in typical console generations.
Many application software 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.[clarification needed]
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.[clarification needed]
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.
HTML is designed to treat all tags in the same way (as inert, unstyled inline elements) unless their appearance or behavior is overridden; either by the browser's default settings, or by scripts or styles included in the page. This makes most new features degrade gracefully in older browsers. One case where this did not work as intended was script and style blocks, whose content is meant to be interpreted by the browser instead of being part of the page. Such cases were dealt with by enclosing the content within comment blocks.
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.
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.
- Practical API Design: Confessions of a Java Framework Architect, by Jaroslav Tulach, Apress 2008, ISBN 1-4302-0973-9, ISBN 978-1-4302-0973-7, page 233
- Really undoing html.css by Eric A. Meyer.
- HTML <!--...--> Tag at w3schools.com: 'You can also use the comment tag to "hide" scripts from browsers without support for scripts [...]'.