Computer hardware or software is said to be bug compatible if it exactly replicates an undesirable feature
of a previous version. The phrase is found in the
Jargon File
The Jargon File is a glossary and usage dictionary of slang used by computer programmers. The original Jargon File was a collection of terms from technical cultures such as the MIT Computer Science and Artificial Intelligence Laboratory, MIT AI Lab ...
.
An aspect of maintaining
backward compatibility
In telecommunications and computing, backward compatibility (or backwards compatibility) is a property of an operating system, software, real-world product, or technology that allows for interoperability with an older legacy system, or with Input ...
with an older system is that such systems' client programs often do not only depend on their specified interfaces but also
bugs and unintended behaviour that must also be preserved by the newer replacement. Besides the significantly higher complexity that needs to be maintained during the natural evolution of the code or interface, it can sometimes cause performance or security issues, and the inconsistencies in the behaviour of interfaces can sometimes lead to new bugs in the software using it, creating difficult to resolve multi-directional cross dependencies between various pieces of code.
Examples
DOS
Examples can be found in
MS-DOS
MS-DOS ( ; acronym for Microsoft Disk Operating System, also known as Microsoft DOS) is an operating system for x86-based personal computers mostly developed by Microsoft. Collectively, MS-DOS, its rebranding as IBM PC DOS, and a few op ...
/
PC DOS:
When MS-DOS/PC DOS 3.1 and higher (including
Windows 9x
Windows 9x is a generic term referring to a line of discontinued Microsoft Windows operating systems released from 1995 to 2000 and supported until 2006, which were based on the kernel introduced in Windows 95 and modified in succeeding version ...
) and
OS/2
OS/2 is a Proprietary software, proprietary computer operating system for x86 and PowerPC based personal computers. It was created and initially developed jointly by IBM and Microsoft, under the leadership of IBM software designer Ed Iacobucci, ...
detect certain
FAT OEM labels, they do not trust some
BIOS Parameter Block (BPB) values and recalculate them from other disk geometry parameters in order to work around several
off-by-one calculation errors caused by some of their formatter software under earlier issues of these systems.
While this undocumented behaviour allows them to cope with these incorrectly formatted volumes specifically, it limits the flexibility of disk geometries they can work with in general and can cause them to trash validly formatted volumes created by third-parties if they deviate from the defaults used by
Microsoft
Microsoft Corporation is an American multinational corporation and technology company, technology conglomerate headquartered in Redmond, Washington. Founded in 1975, the company became influential in the History of personal computers#The ear ...
and
IBM
International Business Machines Corporation (using the trademark IBM), nicknamed Big Blue, is an American Multinational corporation, multinational technology company headquartered in Armonk, New York, and present in over 175 countries. It is ...
.
When MS-DOS/PC DOS 5.0 and higher are running on 286 or higher processors, the resident
executable loader contains code specially designed to detect and fix certain widespread applications and stub loaders (such as programs linked with older versions of Microsoft's
EXEPACK or
Rational Systems' 386 DOS extenders) by patching the loaded program image before executing it.
Under certain conditions an underlying DOS also patches Windows (
WINA20.386).
Over the course of development,
DR-DOS also had to be modified to not only emulate many undocumented peculiarities and undesirable properties of MS-DOS and PC DOS (like having to use certain misleading filenames such as
IBMBIO.COM,
IBMDOS.COM or
COUNTRY.SYS for files which do not follow the specs for executables under DOS,
or having to introduce a
directory path length-limited
Current Directory Structure (CDS) internally
), but also actual bugs in the kernel and several drivers, in order to make certain other drivers and applications run on DR-DOS, when they were tested on specific versions of MS-DOS only.
Windows
Windows
Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
, which has traditionally emulated many old system bugs to allow older low-level programs to run, is another example. As a result,
Wine
Wine is an alcoholic drink made from Fermentation in winemaking, fermented fruit. Yeast in winemaking, Yeast consumes the sugar in the fruit and converts it to ethanol and carbon dioxide, releasing heat in the process. Wine is most often made f ...
, which makes it possible to run many Windows applications on other platforms, also needs to maintain bug compatibility with Windows.
Other
During development of its
IBM PC compatible,
Compaq
Compaq Computer Corporation was an American information technology, information technology company founded in 1982 that developed, sold, and supported computers and related products and services. Compaq produced some of the first IBM PC compati ...
engineers found that ''
Microsoft Flight Simulator'' would not run because of what
subLOGIC's
Bruce Artwick described as "a bug in one of
Intel
Intel Corporation is an American multinational corporation and technology company headquartered in Santa Clara, California, and Delaware General Corporation Law, incorporated in Delaware. Intel designs, manufactures, and sells computer compo ...
's chips", forcing them to make their computer bug-compatible with the IBM PC.
Dozens of makers of clones of the
IBM Enhanced Graphics Adapter had to replicate its bugs, using a
clean room design to not infringe on IBM copyright.
Another hardware example is found in the design of the
IBM Personal Computer/AT
The IBM Personal Computer AT (model 5170, abbreviated as IBM AT or PC/AT) was released in 1984 as the fourth model in the IBM Personal Computer line, following the IBM PC/XT and its IBM Portable PC variant. It was designed around the Intel 8 ...
A20 address line to emulate the behaviour in older processors.
Microsoft Excel
Microsoft Excel is a spreadsheet editor developed by Microsoft for Microsoft Windows, Windows, macOS, Android (operating system), Android, iOS and iPadOS. It features calculation or computation capabilities, graphing tools, pivot tables, and a ...
has always had a deliberate
leap year bug
The leap year problem (also known as the leap year bug or the leap day bug) is a problem for both digital (computer-related) and non-digital documentation and data storage situations which results from errors in the calculation of which years are ...
, which falsely treats 29 February 1900 as an actual date, to ensure backward compatibility with
Lotus 1-2-3
Lotus 1-2-3 is a discontinued spreadsheet program from Lotus Software (later part of IBM). It was the first killer application of the IBM PC, was hugely popular in the 1980s, and significantly contributed to the success of IBM PC-compatibles ...
.
Hyrum Wright, an engineer at
Google
Google LLC (, ) is an American multinational corporation and technology company focusing on online advertising, search engine technology, cloud computing, computer software, quantum computing, e-commerce, consumer electronics, and artificial ...
, talks about this problem that he observed firsthand while working on C++ core libraries. It was
Titus Winters, also an engineer at Google, who popularized this concept on a larger scale as "
Hyrum's Law".
The
HTTP referer header is a misspelling of the word ''
referrer''. It was a mistake in the original web proposal, and was kept for compatibility.
See also
*
AARD code
*
Plug compatible
*
Software bug
A software bug is a design defect ( bug) in computer software. A computer program with many or serious bugs may be described as ''buggy''.
The effects of a software bug range from minor (such as a misspelled word in the user interface) to sev ...
*
API
An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
Notes
References
{{reflist, refs=
[{{cite news , url=https://archive.org/stream/1985-01-computegazette/Compute_Gazette_Issue_19_1985_Jan#page/n33/mode/2up , title=Bruce Artwick / The Designer Behind Flight Simulator II , work=Compute!'s Gazette , date=January 1985 , access-date=2014-07-06 , author-last=Yakal , author-first=Kathy , page=32]
[{{cite web , url=http://www.jargon.net/jargonfile/b/bug-compatible.html , title=Bug-compatible - www.jargon.net , access-date=2010-02-03]
[{{cite book , author-first1=Andrew , author-last1=Schulman , author-first2=Ralf D. , author-last2=Brown , author-link2=Ralf D. Brown , author-first3=David , author-last3=Maxey , author-first4=Raymond J. , author-last4=Michels , author-first5=Jim , author-last5=Kyle , title=Undocumented DOS: A programmer's guide to reserved MS-DOS functions and data structures - expanded to include MS-DOS 6, Novell DOS and Windows 3.1 , publisher= Addison Wesley , edition=2 , date=1994 , orig-year=November 1993 , isbn=0-201-63287-X , location=Reading, Massachusetts , url-access=registration , url=https://archive.org/details/undocumenteddosp00andr_0 (xviii+856+vi pages, 3.5"-floppy) Errata]
https://web.archive.org/web/20190417212906/https://www.pcjs.org/pubs/pc/programming/Undocumented_DOS/#errata-2nd-edition]
[{{cite web , title=Need DOS 6.22 (Not OEM) , author-first=Matthias R. , author-last=Paul , date=2002-02-20 , work=alt.msdos.programmer , url=https://groups.google.com/d/msg/alt.msdos.programmer/MAv9LuYQjs8/HuYCph4KsQYJ , access-date=2006-10-14 , url-status=live , archive-url=https://archive.today/20170909145248/https://groups.google.com/forum/%23!msg/alt.msdos.programmer/MAv9LuYQjs8/HuYCph4KsQYJ , archive-date=2017-09-09]
[{{cite web , title=Re: masm .com (PSP) related trouble , author-first=Matthias R. , author-last=Paul , date=2002-10-07 , work=alt.lang.asm , url=https://groups.google.com/d/msg/alt.lang.asm/PNOd9zfYow0/vXbab16j4XwJ , access-date=2017-09-03 , url-status=live , archive-url=https://archive.today/20170903231100/https://groups.google.com/forum/%23!msg/alt.lang.asm/PNOd9zfYow0/vXbab16j4XwJ , archive-date=2017-09-03]
[{{cite web , url=https://wiki.winehq.org/Wine_Features , title=WineFeatures - The Official Wine Wiki , access-date=2010-02-03]
[{{cite web , title=Treiber dynamisch nachladen (Intra-Segment-Offset-Relokation zum Laden von TSRs in die HMA) , trans-title=Loading drivers dynamically (Intra-segment offset relocation to load TSRs into the HMA) , author-first=Matthias R. , author-last=Paul , date=2002-02-02 , work=de.comp.os.msdos , language=German , url=https://groups.google.com/d/msg/de.comp.os.msdos/tdvpBoMVN6A/a_zqDxGk22IJ , access-date=2017-07-02 , url-status=live , archive-url=https://archive.today/20170909085006/https://groups.google.com/forum/%23!msg/de.comp.os.msdos/tdvpBoMVN6A/a_zqDxGk22IJ , archive-date=2017-09-09 (NB. Gives a comprehensive overview on the history and "nature" of the High Memory Area, HMA and the non-obvious design constraints to be observed when developing resident system extensions to be loaded into the HMA.)]
[Excel incorrectly assumes that the year 1900 is a leap year](_blank)
Retrieved 2019-05-01.
[{{cite web , title=bug-for-bug compatible , url=http://www.catb.org/jargon/html/B/bug-for-bug-compatible.html , website=catb.org, quote=Same as bug-compatible, with the additional implication that much tedious effort went into ensuring that each (known) bug was replicated.]
[{{cite journal , last1=Pontin , first1=Jason , title=Windows 95's third delay; needs polish , journal=InfoWorld , date=26 December 1994 , volume=16 , issue=52 , page=18 , url=https://books.google.com/books?id=gDgEAAAAMBAJ&pg=PA18 , publisher=InfoWorld Media Group, Inc.]
[{{cite newsgroup , title=Fix for CauseWay DOS extender under DR-DOS 7.0x EMM386.EXE , author-first=Matthias R. , author-last=Paul , newsgroup=comp.os.msdos.programmer , date=2002-04-01 , url=https://groups.google.com/d/msg/comp.os.msdos.programmer/Bl1jt_NvtUw/ZfiqL0PhyZIJ , access-date=2018-09-19 , url-status=live , archive-url=https://archive.today/20180919133247/https://groups.google.com/forum/%23!msg/comp.os.msdos.programmer/Bl1jt_NvtUw/ZfiqL0PhyZIJ , archive-date=2018-09-19]
[{{cite web , title=Re: d-devOn GRAFTABL and DISPLAY.SYS (Was: Changing codepages in FreeDOS) , author-first=Matthias R. , author-last=Paul , date=2001-08-18 , work=freedos-dev , url=https://marc.info/?l=freedos-dev&m=99816495921290&w=2 , access-date=2017-09-04 , url-status=live , archive-url=https://archive.today/20170904165516/https://marc.info/?l=freedos-dev&m=99816495921290&w=2 , archive-date=2017-09-04]
[{{cite newsgroup , title=Cluster Size , author-first=Wally , author-last=Bass , date=1994-02-14 , newsgroup=comp.os.msdos.programmer , url=https://groups.google.com/d/msg/comp.os.msdos.programmer/ZGE7qkh4eI0/1vssg3Yt3nkJ , access-date=2006-10-14 , url-status=live , archive-url=https://archive.today/20170909144921/https://groups.google.com/forum/%23!msg/comp.os.msdos.programmer/ZGE7qkh4eI0/1vssg3Yt3nkJ , archive-date=2017-09-09]
[{{cite book , date=1992-01-12 , title=Programmer's Technical Reference for MSDOS and the IBM PC , author-first=Dave , author-last=Williams , id=DOSREF , isbn=1-878830-02-3 , url=http://www.o3one.org/hwdocs/bios_doc/dosref22.html , access-date=2012-01-08 (NB. The author mentions that DOS 4.0 checks the OEM label, but denies that DOS 3.2 checks it as well (although it does).)]
[{{cite web , title=NOVOLTRK.REG , author-first=Matthias R. , author-last=Paul , date=2004-08-25 , work=www.drdos.org , url=http://www.ibiblio.org/pub/micro/pc-stuff/freedos/win9x/NOVOLTRK.ZIP , access-date=2011-12-17 , url-status=dead , archive-url=https://web.archive.org/web/20160304124755/http://www.ibiblio.org/pub/micro/pc-stuff/freedos/win9x/NOVOLTRK.ZIP , archive-date=2016-03-04}]
/ref>
[{{cite web , title=DOS COUNTRY.SYS file format , type=COUNTRY.LST file , author-first=Matthias R. , author-last=Paul , date=2001-06-10 , edition=1.44 , orig-date=1995 , url=http://www.columbia.edu/~em36/wpdos/MatthiasPaulCPI.zip , access-date=2016-08-20 , url-status=live , archive-url=https://web.archive.org/web/20160420065252/http://www.columbia.edu/~em36/wpdos/MatthiasPaulCPI.zip , archive-date=2016-04-20]
[{{cite web , author-first=Matthias R. , author-last=Paul , title=Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM README.TXT , url=http://www.uni-bonn.de/~uzs180/download/ibmbioa3.zip , date=1997-10-02 , access-date=2009-03-29 , url-status=dead , archive-url=https://web.archive.org/web/20031004074600/http://www-student.informatik.uni-bonn.de/~frinke/ibmbioa3.zip , archive-date=2003-10-04}]
/ref>
[{{cite book , title=DR-DOS 7.03 WHATSNEW.TXT - Changes from DR-DOS 7.02 to DR-DOS 7.03 , publisher= Caldera, Inc. , ref={{harvid, Caldera, 1998 , date=1998-12-24 , url=http://www.lookas.net/ftp/incoming/darbui/Justas/DRDOS/WHATSNEW.TXT , access-date=2019-04-08 , url-status=dead , archive-url=https://web.archive.org/web/20190408142232/http://www.lookas.net/ftp/incoming/darbui/Justas/DRDOS/WHATSNEW.TXT , archive-date=2019-04-08]
[{{cite book , title=NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds , series=MPDOSTIP , author-first=Matthias R. , author-last=Paul , date=1997-07-30 , orig-year=1994-05-01 , edition=3 , language=de , url=http://www.antonis.de/dos/dos-tuts/mpdostip/html/nwdostip.htm , access-date=2014-08-06 , url-status=live , archive-url=https://web.archive.org/web/20170910194752/http://www.antonis.de/dos/dos-tuts/mpdostip/html/nwdostip.htm , archive-date=2017-09-10 (NB. NWDOSTIP.TXT is a comprehensive work on Novell DOS 7 and OpenDOS 7.01, including the description of many undocumented features and internals. It is part of the author's yet larger ]MPDOSTIP.ZIP
collection maintained up to 2001 and distributed on many sites at the time. The provided link points to a HTML-converted older version of the NWDOSTIP.TXT
file.
A yet older version 155 from 1997-05-13 of the 1997-07-15 distribution archive. -->
/ref>
[{{cite book , title=NWDOS7UN.TXT — Zusammenfassung der dokumentierten und undokumentierten Fähigkeiten von Novell DOS 7 , series=MPDOSTIP
, chapter=Chapter 1.3.xi: Überlange Pfade , author-first=Matthias R. , author-last=Paul , date=1997-06-07 , orig-year=April 1994 , language=de , url=http://www.antonis.de/dos/dos-tuts/mpdostip/html/nwdos7un.htm , access-date=2016-11-07 , url-status=live , archive-url=https://web.archive.org/web/20161107122352/http://www.antonis.de/dos/dos-tuts/mpdostip/html/nwdos7un.htm , archive-date=2016-11-07]
Software bugs
Backward compatibility