Backward compatibility refers to hardware or software that can successfully use interfaces and data from earlier versions of the system or with other systems. For example, Perl, the scripting language, was designed to be backward compatible with awk, an earlier language that Perl was designed to replace.
Backward compatibility is more easily accomplished if the previous versions have been designed to be forward compatible, or extensible, with built-in features such as hooks, plug-in, or an application program interface (API) that allows the addition of new features.
The term backward combatible (notice the "b") is sometimes used to describe hardware or software that is designed without regard for compatibility with earlier versions, causing the two versions to fight (or combat) each other. In this case, the two versions cannot share data easily and may have features that cause errors or crashes when they are installed on the same computer, often because the computer does not understand which version is being referred to. Even if the earlier version is removed, remaining vestiges of it may cause problems in running the newer version.