|
In computing, a plug-in (also: plugin, addin, add-in, addon, add-on, snap-in or snapin; but see also extension) consists of a computer program that interacts with a host application (a web browser or an email client, for example) to provide a certain, usually very specific, function "on demand". Applications support plugins for many reasons. Some of the main reasons include:
- to enable third-party developers to create capabilities to extend an application
- to support features yet unforeseen
- to reduce the size of an application
- to separate source code from an application because of incompatible software licenses.
Examples of applications and their plug-ins include:
- Rockbox, a firmware for digital audio players, can use plug-ins, for example: play games, use the text editor
- Email clients use plug-ins to decrypt and encrypt email (Pretty Good Privacy)
- Graphics software use plug-ins to support file formats and process images (Adobe Photoshop)
- Media players use plug-ins to support file formats and apply filters (foobar2000, GStreamer, Quintessential, VST, Winamp, XMMS)
- Packet sniffers use plug-ins to decode packet formats (OmniPeek)
- Remote sensing applications use plug-ins to process data from different sensor types (Opticks)
- Software development environments use plug-ins to support programming languages (Eclipse, jEdit, MonoDevelop)
- Web browsers use plug-ins to play video and presentation formats (Flash, QuickTime, Microsoft Silverlight, 3DMLW)
- Some digital mixing consoles allow plug-ins to extend features such as reverberation effects, equalization and compression.
- Some Web content management system use plug-ins to increase functionalities (Joomla, WordPress).
Mechanism
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.
Open application programming interfaces (APIs) provide a standard interface, allowing third parties to create plug-ins that interact with the host application. A stable API allows third-party plug-ins to continue to function as the original version changes and to extend the life-cycle of obsolete applications. The Adobe Photoshop and After Effects plug-in APIs have become a standard[citation needed] and competing applications[which?] have adopted them to some extent. Other examples of such APIs include Audio Units and VST.
Games and productivity applications often use plug-in architectures which allow original and third-party publishers to add functionality.
The Microsoft Flight Simulator series has become well-known for its aircraft add-ons.
Outside software, a network switch may ship with an unoccupied but non-standard port to accommodate various optional physical-layer connectors.
Outside software again, manufacturers can use plug-ins to create vendor lock-in by limiting upgrade options solely to those available from or endorsed by the original manufacturer. IBM's Micro Channel Architecture, technically superior to Industry Standard Architecture as a way to add components to IBM PCs, largely failed to gain wide support due to the difficulty in getting certification for third-party devices.
Plug-ins and extensions
Plug-ins differ slightly from extensions, which modify or add to existing functionality. Plug-ins generally rely on the host application's user interface and have a well-defined boundary to their possible set of actions. Extensions generally have fewer restrictions on their actions, and may provide their own user-interfaces. They sometimes help to decrease the size of the core host application and to offer optional functions. Mozilla Firefox and related software products use the term "Add-on" as an inclusive category of augmentation modules that consists of plug-ins, themes, search engines and a well-developed system which aims to reduce the feature creep that plagued the Mozilla Application Suite.
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 90/60 series mainframe computer provided the ability to run a program from the editor and to allow such program to access the editor buffer, thus allowing an external program to access an edit session in memory. 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.
Currently[update], programmers typically implement plug-in functionality using shared libraries compulsorily 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.
Plug-in frameworks
Software developers can use the following plug-in frameworks (organized here by programming language) to add plug-in capability to their applications:
C++
- FxEngine Framework - a dataflow renju Framework
- Qt Plug-Ins - part of TrollTech's Qt Framework
Delphi
Java
- Java Plug-in Framework (JPF), a plug-in mechanism adapted from Eclipse's plug-in mechanism from its pre-OSGi era.
- Rich Client Platform (RCP), platform for applications adapted from Eclipse , applications are written as plugins and may themselves have further plug-ins
- OSGi, a standardized dynamic component system suited for plugin programming, used in Eclipse, many commercial J2EE application servers, Spring Framework, and embedded applications.
Python
- Setuptools
- Hive ERP Framework, a plugin-in framework that takes inspiration from OSGi and Eclipse RCP simplifying the concepts of both and adapting them to the pythonic philosophy
- The Twisted Plug-in System
- Sprinkles
- Envisage
.NET
- AL Platform
- Mono Add-ins - an add-in framework for .NET and Mono
- Code Project .NET Based Plug-in Framework
- .NET Add-In Team Blog
- Plux.NET - A Platform for Building Plug-in Systems Under .NET
- Visual Assist
See also
No comments have been added.






