Software component that adds a specific feature to an existing software application
Look up plug-in or add-on in Wiktionary, the free dictionary.
In computing, a plug-in (or plugin, add-in, addin, add-on, or addon) is a software component that adds a specific feature to an existing computer program. When a program supports plug-ins, it enables customization.[1]
A theme or skin is a preset package containing additional or changed graphical appearance details, achieved by the use of a graphical user interface (GUI) that can be applied to specific software and websites to suit the purpose, topic, or tastes of different users to customize the look and feel of a piece of computer software or an operating system front-end GUI (and window managers).
Video game console emulators often use plug-ins to modularize the separate subsystems of the devices they seek to emulate.[2][3][4][5][6][7][8][9][10] For example, the PCSX2 emulator makes use of video, audio, optical, etc. plug-ins for those respective components of the PlayStation 2.
The host application provides services which the plug-in can use, including a way for plug-ins to register themselves with the host application and a protocol for the exchange of data with plug-ins. Plug-ins depend on the services provided by the host application and do not usually work by themselves. Conversely, the host application operates independently of the plug-ins, making it possible for end-users to add and update plug-ins dynamically without needing to make changes to the host application.[11][12]
Programmers typically implement plug-ins as shared libraries, which get dynamically loaded at run time. HyperCard supported a similar facility, but more commonly included the plug-in code in the HyperCard documents (called stacks) themselves. Thus the HyperCard stack became a self-contained application in its own right, distributable as a single entity that end-users could run without the need for additional installation-steps. Programs may also implement plug-ins by loading a directory of simple script files written in a scripting language like Python or Lua.
Mozilla definition
In Mozilla Foundation definitions, the words "add-on", "extension" and "plug-in" are not synonyms. "Add-on" can refer to anything that extends the functions of a Mozilla application. Extensions comprise a subtype, albeit the most common and the most powerful one. Mozilla applications come with integrated add-on managers that, similar to package managers, install, update and manage extensions. The term, "plug-in", however, strictly refers to NPAPI-based web content renderers.[13] Mozilla deprecated plug-ins for its products.[14] But UXP-based applications, like web browsers Pale Moon and Basilisk, keep supporting (NPAPI) plug-ins.[15][16][17]
Helper application
A helper application is an external viewer program—like IrfanView or Adobe Reader—that displays content retrieved using a web browser.[18][19] Unlike a plugin whose full code would be included in the browser's address space, a helper application is a standalone application.[20] Web browsers choose an appropriate helper application based on a file's Media type as indicated by the filename extension.[21]
History
In the mid-1970s, the EDT text editor ran on the Unisys VS/9 operating system for the UNIVAC Series 90mainframe computer. It allowed a program to be run from the editor which can access the in-memory edit buffer.[22] The plug-in executable could call the editor to inspect and change the text. The University of Waterloo Fortran compiler used this to allow interactive compilation of Fortran programs.