Nepedia
Back to Discover
Advanced Reader
💻

Plug-in (computing)

technology Maturity 9-11 war conflict Next article →

This article covers sensitive topics: war_conflict. Parents can manage visibility in Parental Controls.

A plug-in is a software component designed to extend the functionality of an existing system. You might also hear these called add-ins, add-ons, or extensions. The main purpose of a plug-in is to allow a software system to be customized. This happens without requiring the entire host system to be re-built from scratch. Developers use plug-ins to let third-party creators add new features to an application. This approach also helps keep the original application smaller. By using plug-ins, a system does not have to load every possible feature at once. This saves space and resources by only loading what is actually needed.

Plug-InExample
Plug-InExample

The way a plug-in works relies on a specific relationship with a host application. The host application provides essential services that the plug-in requires to function. One key service is a way for plug-ins to register themselves with the host. They also use a protocol, which is a set of rules, to exchange data. Most plug-ins cannot operate independently and must depend on the host's services. However, the host application is designed to operate perfectly on its own. This independence allows users to add or update plug-ins dynamically. Users can change their software without making any permanent changes to the host code.

Programmers use different technical methods to implement these components. Many typically write plug-ins as shared libraries. These libraries are loaded dynamically at run time, which means they are brought in while the program is already running. Another method involves loading a directory of simple script files. These files are often written in scripting languages like Python or Lua. A different approach involves a helper application. In a web browser, a helper application like Adobe Reader is a separate program. Unlike a standard plug-in, a helper application does not share the host's address space. This separation provides a safety benefit. If a helper application crashes, it cannot crash the host application.

Different categories of software utilize plug-ins for very specific tasks. Digital audio workstations, such as Audacity, Cubase, or Pro Tools, use them to process or analyze sound. Email clients may use plug-ins like Pretty Good Privacy to encrypt and decrypt messages. Video game emulators often use them to modularize different subsystems. For example, the PCSX2 emulator uses separate plug-ins for video, audio, and optical components to mimic a PlayStation 2. Graphics software like Photoshop uses them to support various file formats. Media players such as VLC, Winamp, or foobar2000 use them to apply filters or support specific file types.

Mozilla plugins screenshot without subpixel rendering
Mozilla plugins screenshot without subpixel rendering

Text editors and development environments also rely heavily on this technology. Tools like Visual Studio, Eclipse, and IntelliJ IDEA use plug-ins to support different programming languages. Some software can even be plugged into other applications. Visual Studio can be used this way through Visual Studio Tools for Office. Even specialized tools like packet sniffers use them to decode specific data formats. An example of a packet sniffer that uses plug-ins is OmniPeek. In remote sensing, applications like Opticks use them to process data from various sensor types.

The history of this concept stretches back several decades. In the mid-1970s, the EDT text editor ran on the Unisys VS/9 operating system. This editor allowed a program to run directly from the editor to access the in-memory edit buffer. This allowed for interactive compilation in the University of Waterloo Fortran compiler. Early personal computer software also featured these capabilities. In 1987, HyperCard and QuarkXPress were released on the Apple Macintosh with plug-in support. HyperCard was unique because it often included the plug-in code within its own documents, called stacks. This made a stack a self-contained application. In 1988, Silicon Beach Software added plug-in capabilities to Digital Darkroom and SuperPaint.

Web browsers provide a notable example of how these technologies evolve. Historically, browsers used executables as plug-ins. These included famous names like Adobe Flash Player, QuickTime, and Microsoft Silverlight. They also used the Java virtual machine for Java applets. However, these executable plug-ins are now considered deprecated, meaning they are being phased out. Today, web browsers primarily use a different type of module called browser extensions. While extensions are a separate type of installable module, they serve the same fundamental goal of customization and expansion.

726 words

Where will your curiosity go next?

Keep exploring at your chosen reading level.

🖼️ Images & Media (2)
File:Mozilla plugins screenshot without subpixel rendering.png
Mozilla plugins screenshot without...
File:Plug-InExample.svg
Plug-InExample.svg
More to explore

🔬 Go deeper

More advanced topics to explore

🪜 Step back

Simpler topics to build understanding

What is Nepedia?

A free, ad-free encyclopedia for children. Every article is written at five reading levels, so the same page works for a five-year-old and a fifteen-year-old — use the level switcher above to see this one change. No account needed to read.