Plugin
Encyclopedia
In computing
Computing
Computing is usually defined as the activity of using and improving computer hardware and software. It is the computer-specific part of information technology...

, a plug-in (or plugin) is a set of software components that adds specific abilities to a larger software application. If supported, plug-ins enable customizing the functionality of an application. For example, plug-ins are commonly used in web browser
Web browser
A web browser is a software application for retrieving, presenting, and traversing information resources on the World Wide Web. An information resource is identified by a Uniform Resource Identifier and may be a web page, image, video, or other piece of content...

s to play video, scan for viruses, and display new file types. Well-known plug-ins examples include Adobe Flash Player
Adobe Flash Player
The Adobe Flash Player is software for viewing multimedia, Rich Internet Applications and streaming video and audio, on a computer web browser or on supported mobile devices. Flash Player runs SWF files that can be created by the Adobe Flash authoring tool, by Adobe Flex or by a number of other...

, QuickTime
QuickTime
QuickTime is an extensible proprietary multimedia framework developed by Apple Inc., capable of handling various formats of digital video, picture, sound, panoramic images, and interactivity. The classic version of QuickTime is available for Windows XP and later, as well as Mac OS X Leopard and...

, and Microsoft Silverlight
Microsoft Silverlight
Microsoft Silverlight is an application framework for writing and running rich Internet applications, with features and purposes similar to those of Adobe Flash. The run-time environment for Silverlight is available as a plug-in for web browsers running under Microsoft Windows and Mac OS X...

.

Add-on (or addon) in computing is often considered the general term comprising snap-ins, plug-ins, extensions, and themes for software applications.

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
    Source code
    In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

     from an application because of incompatible software licenses.


Specific examples of applications and why they use plug-ins:
  • Email clients use plug-ins to decrypt and encrypt email (Pretty Good Privacy
    Pretty Good Privacy
    Pretty Good Privacy is a data encryption and decryption computer program that provides cryptographic privacy and authentication for data communication. PGP is often used for signing, encrypting and decrypting texts, E-mails, files, directories and whole disk partitions to increase the security...

    )
  • Graphics software
    Graphics software
    In computer graphics, graphics software or image editing software is a program or collection of programs that enable a person to manipulate visual images on a computer....

     use plug-ins to support file formats and process images (Adobe Photoshop
    Adobe Photoshop
    Adobe Photoshop is a graphics editing program developed and published by Adobe Systems Incorporated.Adobe's 2003 "Creative Suite" rebranding led to Adobe Photoshop 8's renaming to Adobe Photoshop CS. Thus, Adobe Photoshop CS5 is the 12th major release of Adobe Photoshop...

    , GIMP
    GIMP
    GIMP is a free software raster graphics editor. It is primarily employed as an image retouching and editing tool and is freely available in versions tailored for most popular operating systems including Microsoft Windows, Apple Mac OS X, and Linux.In addition to detailed image retouching and...

    )
  • Media players use plug-ins to support file formats and apply filters (foobar2000
    Foobar2000
    foobar2000 is a freeware audio player for Windows developed by Peter Pawlowski, a former freelance contractor for Nullsoft. It is known for its highly modular design and extensive SDK which allows third-party developers to do such things as completely replace the interface...

    , GStreamer
    GStreamer
    GStreamer is a pipeline-based multimedia framework written in the C programming language with the type system based on GObject.GStreamer allows a programmer to create a variety of media-handling components, including simple audio playback, audio and video playback, recording, streaming and editing...

    , Quintessential, VST
    Virtual Studio Technology
    Steinberg's Virtual Studio Technology is an interface for integrating software audio synthesizer and effect plugins with audio editors and hard-disk recording systems. VST and similar technologies use digital signal processing to simulate traditional recording studio hardware with software...

    , Winamp
    Winamp
    Winamp is a media player for Windows-based PCs and Android devices, written by Nullsoft, now a subsidiary of AOL. It is proprietary freeware/shareware, multi-format, extensible with plug-ins and skins, and is noted for its graphical sound visualization, playlist, and media library features.Winamp...

    , XMMS
    XMMS
    The X Multimedia System is a free audio player for Unix-like systems.-History:XMMS was originally written as X11Amp by Peter and Mikael Alm in November 1997. The player was made to resemble Winamp, which was first released in May that year. As such, XMMS has supported Winamp 2 "classic" skins...

    )
  • Microsoft Office
    Microsoft Office
    Microsoft Office is a non-free commercial office suite of inter-related desktop applications, servers and services for the Microsoft Windows and Mac OS X operating systems, introduced by Microsoft in August 1, 1989. Initially a marketing term for a bundled set of applications, the first version of...

     uses plug-ins (better known as add-ins) to extend the abilities of its application by adding custom commands and specialized features
  • Packet sniffer
    Packet sniffer
    A packet analyzer is a computer program or a piece of computer hardware that can intercept and log traffic passing over a digital network or part of a network...

    s use plug-ins to decode packet formats (OmniPeek
    OmniPeek
    OmniPeek is a packet analyzer software tool from WildPackets Inc.. It is used for network troubleshooting and protocol analysis. It supports a plugin API.- History :...

    )
  • Remote sensing application
    Remote sensing application
    A remote sensing application is a software application that processes remote sensing data. Remote sensing applications are similar to graphics software, but they enable generating geographic information from satellite and airborne sensor data. Remote sensing applications read specialized file...

    s use plug-ins to process data from different sensor types (Opticks
    Opticks (software)
    Opticks is an open source, remote sensing application that supports imagery, video , Synthetic Aperture Radar , multi-spectral, hyper-spectral, and other types of remote sensing data. Opticks is unlike other remote sensing applications because it treats imagery and video alike...

    )
  • Smaart
    Smaart
    Smaart is one of the most widely used audio and acoustic measurement tools, a software application for the analysis portion of acoustical measurements and instrumentation...

    , an audio spectrum analysis application which accepts plug-ins for third-party digital signal processor
    Digital signal processor
    A digital signal processor is a specialized microprocessor with an architecture optimized for the fast operational needs of digital signal processing.-Typical characteristics:...

    s
  • Software development environments
    Integrated development environment
    An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development...

     use plug-ins to support programming languages (Eclipse, jEdit
    JEdit
    jEdit is a text editor for programmers, available under the GNU General Public License version 2.0. It is written in Java and runs on any operating system with Java support, including Windows, Linux, Mac OS X, and BSD.-Development:...

    , MonoDevelop
    MonoDevelop
    MonoDevelop is an open source integrated development environment for the Linux platform, Mac OS X, and Microsoft Windows, primarily targeted for the development of software that uses both the Mono and Microsoft .NET frameworks...

    )
  • Venue
    Venue (sound system)
    Venue is a brand of live sound digital mixing consoles introduced by Digidesign in February 2005. The system now includes three different consoles and a number of ways they can be configured. They can all be connected to Pro Tools, the audio editing software also created by Avid/Digidesign, to...

    , a digital mixing console
    Digital mixing console
    In professional audio, a Digital Mixing Console , is an electronic device for combining, routing, and changing the dynamics of digital audio samples. The digital audio samples are summed to produce a combined output. A professional digital mixing console is a dedicated desk or control surface...

     architecture developed by Digidesign
    Digidesign
    Avid Audio is an American digital audio technology company. It was founded in 1984 by Peter Gotcher and Evan Brooks. The company began as a project to raise money for the founders' band, selling EPROM chips for drum machines. It is a subsidiary of Avid Technology, and during 2010 the Digidesign...

     and owned by Avid Technology
    Avid Technology
    Avid Technology, Inc. is an American company specializing in video and audio production technology; specifically, digital non-linear editing systems, management and distribution services. It was created in 1987 and became a publicly traded company in 1993...

    , allows third party plug-ins
  • Web browser
    Web browser
    A web browser is a software application for retrieving, presenting, and traversing information resources on the World Wide Web. An information resource is identified by a Uniform Resource Identifier and may be a web page, image, video, or other piece of content...

    s use plug-ins (often implementing the NPAPI
    NPAPI
    Netscape Plugin Application Programming Interface is a cross-platform plugin architecture used by many web browsers.It was first developed for the Netscape family of browsers starting with Netscape Navigator 2.0 but was subsequently implemented by many other browsers, including all of the browsers...

     specification) to play video and presentation formats (Flash
    Adobe Flash
    Adobe Flash is a multimedia platform used to add animation, video, and interactivity to web pages. Flash is frequently used for advertisements, games and flash animations for broadcast...

    , QuickTime
    QuickTime
    QuickTime is an extensible proprietary multimedia framework developed by Apple Inc., capable of handling various formats of digital video, picture, sound, panoramic images, and interactivity. The classic version of QuickTime is available for Windows XP and later, as well as Mac OS X Leopard and...

    , Microsoft Silverlight
    Microsoft Silverlight
    Microsoft Silverlight is an application framework for writing and running rich Internet applications, with features and purposes similar to those of Adobe Flash. The run-time environment for Silverlight is available as a plug-in for web browsers running under Microsoft Windows and Mac OS X...

    , 3DMLW
    3DMLW
    3DMLW is an XML-based Markup Language for representing interactive 3D and 2D content on the World Wide Web. It serves as a cornerstone for a broader platform also referred to as 3DMLW.3DMLW platform=...

    )


Mechanism

As shown in the figure, 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 interface
Application programming interface
An application programming interface is a source code based specification intended to be used as an interface by software components to communicate with each other...

s (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
Adobe Photoshop
Adobe Photoshop is a graphics editing program developed and published by Adobe Systems Incorporated.Adobe's 2003 "Creative Suite" rebranding led to Adobe Photoshop 8's renaming to Adobe Photoshop CS. Thus, Adobe Photoshop CS5 is the 12th major release of Adobe Photoshop...

 and After Effects
Adobe After Effects
Adobe After Effects is a digital motion graphics and compositing software published by Adobe Systems, used in the post-production process of filmmaking and television production. Its main uses are the origination of 2D and 2.5D animation, visual effects compositing and finishing...

 plug-in APIs have become a standard and competing applications such as Corel Paint Shop Pro
Corel Paint Shop Pro
Paint Shop Pro is a raster graphics editor and, later in the series, a vector graphics editor for computers running the Microsoft Windows operating system that was originally published by Minneapolis-based Jasc Software. In October 2004, Corel Corporation purchased Jasc Software and the...

 have adopted them.

Compared to extensions

Extensions differ slightly from plug-ins. Plug-ins usually have a narrow set of abilities. For example, the original impetus behind the development of Mozilla Firefox
Mozilla Firefox
Mozilla Firefox is a free and open source web browser descended from the Mozilla Application Suite and managed by Mozilla Corporation. , Firefox is the second most widely used browser, with approximately 25% of worldwide usage share of web browsers...

 was the pursuit of a small baseline application, leaving exotic or personalized functionality to be implemented by extensions to avoid feature creep. This is in contrast to the "kitchen sink" approach in its predecessors, the Mozilla Application Suite
Mozilla Application Suite
The Mozilla Application Suite is a cross-platform integrated Internet suite. Its development was initiated by Netscape Communications Corporation, before their acquisition by AOL. It is based on the source code of Netscape Communicator...

 and Netscape 6 and 7. Therefore, after integration, extensions can be seen as part of the browser itself, tailored from a set of optional modules.

Firefox also supports plug-ins using NPAPI
NPAPI
Netscape Plugin Application Programming Interface is a cross-platform plugin architecture used by many web browsers.It was first developed for the Netscape family of browsers starting with Netscape Navigator 2.0 but was subsequently implemented by many other browsers, including all of the browsers...

. When the browser encounters references to content a plug-in specializes in, the data is handed off to be processed by that plug-in. Since there is generally a clear separation between the browser and the plug-in, the results are discrete objects embedded within a webpage. The same distinction between plug-ins and extensions is in use by other web browsers, such as Microsoft Internet Explorer, where a typical extension might be a new toolbar
Toolbar
In a graphical user interface, on a computer monitor, a toolbar is a GUI widget on which on-screen buttons, icons, menus, or other input or output elements are placed. Toolbars are seen in office suites, graphics editors, and web browsers...

, and a plug-in might embed a video player on the page. Since plug-ins and extensions both increase the utility of the original application, Mozilla
Mozilla
Mozilla is a term used in a number of ways in relation to the Mozilla.org project and the Mozilla Foundation, their defunct commercial predecessor Netscape Communications Corporation, and their related application software....

 uses the term "add-on" as an inclusive category of augmentation modules that consists of plug-ins, themes, and search engines.

History

Plug-ins appeared as early as the mid 1970s, when the EDT
EDT text editor
There are at least two major text editors named EDT. One was made by Digital Equipment Corporation, the other by what was then Sperry Univac, which later became Unisys.-Digital:...

 text editor
Text editor
A text editor is a type of program used for editing plain text files.Text editors are often provided with operating systems or software development packages, and can be used to change configuration files and programming language source code....

 running on the Unisys
Unisys
Unisys Corporation , headquartered in Blue Bell, Pennsylvania, United States, and incorporated in Delaware, is a long established business whose core products now involves computing and networking.-History:...

 VS/9
VS/9
VS/9 was a computer operating system available for the Univac 90/60, 90/70 and 90/80 mainframe during the late 1960s through 1980s. The 90/60 and 90/70 were repackaged Univac 9700 computers...

 operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...

 using the Univac 90/60
UNIVAC 90/60
The Univac 90/60 series computer was a mainframe class computer manufactured by Sperry Corporation as a competitor to the IBM System 360 series of mainframe computers...

 series mainframe computer
Mainframe computer
Mainframes are powerful computers used primarily by corporate and governmental organizations for critical applications, bulk data processing such as census, industry and consumer statistics, enterprise resource planning, and financial transaction processing.The term originally referred to the...

 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. 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
University of Waterloo
The University of Waterloo is a comprehensive public university in the city of Waterloo, Ontario, Canada. The school was founded in 1957 by Drs. Gerry Hagey and Ira G. Needles, and has since grown to an institution of more than 30,000 students, faculty, and staff...

 Fortran compiler
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...

 used this feature to allow interactive compilation of Fortran
Fortran
Fortran is a general-purpose, procedural, imperative programming language that is especially suited to numeric computation and scientific computing...

 programs edited by EDT.

Very early PC
Personal computer
A personal computer is any general-purpose computer whose size, capabilities, and original sales price make it useful for individuals, and which is intended to be operated directly by an end-user with no intervening computer operator...

 software applications to incorporate plug-in functionality included HyperCard
HyperCard
HyperCard is an application program created by Bill Atkinson for Apple Computer, Inc. that was among the first successful hypermedia systems before the World Wide Web. It combines database capabilities with a graphical, flexible, user-modifiable interface. HyperCard also features HyperTalk, written...

 and QuarkXPress
QuarkXPress
QuarkXPress is a computer application for creating and editing complex page layouts in a WYSIWYG environment. It runs on Mac OS X and Windows. It was first released by Quark, Inc...

 on the Macintosh, both released in 1987. In 1988, Silicon Beach Software
Silicon Beach Software
Silicon Beach Software was an early developer of software products for the Macintosh personal computer. It was founded in San Diego, California by Charlie Jackson and his wife Hallie. Jackson later co-founded FutureWave Software with Jonathan Gay, the company that produced the first version of...

 included plug-in functionality in Digital Darkroom
Digital Darkroom
Digital Darkroom was an innovative, award-winning Apple Macintosh graphics program for editing gray-scale photos. It was published by Silicon Beach Software in 1987. It was programmed by Ed Bomke and Don Cone....

 and SuperPaint
SuperPaint
SuperPaint was a pioneering graphics program and framebuffer computer system developed by Richard Shoup at Xerox PARC. The system was first conceptualized in late 1972 and produced its first stable image in April 1973...

, and Ed Bomke coined the term plug-in.

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

Frameworks

Software developers can use the following plug-in frameworks (organized here by programming language
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....

) to add plug-in ability to programs:

C++

  • Boost Extension, available from Boost sandbox
  • FxEngine Framework, open dataflow processing framework for audio, video, signal, etc.
  • Google Native Client
    Google Native Client
    Google Native Client is a sandboxing technology for running a subset of Intel x86 or ARM native code using software-based fault isolation...

    , sandboxing
    Sandbox (computer security)
    In computer security, a sandbox is a security mechanism for separating running programs. It is often used to execute untested code, or untrusted programs from unverified third-parties, suppliers, untrusted users and untrusted websites....

     technology to run safely a subset of Intel x86 native code using software-based fault isolation, from web browsers
  • Qt Plug-Ins, part of Nokia Qt framework
  • OmniPeek Plug-in Wizard, creates plug-ins for WildPackets' OmniPeek Network Analyzer
  • Pugg open source framework for plug-in management
  • Pluma, small, cross-platform
  • OFX, open standard for visual effects plug-ins
  • Cross-platform plug-in framework, accompanying a series of articles by Gigi Sayfan in Dr. Dobb's Journal

Java

  • Java Plug-in Framework (JPF), uses mechanism adapted from Eclipse
    Eclipse (software)
    Eclipse is a multi-language software development environment comprising an integrated development environment and an extensible plug-in system...

    's plug-in mechanism from its pre-OSGi
    OSGi
    The Open Services Gateway initiative framework is a module system and service platform for the Java programming language that implements a complete and dynamic component model, something that does not exist in standalone Java/VM environments...

     era
  • Java Simple Plugin Framework (JSPF), lightweight annotation based
    Java annotation
    An annotation, in the Java computer programming language, is a special form of syntactic metadata that can be added to Java source code. Classes, methods, variables, parameters and packages may be annotated...

     plug-in system, supports dependency injection
    Dependency injection
    Dependency injection is a design pattern in object-oriented computer programming whose purpose is to improve testability of, and simplify deployment of components in very large software systems....

    , suited for small to medium sized projects
  • OSGi
    OSGi
    The Open Services Gateway initiative framework is a module system and service platform for the Java programming language that implements a complete and dynamic component model, something that does not exist in standalone Java/VM environments...

    , standardized dynamic component system suited for plug-in programming, used in Eclipse
    Eclipse (software)
    Eclipse is a multi-language software development environment comprising an integrated development environment and an extensible plug-in system...

    , many commercial Java EE application servers, Spring Framework, and embedded applications
  • Rich Client Platform
    Rich Client Platform
    A rich client platform is software consisting of the following components:* A core , lifecycle manager* A standard bundling framework* A portable widget toolkit* File buffers, text handling, text editors...

     (RCP), platform for applications adapted from Eclipse
    Eclipse (software)
    Eclipse is a multi-language software development environment comprising an integrated development environment and an extensible plug-in system...

    , applications are written as plug-ins and may themselves have further plug-ins
  • Netbeans Platform, most commonly known for the Netbeans IDE, which is an application built on the Netbeans Platform, which is a framework that allows making modules, plugins for other NB applications (usually a group of interacting modules) and complete applications like the netbeans IDE
  • jin-plugin, minimal framework for Java, PHP

Python

  • dip
  • Envisage
  • Colony Framework
    Colony Framework
    The Colony Framework is an open source plugin framework specification. Implementations of the specification offer a runtime component model, that allows for plugins to be installed, started, stopped, updated and uninstalled without requiring the application container to be stopped...

    , inspired by OSGi
    OSGi
    The Open Services Gateway initiative framework is a module system and service platform for the Java programming language that implements a complete and dynamic component model, something that does not exist in standalone Java/VM environments...

     and Eclipse
    Eclipse (software)
    Eclipse is a multi-language software development environment comprising an integrated development environment and an extensible plug-in system...

     RCP simplifying the concepts of both and adapting them to Pythonic philosophy
  • PyUtilib, system based on Trac
    Trac
    Trac is an open source, web-based project management and bug-tracking tool. The program is inspired by CVSTrac, and was originally named svntrac due to its ability to interface with Subversion. It is developed and maintained by Edgewall Software....

     component architecture, a simplified Zope Component Architecture
  • Setuptools
  • Sprinkles
  • The Twisted Plug-in System
  • Yapsy
  • Zope Component Architecture

.NET


See also

  • Applet
    Applet
    In computing, an applet is any small application that performs one specific task that runs within the scope of a larger program, often as a plug-in. An applet typically also refers to Java applets, i.e., programs written in the Java programming language that are included in a web page...

  • Shared library Symfony
  • Add-ons for Firefox
  • Add-on (Mozilla)
  • Browser extension
    Browser extension
    A browser extension is a computer program that extends the functionality of a web browser in some way. Depending on the browser and the version, the term may be distinct from similar terms such as plug-in or add-on. Mozilla Firefox was designed with the idea of being a small and simple web browser,...

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK