Plug-in (computing)

From HandWiki
Short description: Software component that adds a specific feature to an existing software application
Mozilla Firefox displaying a list of installed plug-ins

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).

Purpose and examples

Applications support plug-ins for many reasons. Some of the main reasons include:

  • to enable third-party developers to create abilities which extend an application
  • to support easily adding new features
  • to reduce the size of an application
  • to separate source code from an application because of incompatible software licenses.

Types of applications and why they use plug-ins:

Mechanism

Example Plug-In Framework

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-in functionality using shared libraries, which get dynamically loaded at run time, installed in a place prescribed by the host application. 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 plugins by loading a directory of simple script files written in a scripting language like Python or Lua.

Mozilla definition

Main page: Software:Add-on (Mozilla)

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. Mozilla deprecated plug-ins for its products.[13] But UXP-based applications, like web browsers Pale Moon and Basilisk, keep supporting (NPAPI) plugins.[14][15][16]

History

Plug-ins appeared as early as the mid 1970s, when the EDT text editor running on the Unisys VS/9 operating system using the UNIVAC Series 90 mainframe computers provided the ability to run a program from the editor and to allow such a program to access the editor buffer, thus allowing an external program to access an edit session in memory.[17] The plug-in program could make calls to the editor to have it perform text-editing services upon the buffer that the editor shared with the plug-in. The Waterloo Fortran compiler used this feature to allow interactive compilation of Fortran programs edited by EDT.

Very early PC software applications to incorporate plug-in functionality included HyperCard and QuarkXPress on the Macintosh, both released in 1987. In 1988, Silicon Beach Software included plug-in functionality in Digital Darkroom and SuperPaint, and Ed Bomke coined the term plug-in.(citation?)

See also

References

  1. Sterne, Jonathan. "Plug-in | software" (in en). https://www.britannica.com/technology/plug-in. 
  2. "PCSX2 - The Playstation 2 emulator - Plugins" (in en-gb). https://pcsx2.net/download/category/41-win-plugins.html. 
  3. Bernert, Pete. "Pete's PSX GPU plugins". http://www.pbernert.com/html/gpu.htm. 
  4. Team, Demul. "DEMUL - Sega Dreamcast Emulator for Windows". http://demul.emulation64.com/downloads/. 
  5. "Android Emulator Plugin - Jenkins - Jenkins Wiki". https://wiki.jenkins.io/display/JENKINS/Android+Emulator+Plugin. 
  6. "KDE/dolphin-plugins" (in en). https://github.com/KDE/dolphin-plugins. 
  7. "OpenEmu/SNES9x-Core" (in en). https://github.com/OpenEmu/SNES9x-Core. 
  8. "Recommended N64 Plugins" (in en). Emulation General Wiki. http://emulation-general.wikia.com/wiki/Recommended_N64_Plugins. 
  9. "Playstation plugins & utilities!". http://www.emulator-zone.com/doc.php/psx/psxplugins-tools.html. 
  10. "PS3 Homebrew Apps / Plugins / Emulators | PSX-Place" (in en-US). http://www.psx-place.com/categories/ps3-homebrew-apps-plugins-emulators.50/. 
  11. Mozilla Firefox plugins – Description of the difference between Mozilla Firefox plugins and extensions under the general term add-on.
  12. Wordpress Plug-in API – Description of the Wordpress Plug-in architecture.
  13. Paul, Ian. "Firefox will stop supporting plugins by end of 2016, following Chrome's lead". IDG. http://www.pcworld.com/article/2990991/browsers/firefox-will-stop-supporting-npapi-plugins-by-end-of-2016-following-chromes-lead.html. 
  14. "Pale Moon: Technical Details - Features" (in en-US). https://www.palemoon.org/technical.shtml#features. 
  15. "Basilisk: Features" (in en-US). http://www.basilisk-browser.org/features.shtml. 
  16. "Re: Remember: Plugins are outdated." (in en-US). https://forum.palemoon.org/viewtopic.php?p=189870#p189870. 
  17. EDT Text Editor Reference Manual, Cinnaminson, New Jersey: Unisys Corporation, 1975