Everything about Plugin totally explained
A
plugin (
plug-in,
addin,
add-in,
addon,
add-on or
snap-in; but see
extension) is 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: enabling
third-party developers to create capabilities to extend an application, to support features yet unforeseen, reducing the size of an application, and separating
source code from an application because of incompatible
software licenses.
Examples of applications and their plugins include:
- Email clients use plugins to decrypt and encrypt email (Pretty Good Privacy)
- Graphics software use plugins to support file formats and process images (Adobe Photoshop)
- Media players use plugins to support file formats and apply filters (foobar2000, GStreamer, Quintessential, VST, Winamp, XMMS)
- Packet sniffers use plugins to decode packet formats (OmniPeek)
- Remote sensing applications use plugins to process data from different sensor types (Opticks)
- Software development environments use plugins to support programming languages (Eclipse, jEdit, MonoDevelop)
- Web browsers use plugins to play video and presentation formats (Flash, QuickTime, Microsoft Silverlight, 3DMLW)
- Some digital mixing consoles allow plugins to extend features such as reverberation effects, equalization and compression.
Mechanism
The host application provides services which the plug-in can use, including a way for plugins to register themselves with the host application and a
protocol by which data is exchanged with plugins. Plugins are dependent on these services provided by the host application and don't usually work by themselves. Conversely, the host application is independent of the plugins, making it possible for plugins to be added and updated dynamically without changes to the host application.
Open
application programming interfaces (APIs) provide a standard interface, allowing third parties to create plugins that interact with the host application. A stable API allows third-party plugins to function as the original version changes and to extend the lifecycle of obsolete applications. The Adobe Photoshop and After Effects plugin APIs have become a standard and been adopted to some extent by competing applications. Other examples of such APIs include
Audio Units and
VST.
For example, a
network switch may ship with an unoccupied but non-standard port to accommodate various optional physical layer connectors, while games and productivity applications often use plug-in architectures which allow original and third-party publishers to add functionality.
Manufacturers can use plug-ins to create
vendor lock-in by limiting upgrade options to only 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. The Microsoft Flight Simulator series is famous for its downloadable aircraft add-ons.
Plugins and Extensions
Plugins are slightly different from
extensions, which modify or add to existing functionality. The main difference is that plugins 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 are used to decrease the size of the host application and offer optional functions.
Mozilla Firefox and related software use
Add-on as an inclusive term for a category of augmentation modules that are subdivided into plugins, themes, search engines and a well-developed
extension system which reduces the
feature creep that plagued the
Mozilla Application Suite.
History
Plugins can be traced back as far 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, allowing an edit session in memory to be accessed by an external program. The plugin program could make calls to the editor to have it perform text editing services upon the buffer that the editor shared with the plugin. This feature was used by the
Waterloo Fortran
compiler to allow interactive compilation of
Fortran programs being edited by EDT.
Perhaps the first software applications on PCs to include a plugin function were
HyperCard and
QuarkXPress on the
Macintosh, both released in
1987. In
1988,
Silicon Beach Software included plugin functionality in
Digital Darkroom and
SuperPaint, and the term
plug-in was coined by Ed Bomke. Currently, plugins are typically implemented as
shared libraries that must be installed in a place prescribed by the host application. HyperCard supported a similar facility, but it was more common for the plugin code to be included in the HyperCard documents (called
stacks) themselves. This way, the HyperCard stack became a self-contained application in its own right, which could be distributed as a single entity that could be run by the user without the need for additional installation steps.
Plugin frameworks
The following plugin frameworks are organized by
programming language and can be used by software developers to add plugin capability their application.
C++
FxEngine Framework
- a dataflow processing Framework
Qt PlugIns
- part of TrollTech's Qt Framework
Delphi
TMS Plugin Framework
Java
Java Plug-in Framework
(JPF), a plugin mechanism adapted from Eclipse's plugin 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 plugins
Python
Setuptools
The Twisted Plugin System
Sprinkles
Envisage
.NET
AL Platform
Mono Addins
- an addin framework for .NET and Mono
Code Project
.NET Based Plugin Framework
.NET Add-In Team Blog
Plux.NET
- A Platform for Building Plug-in Systems Under .NET
Visual AssistFurther Information
Get more info on 'Plugin'.
|
External Link Exchanges
Do you know how hard it is to get a link from a large encyclopaedia? Well we're different and will prove it. To get a link from us just add the following HTML to your site on a relevant page:
<a href="http://plugin.totallyexplained.com">Plugin Totally Explained</a>
Then simply click through this link from your web page. Our crawlers will verify your link, extract the title of your web page and instantly add a link back to it. If you like you can remove the words Totally Explained and embed the link in article text.
As long as your link remains in place, we'll keep our link to you right here. Please play fair - our crawlers are watching. Your site must be closely related to this one's topic. Any kind of spamming, dubious practises or removing the link will result in your link from us being dropped and, potentially, your whole site being banned. |