# Deluge

Deluge (englisch für „Überschwemmung“, „Sintflut“; ehemals gTorrent) ist ein freier BitTorrent-Client für Linux, macOS und Windows.

## Geschichte
### Version 0.x

Ursprünglich wurde das Programm von Zach Tibbitts und Alon Zakai, zwei Mitgliedern von ubuntuforums.org, als gTorrent („G“ für GNOME), mit der Absicht einen vollwertigen BitTorrent-Client für die Gnome-Desktop-Umgebung zu entwickeln, ins Leben gerufen. Noch vor der ersten Veröffentlichung wurde es umbenannt, um die Trugschlüsse zu vermeiden, dass Deluge nur unter GNOME liefe oder ein Programm aus dem GNOME-Projekt sei.
Mit der komplett neu geschriebenen Version 0.5 wurde am 18. März 2007 das Betastadium verlassen. Der zweiten „stabilen“ Veröffentlichung 0.5.1.1 wurden wichtige Funktionen, wie die Protokollverschlüsselung, Quellenaustausch und UPnP, hinzugefügt. Ab Version 0.5.4.1 ist Deluge auch für Mac OS (über MacPorts) und Windows verfügbar. Version 0.5.8 brachte einen anonymisierenden Webbrowser, um die Blockadeversuche von BitTorrent-feindlichen Internetdienstanbietern umgehen und unbeobachtet aus dem Programm heraus nach Torrent-Dateien suchen zu können.

### Version 1.x

Die Version 1.0 sollte eigentlich als 0.6 erscheinen, wurde jedoch nach über einem Jahr eigenständiger Entwicklung als Version 0.9.01 in den Release-Candidate für die Version 1.0 umbenannt. Dabei handelt es sich um eine komplette Neuerstellung. Als wesentliches Merkmal sind ab der Version 1 die Benutzerschnittstellen zur Steuerung und Kontrolle vom Programmkern, der die eigentlich Funktionen wie Up- und Download beinhaltet, getrennt. Dazu ist der Programmkern (deluged) als Daemon ausgelegt, welcher je nach Konfiguration beispielsweise bei dem Start des Servers automatisch und ohne Benutzerinteraktion im Hintergrund gestartet werden kann. Er ist ohne Benutzeroberfläche als sogenannter Thin Client lauffähig. Die Voreinstellung ist, ihn mit der Benutzerschnittstelle gemeinsam zu starten und beenden zu lassen. Dieser Modus wird bei Deluge in Erinnerung an die Version 0.x als Classic-Mode bezeichnet.
Der Thin Client kann sich auch auf einen physisch anderen Rechner als auf dem Rechner mit der Benutzerstelle befinden und ermöglicht so die Trennung von Front-End und Back-End. So kann beispielsweise der Programmkern deluged auf einen externen Server in einem Rechenzentrum mit guter Internetanbindung betrieben werden, während sich die Steuerung und die Benutzeroberfläche, die auch nicht permanent aktiv sein muss, auf einen oder mehreren davon getrennten und externen Benutzerrechnern wie Laptops befinden kann.
Neben dem optionalen grafischen GTK-Frontend wird auch ein Web-Frontend zur Steuerung mittels Webbrowser angeboten. Daneben besteht noch eine reine textorientierte Steuermöglichkeit mittels Kommandozeile in Form der deluge-console die die Steuerung direkt über einen SSH-Kommandozeilen Zugang erlaubt.

## Technik

Deluge ist in Python geschrieben, hat eine grafische Benutzeroberfläche auf Basis von GTK (über PyGTK) und baut auf der C++-Programmbibliothek libtorrent auf, die mit Python-Anbindung versehen wurde. Das Kernprogramm verfügt über eine Schnittstelle für Module. Als Modul angelegte Funktionen lassen sich deaktivieren, womit sich der Funktionsumfang des Programms nach der Installation auch verringern lässt. Bereits jetzt sind einige der Module von projektexternen Entwicklern beigesteuert, werden aber alle mit Deluge ausgeliefert.

## Funktionen

Für grundlegende Funktionalität greift Deluge auf die Basis libtorrent zurück. Neben der Abfrage von Trackern wird mit Peers über eine verteilte Hashtabelle Quellenaustausch betrieben, um zusätzliche Gegenstellen zu finden. Dies kann sowohl nach dem im BitTorrent-Protokoll vorgesehenen Mainline-DHT (nach dem gleichnamigen Referenz-Client) als auch einen mit µTorrent kompatiblen Modus geschehen. Zudem lassen sich HTTP-Server als Quelle verwenden (Webseed). IPv6 wird unterstützt und Deluge kann Gegenstellen in lokalen Netzwerken erkennen.
Die Benutzbarkeit verbessern Merkmale wie das Öffnen benötigter Ports hinter einer Firewall aus dem Programm heraus (über UPnP oder NAT-PMP). Die Internet-Nutzung lässt sich von der Tageszeit abhängig beschränken. Statt Dateien manuell zu verschieben, kann Deluge sie selbst verschieben und erübrigt so zeitaufwändiges Einlesen. Ebenso kann man Dateien automatisch verschieben lassen, sobald sie vollständig heruntergeladen wurden.
Zum Schutz der Privatsphäre können die Nutz- und Protokolldaten verschlüsselt werden. Anhand von IP-Bannlisten kann Deluge störende Gegenstellen ignorieren. Torrents können über einen anonymisierten Browser gesucht werden. Eine Webschnittstelle ermöglicht das Steuern des Clients über einen Webbrowser, jedoch wird bislang eine grafische Oberfläche zum Betreiben des Clients benötigt. Die Entwickler setzen für die Benutzung des Webschnittstelle Mozilla Firefox oder einen ebenfalls auf der Gecko-Engine basierenden Browser voraus.
Weitere Module umfassen für BitTorrent-Clients übliche Funktionalitäten, wie das Anzeigen von ausführlichen Statistiken, das grafische Aufbereiten der benutzten Bandbreite oder die Benachrichtigung mittels Pop-up beim Beenden eines Downloads. Das Setzen von erwünschten Verteilungsverhältnissen und Geschwindigkeiten sowie Auswahl der erwünschten Dateien passiert für jedes Torrent individuell. Mittlerweile üblicher geworden sind ein integrierter Assistent zum Erstellen eigener Torrents und ein Broadcatcher zum automatisierten Herunterladen und Verteilen von Torrents nach Web-Feeds.