Local link (XEP-0174) enabled SMACK!
Wie viele ja bereits wissen bin ich ein großer Fan von Jabber bzw. XMPP. Im Gegensatz zu ICQ, MSN etc. hatte ich mit XMPP bisher nie echte negative Erlebnisse. Vor allem nicht aus der Sicht als Programmierer. Einer der Vorzüge von XMPP (neben den vielen anderen) zeigt sich wenn man mal seine Gedanken schweifen lässt und überlegt was im Bereich Messaging einfach cool wäre. Meistens bekommt man dann eine interessante/verrückte/brauchbare Idee und überlegt wie man sie realisieren könnte. Meistens gucke ich jetzt direkt in die Liste der Extensions des XMPP. Denn für viele Ideen die ich bisher hatte gibt es dort bereits eine fertige XEP! Und wenn man sich die Liste der XEPs mal so durchliest merkt man schnell, dass nur noch wirklich exotische Ideen noch nicht spezifiziert wurden. Eine der praktischeren Erweiterung ist die XEP-0174.
Auf diese Erweiterung namens “Serverless Messaging” bin ich gestoßen als ich eine Möglichkeit gesucht habe mehrere Softwareclients einer Software von mir (mehr dazu bald auch hier) ohne Server und unnötige Konfiguration miteinander zu vernetzen und Nachrichten austauschen zu lassen. Dass XMPP bereits eine Erweiterung dafür bereithält war nicht weiter verwunderlich. Allerdings stieß ich direkt auf ein typisches Problem von XMPP. Und zwar dass es eine verdammt coole Erweiterung gibt, aber keine vernünftige bzw. überhaupt keine Implementierung. Jabber könnte viel mehr Leute ansprechen wenn mehr der coolen Erweiterungen schnell implementiert werden würden. Aber das soll hier nicht das Thema sein.
In den igniterealtime Foren fand ich schließlich einen Eintrag von einem gewissen Jonas Ådahl. Dieser hat einen Patch für die Smack Bibliothek zur Verfügung gestellt, der Smack um XEP-0174 erweitert. Leider ist es nicht ganz trivial (zumindest für mich) diesen Patch in Smack einzupflegen. Denn nicht nur Smack benötigt einen Patch sondern auch JmDNS (eine Bibliothek für die Implementierung von mDNS und Bonjour). Zudem gab es in den Patches noch einige Fehler die gefixt werden mussten (meistens NullPointerExceptions). Da der ursprüngliche Autor sich nicht kontaktieren lässt und sein Git-Repository nicht mehr funktioniert habe ich das ganze mal selbst gepatcht, gefixt und gebaut. Ich bin mir zwar nicht ganz sicher, dass alles völlig korrekt funktioniert. Das mitgelieferte Beispielprogramm funktioniert aber ohne Fehler zu werfen. Den Download des Archivs mit Sourcen und Build gibt es hier.
Demnächst werde ich bei Gelegenheit noch ein Sourceforge-Projekt eröffnen um die Pflege und Weiterentwicklung zu ermöglichen. Zumindest bis XEP-0174 offiziell in Smack einfließt.



Februar 3rd, 2010 at 19:27
Wurde eigentlich XEP-0174 je offiziell in Smack eingebaut?
Februar 4th, 2010 at 08:04
Bisher nicht. Um sowas zu bewerkstelligen ist ein komplettes Refactoring nötig. Ich denke mal, dass das noch ne ganze Zeit dauern wird. Gibt auch erstmal andere dringlichere Sachen die in SMACK rein müssen.