Swift 1.0 Released

Gestern wurde der OpenSource XMPP/Jabber-Client Swift in seiner ersten „reifen“ Version 1.0 herausgegeben.
Bei Swift handelt es sich um einen sehr schlicht gehaltenen, aber technisch sehr interessanten und leistungsfähigen Jabber-Client.
Er ist besonders für Leute geeignet, die sich keinerlei Gedanken um das wie machen wollen, sondern nur um das dass – er bietet kaum Einstellmöglichkeiten, sondern funktioniert einfach.

Mehr Infos und Download unter: www.swift.im

Swift Kontaktliste
Swift Kontaktliste

Swift Chatfenster
Swift Chatfenster

(Quelle der Bilder: swift.im)

Persönliche Meinung: Sehr guter Client „für die Massen“, einfach, schick und technisch einwandfrei.

Was richtige „Power-User“ wohl abhalten wird, sind der (tw. noch) fehlende Funktionen wie GPG-Unterstützung, kein Message Delivery Receipt (dafür aber partiell Stream Management!) oder auch LocalStorage. Derzeit unterstützt der Client nur einen Account gleichzeitig, wer mehr hat, guckt in die Röhre. Das wird sich aber vielleicht schon mit dem diesjährigen GSoC ändern. Generell läuft das Programm allen gängigen Betriebssystemen. Einfach mal ausprobieren!

Beer4Code – The winner is…

Und der nächste Begünstigte meines Project: Beer4Code ist:

LibreOffice, bzw. die Document Foundation (via dem deutschen OOo-Verein). Prost!

Ich hoffe, dass sie das gesammelte Geld in die Usability stecken, da wurde das Projekt vom Platzhirschen abgehängt…

Es ist übrigens gar nicht so einfach zu spenden, wenn alle nur Paypal annehmen, man selbst es aber boykottiert… Darum verzögert sich das Projekt leider ein wenig.

Einbindung von SVGs mit Fallback in HTML

Ich habe gerade auf ein paar Seiten hier im WordPress SVG-Graphiken integriert. Das ist leider gar nicht sooo einfach und hat noch ein paar Hürden.


<object data="http://www.last-crusade.de/wp-content/uploads/2011/last-crusade/jabber_xmpp/xmpp_logo.svg" type="image/svg+xml" width="100" height="103"><img width="100" height="103" src="http://www.last-crusade.de/wp-content/uploads/2011/last-crusade/jabber_xmpp/xmpp_logo.svg.png" alt="XMPP-Logo"></object>

Sieht folgendermaßen aus:
XMPP-Logo

In Browsern, die SVG noch nicht unterstützen (*hust*verflixter IE*hust*), wird statt dessen das PNG angezeigt. Funktioniert soweit ganz gut, getestet mit Opera 11, Firefox 3.6 (und IE8 mit Fallback). Googles Chrome verschluckt sich ein wenig an der Größenangabe vom SVG (also width und height), wenn ich es richtig sehe, will er auf die Größe, welche im SVG selbst definiert ist, zurückgreifen und stellt dann nur den definierten Ausschnitt dar. Auch wenn das Ganze vermutlich bei Weitem nicht die schönste Umsetzung ist, halte ich dieses Verhalten schlicht und ergreifend für falsch. Nun, soweit mal der Stand seitens HTML.
Dass man in WordPress aber generell keine SVGs in die Mediathek laden kann, hat mich schon ein wenig enttäuscht – da ist noch Nachholbedarf, Jungs & Mädels! 🙂

Das XMPP-Logo steht unter dem Copyright der XSF, vgl. [1], [2].

Unterschiede zwischen Jabber und XMPP

XMPP-Logo versus Jabber-Logo

Was sind eigentlich die Unterschiede zwischen Jabber und dem XMPP-Standard?
Diese Frage haben sich bestimmt einige schon gestellt. Die Suche im Internet führte (jedenfalls mich) auf die Schnelle nicht zu einer befriedigenden Antwort. Entweder werden die Begriffe gleichgesetzt oder aber XMPP wird nur als die „standardisierte“ Version von Jabber bezeichnet.
Nun, das stimmt natürlich auch mehr oder minder. Und dass die Unterschiede überschaubar sein würden, davon konnte ausgegangen werden. Schließlich ist aus dem in der Community entwickelten Jabber das von der IETF offiziell abgesegnete XMPP geworden. Nun bin ich auf eine Auflistung der Unterschiede gestoßen – am dafür naheliegendsten Ort, nämlich dem Standard-RFC selbst (RFC3920). Hier einmal kurz (und hoffentlich korrekt ;-)) zusammengefasst, was dort so aufgelistet wird:

Channel Encryption

Bei Jabber war SSL vorgesehen. Bei XMPP wurde der „Nachfolger“ TLS vorgeschrieben.

Authentication

Beim XMPP wurde das standardisierte SASL-Verfahren für die Authentifizierung festgelegt, bei Jabber wurde diese wohl in einer selbstgebackenen Lösung realisiert. Für die Server-zu-Server Verbindung  wurde vor der Standardisierung kein vollständiges Verfahren festgelegt. Auch hier springt bei XMPP SASL in die Presche.

Resource Binding

Das Hinzufügen der vorgeschriebenen Ressource-ID war früher Teil des Authentifizierungs-Mechanismus, heute wurde dafür ein eigener Namespace definiert

JID Processing

Die Verarbeitung von JID’s waren schlecht oder gar nicht definiert. Dieser Missstand wurde im XMPP behoben.

Error Handling

Im XMPP wurde ein erweiterter Mechanismus eingeführt, welcher sich um die Fehlermeldung innerhalb von Streams und Stanzas kümmert. In Jabber wurde hier wohl mit HTTP-ähnlichen Error-Codes verwendet.

Internationalization

Auch wenn UTF-8 schon seit eh und je in Jabber verwendet wurden, wurde keine Möglichkeit vorgesehen, um die Sprache des menschenlesbaren Parts zu definieren. Hierfür wurde im Standard ein „xml:lang“-Attribut eingeführt.

Stream Version Attribute

XMPP führt für Streams eine Versionierung ein, welche es beispielsweise ermöglichen soll, Rückschlüsse auf die Unterstützung für verschiedene Authentifizierungs- und Verschlüsselungsmechanismen zu signalisieren.

So, mehr wird im RFC nicht aufgelistet. Klingt ja nach recht sinnvollen Änderungen, die sie da vorgenommen haben. Vielleicht hilft diese Zusammenstellung ja mal dem Einen oder Anderen, der eine Präsentation oder ähnliches über das Protokoll halten will oder sich einfach auch fragte, was sich wohl geändert haben mag. Fest steht jedenfalls, dass der Name Jabber (zu deutsch: plappern, quasseln) wesentlich leichter von der Zunge geht, als XMPP – von daher wird er wohl (zu Recht) langfristig ein Synonym hierfür bleiben.

Das XMPP-Logo steht unter dem Copyright der XSF, vgl. [1], [2].

Gezielte Vergeudung von Ressourcen

Es ist schon traurig, wie heutzutage noch mit den kostbaren und durchaus begrenzten Ressourcen dieser Welt umgegangen wird. Besonders schlimm finde ich, wenn reines Marketing und die damit verbundene Gewinngier dazu führen. Was ich damit meine? Das will ich kurz erklären, vielleicht ist es dem Einen oder Anderen ja so gar nicht bewusst.

Wenn heutzutage beispielsweise eine neue Generation an Computerprozessoren das Licht der Welt erblickt, bieten die großen Hersteller wie Intel oder AMD diese in verschiedenen Ausführungen an, gestaffelt nach Leistung, Funktionsumfang und dem daraus resultierend Preis. Was hier aber traurige Wahrheit ist, ist folgendes: Es gibt meist eigentlich nur zwei oder drei verschiedene Ausführungen, der Rest wird einfach „kastriert“, Funktionen werden also auf den Chips deaktiviert und/oder die Leistung einfach gedrosselt, damit diese den teuren Modellen vorbehalten bleiben. Das heißt also, dass die bessere Technik da wäre, wenn man sie nicht gezielt abklemmen würde. Und das ist finde ich eine Schande. Die Chips würden mehr leisten, man hätte mehr von seinem Geld und man bräuchte mitunter nicht so schnell einen neuen Rechenkern, weil die Geschwindigkeit des Alten ausreicht. Die Ressourcen für diese Dinger wurden aufgewendet und sie werden so verstümmelt, nur damit wir sie nicht so lange nutzen wollen/können. Das macht mich traurig und wütend. Meinetwegen sollen sie die CPUs doch teurer machen und nicht jedes Jahr eine neue Generation herausbringen, sondern lieber in längeren Abständen wirklich ausgereifte und bessere Chips auf den Markt werfen. Zumal sich dann auch Optimierungen der Software eher lohnen würden. Wir und die zukünftigen Generationen hätten unterm Strich wesentlich mehr davon.

Selbiges, wenn auch in etwas anderer Form gilt zum Beispiel auch für Kameras. Hier werden oftmals relativ ähnliche Modelle hergestellt (wenn auch ggf. in anderen Gehäusen), die alle das Gleiche könnten. Hier werden dann aber nicht die Chips beschnitten, sondern einfach die Software, welche auf den Kameras läuft. Und schon haben wir den gleichen Effekt.

Ich bin mir sicher, das gleiche Muster lässt sich auf viele andere Gebiete übertragen, die mir überhaupt nicht in den Sinn kommen.

Es ist einfach krank, was die Industrie mit unserem Planeten anstellt. Wir, oder spätestens unsere Nachfahren, werden aber dafür die Rechnung erhalten, keine Sorge…

XMPP/Jabber ist doof, weil…

Genug gelobt. Wollen wir doch mal motzen.

Jabber/XMPP ist doof, weil…

  • …die Clients (und auch Server) oft kleinere Bugs haben, die nerven.
  • …die praktischsten XEPs oftmals nur von wenigen Clients und Servern unterstützt werden.
  • …Dateitransfers über peer2peer-Verbindungen in „verwinkelten“ Netzwerken nicht ohne Proxy funktionieren.
  • …Server und Clients merken teilweise erst spät, dass die Verbindung zwischen Ihnen abgebrochen ist, weil sie dafür relevate Protokollerweiterungen (z.B. XEP-0199) nicht implementieren und richtig nutzen, was dazu führen kann, dass Nachrichten verloren gehen (ebenfalls wegen nicht implementierter XEPs, vgl. hier).
  • …(menschenlesbares) XML ein gutes Stück mehr Bandbreite braucht, als eine kompakte Binärkodierung (kleiner Scherz am Rande dazu). Dies ließe sich durch eine sauberere Implementierung diverser Erweiterungen zwar reduzieren, aber es bleibt ein großer Overhead.
  • …es einfach zu wenig aktive Nutzer gibt.
  • …fast alle Entwickler von Servern und Clients ihr eigenes Süppchen kochen und nicht zusammenarbeiten.

So, wenn mir noch etwas einfällt, wird die Liste ergänzt. Soll mir keiner nachsagen, ich würde einseitig über Jabber schreiben 😉

XMPP – Ein (abwärts-)kompatibles Protokoll

Wenn man Aufzählungen mit den Vorzügen von XMPP liest, sticht einem häufig die Eigenschaft der (Abwärts-) Kompatibilität ins Augen. Nun, aber was bedeutet das eigentlich?

Früher ging ich davon aus, dass damit schlicht und ergreifend gemeint ist, dass wenn sich das Protokoll ändern sollte, bzw. eine neue Version davon erscheint, alte „XMPP-1.0“-kompatible Clients trotzdem noch funktionieren werden. Das stimmt auch.

Allerdings ist das nicht der einzige Aspekt, der diese Eigenschaft erfüllt: Damit ist auch gemeint, dass das Extensible (!!!) Messaging and Presence Protocoll auch so designed ist, dass Clients/Server, die Erweiterungen (XEPs) anbieten nicht die Kompatibilität zu eben solchen, die diese nicht unterstützen, zunichte machen. Die schlichtest-mögliche Implementierung des Protokolls (Server oder Clientseitig) funktioniert immer noch mit der theoretisch „höchsten Ausbaustufe“.

Das ist jetzt keine allzu große Erkenntnis, aber bei mir hat es ein Weilchen gedauert, bis ich den Zusammenhang erkannte.

Studentenwerk Heidelberg – Task Force

Die Mensa in Heilbronn wird vom Studentenwerk bedient. Neulich bekam ich auf eine Mail, in der ich einige Missstände ansprach, eine Antwort mit folgender Zeile, die ich euch nicht vorenthalten möchte:

Wir haben die relevanten Organisationseinheiten involviert.

Das nenne ich mal Einsatz! Da brüten jetzt bestimmt 24/7 einige Zigarre rauchende Generäle über einem Tisch mit Speiseplänen in einem kleinen Bunker in Heidelberg. Nicht, dass sie was ändern würden, aber immerhin haben sie alle relevanten Organisationseinheiten („alle“ kann auch „keine“ bedeuten..) involviert.

Manchmal sollte man sich die eine oder andere Formulierung besser sparen, auch wenn sie „wichtig“ klingt…

Warum man Jabber/XMPP nutzen sollte

Ich nerve gerne. Zumindest dann, wenn ich von einem Thema begeistert bin. So ein Thema ist auch Jabber/XMPP. Daher ist es höchste Zeit, hier einen Blogeintrag zu verfassen und darüber ein wenig zu schreiben – allein schon, damit ich zukünftig meinen „Opfern“ nur diesen schicken kann und nicht immer auf’s Neue lange Reden verfassen muss 😉 Ich werde das hier von der technischen Sicht her versuchen, so simpel wie möglich zu halten und auch einige Details eindampfen (ist nicht ganz einfach, wenn man angehender Software-Engineer ist und in der Materie drin ist ;-)), auch wenn manches dadurch genau genommen nicht mehr zu 100% stimmt bzw. unvollständig ist. Wer sich wirklich für die Technik dahinter interessiert, wird das schnell in anderen Quellen finden können (Wikipedia ist unser aller Freund *g*).

XMPP-LogoJabber-Logo

Also, dann fangen wir doch mal an. Nun, zunächst sei zu erwähnen, dass die Begriffe „Jabber“ und „XMPP“ quasi gleichzusetzen sind. Ich werde sie ab jetzt bunt mischen .

Was ist dieses Jabber/XMPP eigentlich?

Jabber ist ein kostenloses Chatprotokoll, vergleichbar mit MSN oder ICQ. Es gibt jedoch eine ganze Reihe Unterschiede, auf einige werde ich weiter unten eingehen. Die Jabber-Adressen sehen folgendermaßen aus Benutzername@Anbietername.bla , also exakt so, wie E-Mail-Adressen aufgebaut sind.

Warum Jabber? Was für Vorteile habe ich dadurch?

  • XMPP ist ein freies Protokoll – es „gehört“ also niemandem. Wenn ICQ pleite geht oder kostenpflichtig werden würde, dann hieße es „Aus die Maus!“. Jabber indes ist ein offenes, standardisiertes (!) Protokoll.
  • XMPP ist flexibel und abwärtskompatibel – Man ist nicht gezwungen, nach ein paar Monaten/Jahren das Programm zu wechseln, weil die Entwickler etwas geändert haben und das Alte nicht mehr geht.
  • Es ist generell an kein Programm gebunden – man hat die freie Wahl. Das führt natürlich zu dem einen oder anderen Vorteil, z.B. haben die Chatprogramme/Clients keine Werbeeinblendungen und sind zumeist nicht klickibunti-überladen. Auch bremsen sie den Rechner nicht so aus, wie beispielsweise das ICQ-Programm.
  • Jabber sieht von vornherein Verschlüsselung vor, was dafür sorgt, dass die Dialoge von dritten nicht einfach mitgelesen werden können.
  • Wenn man bedenkt, dass Google, Web.de/GMX/1und1, Facebook und StudiVZ auf Jabber setzen, brauche ich nicht zu erwähnen, dass das Protokoll wirklich gut ist und sich in Zukunft wohl auch weiter durchsetzen wird.
  • Man kann an mehreren Rechnern (oder auch Mobiltelefonen..) gleichzeitig online sein und wird nicht „herausgeworfen“.
  • Chaträume lassen sich einfach mit wenigen Klicks erstellen, somit kann man mit mehreren Leuten in einem Fenster gleichzeitig chatten.

Was spricht gegen die anderen Protokolle?

  • Der Zwang zu einem speziellen Programm, welches mitunter Sicherheitslücken mitbringt und dadurch den Computer gefährdet (war bei ICQ des öfteren der Fall…)
  • ICQ beispielsweise schreibt in seinen AGBs, dass sie sich das Recht herausnehmen, alles, was von den Nutzern geschrieben wird, frei zu verwenden und daran die Copyrights zu haben. (Vgl.: Wikipedia )
  • Bleiben wir mal bei ICQ: Vor kurzem wurde es von AOL an eine russische (sehr vertrauenserweckend…) Firma für über 187 Millionen Dollar verkauft – es wird also mit aller Macht versucht, Profit aus den Nutzern – euch – zu schlagen.

Nachteile von Jabber – Sind wir mal fair 😉

Natürlich gibt es auch den einen oder anderen Nachteil, das will ich nicht verschweigen.

  • Es ist noch weniger weit verbreitet, was dazu führt, dass man mitunter trotzdem noch sein vertrautes ICQ oder MSN parallel nutzt, um mit anderen Leuten zu kommunizieren. Dass es sich hierbei um einen Teufelskreis handelt, brauche ich nicht zu erwähnen. Aber meine Kontaktliste wächst stetig, es geht also voran.
  • Da es nicht „den einen, heiligen Gral“ als Programm gibt, zu dem man quasi gezwungen wird, ist so manch einer ein wenig abgeschreckt. Aber es ist alles kein Hexenwerk, ganz im Gegenteil, versprochen.
  • Um Daten zu versenden, KANN es sein, dass man ein wenig an den Einstellungen spielen muss, bis es geht. Wobei das bei ICQ bei mir auch nicht immer funktioniert hat.
  • Es gibt sogar die Möglichkeit, zu telefonieren und Videokonferenzen zu halten, jedoch unterstützen das noch nicht viele Programme und es funktioniert in manchen Netzwerken derzeit eher schlecht als Recht. Aber GoogleTalk ist ein Beispiel dafür, dass es auf jeden Fall auch gut funktionieren kann – andere Programme müssen hier noch verbessert werden.

Neugierig? Was brauche ich zum Ausprobieren?

Da Jabber ein Protokoll-Standard ist, gibt es kein offizielles Programm von irgend einer Firma. Daher hat man die Wahl zwischen verschiedenen Programmen, wovon ich einfach mal zwei (drei) herauspicken möchte.

  1. Psi (www.psi-im.org) Ist ein reinrassiges Jabber-Programm. Es ist relativ schlicht, sieht meiner Meinung nach aber dennoch gut aus. Ich verwende es seit geraumer Zeit.
  2. Pidgin (www.pidgin.im) ist ein Chatprogramm, das neben XMPP auch andere Protokolle, wie zum Beispiel ICQ, Facebook (welches aber auch Jabber einsetzt…),MSN, Yahoo und viele mehr unterstützt. Es ist ebenfalls übersichtlich und schlank.
  3. Ein Programm, welches durch seine Einfachheit besticht, ist Swift (www.swift.im ), jedoch befindet es sich noch in der Entwicklung (Januar 2011), daher empfehle ich es nur eingeschränkt – wenngleich es bei mir im Test wunderbar funktionierte. Wenn es fertig ist, wird es aber von der Nutzerfreundlichkeit bestechend sein – perfekt für Menschen, die sich nie mit Konfigurationen beschäftigen wollen und sich ein Stück Software wünschen, das einfach funktioniert und dabei auch noch gut aussieht.

Wie man die Programme konfiguriert, ist sehr schön unter einfachjabber.de erklärt.

Um Jabber zu nutzen, muss man sich einen Account auf einem Server anlegen (vgl. auch einfachjabber.de), so denn man nicht schon einen hat. Woher ihr schon einen haben sollt? Nun, beispielsweise wenn ihr eine E-Mail-Adresse von GoogleMail, Web.de oder auch GMX habt -> hier könnt ihr euch einfach mit den Login-Daten anmelden und ab geht die Post. Sollte dem nicht so sein, würde ich spontan zu jabber.ccc.de raten.

Es ist wirklich kinderleicht, glaubt mir einfach 😉

So, das sollte jetzt mal ein ‚kleiner‘ Abriss über Jabber und XMPP sein. Vielleicht kann ich ja den einen oder anderen ‚bekehren‘, würde mich freuen! Wir sehen uns in Jabber, erreichbar bin ich unter

zwei-und-vierzig {Ät-Zeichen} jabber.org

Bis dann und danke für’s Lesen! 🙂

Weiterführende Links:

Das XMPP-Logo steht unter dem Copyright der XSF, vgl. [1], [2].