Kitchen Sink
# Kitchen Sink

Kitchen Sink (deutsch Küchenspüle) wird in der Softwareentwicklung zwecks Kritik eine Art von Funktionalität bezeichnet, die maximal von der ursprünglichen Kernfunktion der Software entfernt ist. Also das Gegenteil des Sofwareentwicklungs-Prinzips „Schreibe Computerprogramme so, dass sie nur eine Aufgabe erledigen und diese gut machen.“. Es wird humoristisch impliziert, dass die Grenze dessen was Teil der Software sein solle überschritten sei, und als Nächstes die Funktionalität einer Küchenspüle hinzugefügt würde. Also eine Reduktion auf das Absurde. Der Begriff entstammt der englischen Redewendung „Everything but the kitchen sink“ („Alles außer die Küchenspüle“), die „so ziemlich alles, ob angemessen oder nicht“ bedeutet.

## Ältere Definition

In manchen Kreisen der Softwareentwicklung bezog sich der Begriff ursprünglich auf Beispiel. Dieses Beispiel diente zur Erläuterung der Funktionsweise eines Programmcodes und stellte alle möglichen Funktionen eines Programms dar. Es verfolgte für die Funktionalität der Software keinen Zweck und sollte lediglich den möglichst kompletten Funktionsumfang z. B. einer Programmierschnittstelle, eines Programmbibliothek verdeutlichen.

So stellten verschiedene Hersteller eine einzelne Anwendung zur Verfügung, die den kompletten Funktionsumfang der beworbenen API wiedergibt und somit den Entwicklern einen schnellen Überblick über den jeweiligen Funktionsumfang verschaffen kann.

## Beispiele

### Mozilla Firefox

Bei Mozilla existiert seit langem ein „running gag“, dass in Firefox eine Küchenspüle hinzugefügt werden sollte. Zeitweise existierte sogar eine Erweiterung, die diese anbot.

### Swing

Die Java-Widget-Bibliothek Swing enthält eine Applikation namens SwingSet3, die die Funktionalität der Bibliothek demonstriert. Diese wurde jedoch niemals als „Kitchen Sink“ bezeichnet.

