# Plug-in

Ein Plug-in [ˈplʌgɪn] (häufig auch Plugin; von engl. to plug in, „einstöpseln, anschließen“, auch Software-Erweiterung oder Zusatzmodul) ist eine optionale Softwarekomponente, die eine bestehende Software oder ein Computerspiel erweitert bzw. verändert. Der Begriff wird teilweise auch als Synonym zu „Add-on“ und „Add-in“ benutzt. Plug-ins werden meist vom Benutzer installiert und dann von der entsprechenden Hauptanwendung während der Laufzeit eingebunden. Plug-ins können nicht ohne die Hauptanwendung ausgeführt werden.

## Funktion

Softwarehersteller definieren oft Programmierschnittstellen (API) zu ihren Produkten, mit deren Hilfe Dritte Erweiterungen (Plug-ins) für diese Softwareprodukte programmieren können. Plug-ins folgen dabei im Allgemeinen dem Muster der Inversion of Control.
In seltenen Fällen sind Plug-in-Schnittstellen zu einem Standard avanciert. Beispielsweise liegt einem Scanner üblicherweise ein Plug-in bei, das über die TWAIN-Schnittstelle mit den meisten gängigen Bildbearbeitungsprogrammen funktioniert.
Weit verbreitete Beispiele für Plug-ins sind etwa der inzwischen eingestellte Flash Player oder das Java-Plug-in für die verschiedenen Webbrowser. Die ersten Programme, die Plug-ins unterstützten, sind wahrscheinlich Apples HyperCard und Quarks QuarkXPress (Plug-ins heißen dort Xtensions), die beide 1987 auf den Markt kamen. Viele Plug-ins gibt es auch für das Datenbankprogramm FileMaker oder das Layoutprogramm Indesign.
Bei Spielen gibt es sogenannte Mods, mit denen man (Kenntnisse vorausgesetzt) ein eigenes Gameplay unter Verwendung der jeweiligen Spiel-Engine entwickeln kann. Solche Mods können aber größtenteils nicht mehr als Plug-ins aufgefasst werden.

## Typen
### Audio

Bei Software zur Audiobearbeitung bzw. Musikproduktion sind die Plug-ins mit Effektgeräten vergleichbar. Kauft und integriert man im realen Studio eine neue Hardware, so installiert man im virtuellen Studio ein Plug-in. Unzählige Anbieter derartiger Software-Module treffen auf mehrere gängige Host-Programme, die auf zwei Plattformen (macOS und Windows) laufen können. Aus einem Chaos proprietärer Schnittstellen entwickelten sich durch eine Plug-in-Evolution die Standards TDM-, AU-, AAX- und VST. Native-Plug-ins nutzen die Rechenleistung der CPU des Computers, powered-Plug-ins benötigen zusätzliche DSP-Karten. Mittlerweile sind einige Hersteller auch dazu übergegangen, optionale Funktionen für ihre Programme selbst in Plug-ins auszulagern. Das hat für den Benutzer den Vorteil, dass er Funktionen, die er nicht braucht, deaktivieren kann und das Programm dadurch schneller oder stabiler läuft. Auch unter Linux gibt es eine Standard-Schnittstelle, die Linux Audio Developer’s Simple Plugin API (LADSPA), und inzwischen auch den Nachfolger LV2.

### Grafik-Plug-ins

Bildbearbeitungsprogramme lassen sich über die Plug-in-Schnittstelle, das ist meistens ein Programmordner, mit Grafikfiltern erweitern. So können zahlreiche Funktionen hinzugefügt werden, wie z. B. Effekte zum Verändern der Farbe und Muster. Auch Vektorgrafikprogramme und 3D-Programme bieten solche Erweiterungsmöglichkeiten an.

### Computerspiel-Erweiterung

Computerspiele können über Add-ons oder Add-ins erweitert werden.

### Browser-Plug-ins

Browser-Plug-ins (oder „Plugins“) sind Softwaremodule zur Darstellung von speziellen Inhalten im Browserfenster, die der Browser selbst nicht interpretieren und darstellen kann." Diese Definition grenzt Browser-Plug-ins von Erweiterungen („Add-ons“, wie z. B. WebExtensions, Toolbars etc.) ab, die dazu dienen, den Browser selbst zu verändern und zu ergänzen. Eine Spezialform sind Plug-ins für Suchmaschinen. Des Weiteren gibt es zur Anpassung der Benutzeroberfläche Themes.

#### Netscape (NPAPI)

Netscape hatte XUL/XPCOM als Basistechnologie für Plug-ins. XUL/XPCOM wurde mit Firefox Version 57 im Januar 2018 abgekündigt. Nachfolger wurde bis zur Firefox-Version 52 im Jahr 2017 die Netscape-API (Netscape Plugin Application Programming Interface, kurz NPAPI). In einem Übergangszeitraum lässt sich isoliert nur noch Flash manuell aktivieren, im Jahr 2020 wird die Schnittstelle vollständig entfernt. Auch Chromium hatte ursprünglich einen Support für NPAPI. Dieser wurde mit Chrome 45 im September 2015 entfernt.
Browser-Plug-ins, die auf der Netscape-Schnittstelle basieren, sind zwar grundsätzlich browser-, aber nicht betriebssystemunabhängig. Plug-ins für Windows funktionieren also nicht in Browsern auf macOS oder Linux. (Add-ons des Internet Explorers sind schon deshalb an ein Betriebssystem gebunden, weil dieser Browser nur für Windows verfügbar ist.)

#### ActiveX

Der Internet Explorer verwendete für Plug-ins (dort Add-ons genannt) ActiveX.

#### Kritik

Viele Browser stellten die Unterstützung ihrer Plug-in Systeme aber voraussichtlich ganz oder teilweise ein. Häufig wurden Browser-Plug-ins als Quelle von Performance- und Sicherheitsproblemen identifiziert.
Das Plug-in System eines Browsers ist ein mögliches Ziel für Angreifer. Falls ein Browser-Plug-in eine Sicherheitslücke aufweist, kann diese manchmal genutzt werden, um die Sicherheitsmechanismen des Browsers zu umgehen. So kann die Kontrolle über den Browser oder schlimmstenfalls sogar das Betriebssystem erlangt werden. Daher sollten Plug-ins auf dem aktuellen Stand gehalten werden, da neue Updates in der Regel bekannte Sicherheitslücken schließen.