In computing, a patch is a software update meant to fix problems with a computer program. This can range from fixing bugs, to replacing graphics, to improving the usability or performance of a previous version. The term probably originates from the Unix patch command written by Larry Wall. Though meant to fix problems, patches can sometimes introduce new problems.
Programmers publish and apply patches in various forms. Because writers of proprietary software keep their source code confidential, their patches usually circulate in binary form. This type of patch modifies the program executable—the program the user actually runs—either by modifying the binary file to include the fixes or by completely replacing it.
Patches can also circulate in the form of source code modifications. In these cases, the patches consist of textual differences between two source code files. These types of patches commonly come out of open source projects. In these cases, developers expect users to compile the new or changed files themselves.
Because the word “patch” carries the connotation of a small fix, large fixes may use diffent nomenclature. Bulky patches or patches that significantly change a program may circulate as “service packs” or as “software updates”. Microsoft Windows software uses the “service pack” terminology.
Sometimes developers release patches in order to eliminate functionality or to prevent users from performing a certain activity. Some companies employ a tactic of issuing patches that install themselves automatically, mostly to obfuscate the protocol for blocking third-party products. For example, in 2003 and 2004 AOL issued updates for its instant messenger whose only functionality was to block clients like Trillian, Gaim and Kazaa Lite.