Das englische Wort Patch (etwa "Flicken", "Reparatur" oder "Korrektur") meint im Open-Source-Umfeld in der Regel eine mit dem Programm diff erzeugte Datei, die in einem speziellen Format die Unterschiede zwischen verschiedenen Versionen des Quelltextes einer Software enthält. Die im Patch enthaltenen Quellcode-Änderungen erweitern den Code vielfach um neue Funktionen oder korrigieren Fehler. Im Umfeld proprietärer Software hingegen steht das Wort Patch zumeist für vorkompilierte Fragmente einer Software, die zumeist durch Austausch einzelner Dateien eines Programms sicherheitskritische Fehler in der jeweiligen Anwendung beheben.
Die manchmal auch Diff genannten Patches kommen häufig auch bei der Begutachtung ("Review") von Open-Source-Code zum Einsatz, da viele Entwickler das relativ einfach verständliche Format verstehen und mit dem Diff sehr genau sehen, welche Quellcode-Abschnitte der Patch modifiziert. Auch bei der Verteilung von Quellcode-Änderungen sind Patches im Open-Source-Umfeld von großer Bedeutung: Haben etwa zwei Programmierer die gleiche Version der Linux-Quellen vorliegen, kann der eine von beiden seine Änderungen in Form eines mit dem Programm diff erzeugten Patches an den anderen Programmierer schicken. Der kann die Änderungen im Patch mit dem Programm patch in seinen Quellcodebaum integrieren – so brauchen die beiden Entwickler nur den zumeist wenige Kilobyte großen Patch auszutauschen und nicht die kompletten Quellen oder einzelne Dateien daraus.
Insbesondere die Entwickler des Linux-Kernels nutzen Patches intensiv. Jede Neuerung wird zumeist in einem eigenständigen und nur wenige Kilobyte großen Patch vorbereitet; diesen senden die Entwickler zum Testen und Begutachten an die Mailingliste; halten die anderen Entwickler den Patch (oder eine Gruppe von untereinander abhängigen Patches) für Aufnahmewürdig, wandert er zusammen mit anderen Patches über die verschiedenen Kernel-Entwicklerzweige irgendwann in den offiziellen Linux-Kernel. Die Patches werden dabei nicht zusammengewürfelt, sondern mit Quellcodeverwaltungssystemen wie Git oder Quilt organisiert – jeder Patch baut praktisch auf einem anderen auf, sodass man beim Auftreten eines Fehlers die verschiedenen Patches wieder nach und nach entfernen kann, um so der fehlerverursachenden Änderung auf die Schliche zu kommen.
Wenn eine Änderung in Form eines Patches im Quellcodeverwaltungssystemen aufgenommen wird spricht man meist von einem Commit oder Changeset – dazu bekommt der Patch zumeist noch eine Beschreibung, die etwa die Hintergründe der vom Patch vorgenommenen Änderung erläutern. Ein Merge bezeichnet in der Regel den Austausch einer Gruppe von Commits zwischen verschiedenen mit Quellcodeverwaltungssystemen wie Git arbeitenden Entwicklern – etwa wenn der Verwalter eines Kernel-Subsystems eine größere Menge von Änderungen sammelt und Linus Torvalds diese anschließend in in den Hauptentwicklerzweig integriert.
Wenn Torvalds einen neuen Linux-Kernel freigibt veröffentlicht er diesen auch als Patch, der die gesammelten Änderungen zur vorangehenden Linux-Version im Diff-Format enthält. So brauchen Anwender, die bereits die Quellen von Linux 2.6.24 haben, nur den Patch auf 2.6.25 herunterladen – dessen Umfang beläuft sich komprimiert auf zirka 9 MByte, während das gepackte Archiv von 2.6.25 mit 46 MByte mehr als fünfmal so groß wäre. Die zuvor als einzelne Patches in den Hauptentwicklerzweig eingepflegten Commits sind in diesem Patch allerdings zusammengelegt, um die Komplexität und die Patch-Größe zu reduzieren; separat bleiben die einzelnen Patches über das Quellcodeverwaltungssystemen von Linux abrufbar.
Rückfragen und Anregungen zum Glossar bitte an glossar@heise.de.