Tag Archives: Jabber

An Instant Messenger Emoticon Theme Generator

For the regular readers of this blog this post is a little different, because it’s in English instead of German as usual. The reason is, this is an announcement of a tool I put together over the last months, which I consider interesting not only for German speaking users. So I hereby announce a smiley theme generator software for different instant messenger programs, but let’s start at the beginning.

In 2007 I took the smiley graphic files from a local internet community1 to build my own emoticon theme for the Jabber client Psi. This was basically putting together a description file and installing it and I described and announced it in this blog.2 Last year I started using Perl Template Toolkit 2 for building my personal homepage and thought this would be a great tool to build this smiley stuff in a more automatic way and for more than one instant messenger. Although I barely remember, it seems I also wrote about it in this blog.3

This year now I made some new friends with different messengers and started reworking the whole thing, especially to add some more messengers and to be able to use it for more graphic themes and here it is: a possibility to put your smiley graphics in a folder, write one description file for the mapping from smiley codes in the text (like :-) or :’-( and so on) to your graphic files, run the build script and have ready to install smiley theme packages for a bunch of different instant messenger programs. Let me quote the README file:

The purpose of this software is to create installable smiley iconset files for various instant messenger programs with a templating mechanism (using Perl Template Toolkit). This means smiley theme authors only have to provide the graphics and write one simple template file with the definitions which texts are related to which graphics, e.g. ‘:-)’ to the smiling graphics file. Add a little metadata, call the build script and you’re done. With help of the templates the definition file formats of the different messengers are created and a packing script does the rest of the magic. You don’t have to worry about a dozen different formats for definition files and packing conventions.

To use this software you need Subversion to check out the sources, an operating system running Perl and the Perl Template Toolkit 2, you must be able to execute shell scripts like from Bash or Zsh and have tar, gzip and zip ready. So every Unix or Linux like OS should work, on Microsoft Windows you could try your luck with cygwin, however I didn’t test this because I run Debian/GNU Linux. ;-)

Check out the tool with your preferred subversion client from https://www.antiblau.de/svn/penguineering_tools/trunk/im_emoticons/ and see the file README inside which contains all the necessary descriptions how to use the software. It is licensed under a BSD style license so you are free to use and change it to your needs. We also have a wiki page for it in our bugtracking system. You can also view the sourcecode and create tickets there.

For demonstrating the power of the templating approach I took the very nice (and free) smileys from simplesmileys.org and let the software build smiley themes for all the already supported instant messengers. You can download pre-build theme files for Adium, Kopete, Miranda, Pidgin and Psi from tools.penguineering.com.

Of course these five messengers are not all. If you have a template file for another one, don’t hesitate to contact me. Also if you have free smiley graphics and build a description file we could integrate in the subversion repository, I would be delighted if you just send it in.

In the hope this is useful for anybody else, have fun with it! :-)

  1. WebUni []
  2. WebUni Iconset für Psi []
  3. Mit Kanonen auf Smileys []

Verlorene Nachrichten im OnlineChat von GMX und web.de

GMX und web.de, neben 1&1 die beiden großen Marken der United Internet AG, bieten seit etwas über zwei Jahren nun den sogenannten MultiMessenger an, ein Programm mit dem man gleichzeitig in verschiedenen Instant-Messenger-Netzwerken online sein kann. Das ganze basiert auf Jabber beziehungsweise XMPP. Ein willkommener Nebeneffekt ist, dass man mit den Zugangsdaten vom Mail-Konto eines der beiden Provider prinzipiell direkt einen Jabber-Account hat, den man mit beliebigen Clients nutzen kann. In unserem Freundeskreis machen von dieser Möglichkeit (also Jabber-Account am MultiMessenger vorbei) etwa ein halbes Dutzend Leute Gebrauch und haben so einen Jabber-Account mit leicht zu merkendem Nutzernamen und Passwort – die selben wie beim Mail-Account halt.

Heute mittag war ich etwas verwundert, jemanden aus dieser Runde im Jabber online zu sehen, der um diese Zeit während der Arbeit üblicherweise keinen Jabber-Client benutzt, sondern maximal im Browser die E-Mails abruft. Die verwendete Ressource lautete webmessenger, was mich vermuten ließ, dass GMX und web.de da jetzt ein wenig wie GoogleMail arbeiten. Dort kann man GoogleTalk, also Google’s Form von Jabber, auch nutzen, während man über das WebFrontend seine Mails liest. Also hab ich mich mal bei den beiden Portalen eingeloggt und siehe da:

Am oberen Rand des Browserfensters (naja also des sog. Viewports, vom Inhalt oder sagen wir mal der Seite selbst eben) sind neuerdings verschiedene Symbole. Von links nach rechts sind das das Logo von GMX bzw. web.de, ein Briefumschlag für den Posteingang und dann eine bunte Sprechblase. Hinter dieser verbirgt sich sozusagen das Webfrontend des Multimessengers. Wer diesen oder einen anderen Jabber-Client mit diesen Zugangsdaten schon benutzt hat, sieht auf der linken Seite zunächst mal seine Kontaktliste, wahrscheinlich sind sogar ein paar Leute online. Mit den kann man dann ganz normal chatten, soweit so gut.

Jetzt sehe ich aber bei dieser Geschichte ein paar Probleme. Wie eingangs erwähnt, wird man automatisch im Jabber-Netzwerk angemeldet, wenn man bei GMX oder web.de nun seine Mails liest. Für alle, die den MultiMessenger oder den Account mit einem alternativen Jabber-Client sowieso nicht nutzen, ist das relativ egal, weil da auch die Kontaktliste leer ist. Diese Leute empfangen dann sowieso keine Nachrichten.

Alle anderen haben nun zunächst folgendes Problem: für die Kontakte sieht das so aus, als wären sie online und quasi bereit zu chatten. Die entsprechenden Nachrichten schlagen dann in diesem Webinterface auf. Da erscheint dann eine unscheinbare rote Nummer mit der Anzahl der neuen Nachrichten über dem Sprechblasensymbol. Wenn ich jetzt nicht in diesen OnlineChat klicke, dann ignoriere ich damit nicht nur diese Nachricht, ich bekomme die auch nirgends wieder zu sehen: nicht im normalen Jabber-Client beim nächsten Einloggen und auch nicht im Webinterface beim nächsten Einloggen!

Die Konsequenzen dürften abgesehen von der fehlenden History vielfältige soziale Probleme folgender Art sein:

»Wieso hast Du meine Nachricht heute mittag nicht beantwortet?«
»Ich war heute mittag gar nicht online.«
»Doch, im Jabber, ich hab Dich doch gesehen.

Das wäre nicht so schlimm, wenn die ungelesenen Nachrichten später nochmal auftauchen würden, tun sie aber nicht! Wenn sowas wiederholt passiert, wird das bei technisch nicht versierten Nutzern zu Frustration, Missverständnissen und was weiß ich nicht führen. Das mag sich bitte mal jeder selbst ausmalen.

Was kann man nun dagegen tun? Gute Frage. Nach meinen bisherigen Erkenntnissen, kann man das Einloggen beim Jabber-Server nicht einfach abschalten, so wie das, wenn ich mich recht entsinne, bei Google der Fall ist. Was man derzeit machen kann: man klickt in diesem Messenger-Interface auf »Hauptmenü« und dann auf »Einstellungen«. Dort gibt es derzeit nur eine mögliche Einstellung, nämlich zu eben dieser Anmeldung, wo man auswählen kann, welchen Status man bei der Anmeldung haben möchte. Hier sollte man, um den zuvor geschilderten Missverständnissen vorzubeugen, unbedingt »unsichtbar« auswählen! Das verhindert zumindest, dass die Kumpels einen online sehen und dann Nachrichten an einen schreiben, die nie gelesen werden.

Für den weiteren Verlauf wäre es wünschenswert, wenn GMX und web.de den Nutzer deutlich auf dieses Verhalten hinweisen und das ganze abschaltbar machen würden. Ich werde mal versuchen, diese Betreiber zu kontaktieren, mache mir da aber keine großen Hoffnungen.

Bis dahin schlage ich vor: wenn Ihr Nutzer kennt, die Jabber über GMX oder web.de nutzen und ihre Mail auf der Webseite lesen, weist diese Nutzer deutlich auf diesen technischen Missstand hin und wie sie in zumindest umgehen können!

Technisch ein wenig versierte Nutzer: wenn Ihr in Eurem Jabber-Client seht, dass der Gegenüber gerade nur auf der Ressource »webmessenger« online ist, verzichtet auf das Senden der Nachricht!

Für weitere Vorschläge bin ich offen, könnt Ihr gern hier in den Kommentaren oder per Mail abladen.

Davon abgesehen, habe ich noch ein weiteres Problem festgestellt. Wenn ich aus dem Webinterface heraus Kontakte einlade, die ihren Account auf einem anderen Jabber-Server haben, kann ich mit denen nicht das normale Autorisierungs-Spielchen durchspielen. Die Kontakte verbleiben als unbestätigt in der Liste. Für den Fall, dass die andere Jabber-ID auch als Mail-Adresse funktioniert, kommt dort eine Mail mit einem entsprechenden Hinweis an. Man kann die Autorisierung aber nicht direkt über Antwort auf die Mail oder Anklicken eines Links abschließen, sondern muss von der Gegenseite aus seinem Jabber-Client heraus den GMX/web.de-Kontakt hinzufügen. Danach hat der dann aber den Eintrag doppelt in der Kontaktliste. Kurz und gut: wo »beta« drauf steht, ist in dem Fall auch »beta« drin. :-(

Nachtrag: Zum Glück werden Offline-Nachrichten nicht von diesem OnlineChat abgeholt sondern landen im normalen Jabber-Client, wenn der wieder online geht.

Mit Kanonen auf Smileys

Es ist schon ein paar Tage her, dass ich ein Iconset für Psi mit Smileys einer beliebten lokalen Internet-Community gebastelt und hier zum Download bereitgestellt habe. Unterdessen habe ich die eine oder andere Beschwerde von Leuten bekommen, die zwar die selbe Community aber andere Instant Messenger benutzen. Wenn diese beispielsweise einen Smiley der Form :puppy: empfangen, sehen die im dümmsten Fall einen Smiley, der die Zunge rausstreckt und danach uppy:. Egoistisch gesehen, hätte ich damit leben können, aber da mir ja speziell meine lieben Mitbewohner am Herzen liegen, schaute ich mal, ob ich nicht auch für andere Messenger als Psi so Icon-Themes, Smiley-Sets oder wie auch immer die bezeichnet werden, basteln könnte.

Ein Theme für Kopete hatte ich schnell zusammen und kündigte das in jener Community an. Die Begeisterung war groß, zumindest bei den beiden Nutzern von Kopete… Stimmen wurden laut, man hätte sowas auch gern für Pidgin, Adium, Miranda usw. Ich nutzte dann mal direkt das eingangs erwähnte Psi um mit Tux Kontakt aufzunehmen und wir sponnen ein paar Ideen zusammen. Das Ergebnis darf ich an dieser Stelle nun verkünden, doch zunächst noch ein kleiner Abstecher in die Welt der Smiley-Themes.

Wie sieht so ein Theme intern aus? Für den Fall der bereits erwähnten Psi, Kopete, Pidgin und Adium sieht das so aus, dass man einen Ordner hat mit den kleinen Grafik-Dateien, entweder im GIF-Format für animierte Viecher oder für unbegliche auch GIF oder besser PNG. Dazu kommt dann eine Textdatei zur Zuordnung von Textsequenzen zu diesen Dateien und dann wird das in ein Archiv gepackt und gut. Der interessante Punkt ist diese Beschreibungsdatei, die sieht nämlich für jeden Messenger anders aus. Mal ist das XML, in unterschiedlicher Struktur natürlich, mal ist es Plain-Text, angereichert mit unterschiedlich viel Meta-Information. Aber es sind überall die selben Grafiken und es sind alles Textdateien, die man rein theoretisch ja auch einfach von einem cleveren Programm generieren lassen kann, das einmal die richtige Zuordnung von Smileys zu Dateien kennt.

In diesem Fall war die Kanone meiner Wahl Perl Template Toolkit 2. Im Rahmen der Neugestaltung meiner privaten Homepage (nein, kein Link, ist schließlich noch nicht fertig :P ) hatte ich das schon benutzt und es erschien mir geeignet, was sich auch später bestätigt hat. Nach dem Erzeugen der Beschreibungsdateien erledigt das Verpacken ein simples Shell-Skript. Die Smiley-Themes für Kopete, Pidgin und Psi können wir damit schon erzeugen. Für die Unterstützung weiterer Messenger brauchen jetzt nur noch die passenden Templates geschrieben werden.

Eins fehlt natürlich noch: die fertigen Templates und die Skripte an sich für die Leute, die das nachspielen wollen. Eine kleine Dokumentation nebst Download-Links für bereits gebaute Iconsets gibt’s im Wiki von den Penguineering Tools. Wer selbst dran rumfummeln will, schaut am besten ins Subversion-Repository.

Cloud Messaging

Moderne Instant-Messaging-Protokolle, wie zum Beispiel Jabber, erlauben es bereits mit mehreren Clients gleichzeitig online zu sein. Auch das Problem der durch mehrere Rechner verteilten Nachrichtenhistorie kann mit Tools wie IMPULS, über das wir auch schon berichtet haben, gelöst werden.

Übrig bleibt das Problem, dass eingehende Nachrichten nur bei einem der angemeldeten Clients erscheinen. Bei Jabber ist das der Client mit der höchsten Priorität. Sitzt man gerade an einem der anderen Rechner, hat man Pech und wird über die Nachricht nicht informiert. Auch, wenn man den Rechner wechselt oder der Gesprächspartner an eine bestimmte Ressource schreibt, erfährt man von der Nachricht erst, wenn man genau den Zielclient öffnet.

Es fehlt ein System, bei dem man auf allen angemeldeten Clients jederzeit denselben Zustand vorfindet. Inklusive der aktuellen Nachrichten. Das entspräche auch der Vorstellung des Geprächspartners, der oft gar nicht weiß, welche Infrastruktur man selbst hat und welche Nachricht wo empfangen wird.

Der Begriff “Cloud Messaging” für dieses Konzept ist vom Cloud Computing abgeleitet, bei dem es ja auch darum geht, an jedem beliebigen Ort seine Daten und Applikationen vorfinden zu können. In diesem Fall geht es nicht allgemein um die Berechnung, sondern um Kommunikation, also eine Unterkategorie des Computings.

Es gibt eine einfache Lösung, die ich für ICQ schon lange anwende: Der Client (licq) läuft als Konsolen-Applikation in einer virtuellen Konsole mit screen. Über ssh kann ich mich mit meinem Server verbinden und dann auch auf mein ICQ zugreifen. Die Lösung erfüllt alle oben gemachten Forderungen. Sie hat aber drei Nachteile:

  1. Ich brauche dafür einen Server, auf dem meine Software laufen kann.
  2. Die Hardware, mit der ich zugreife, muss eine entsprechende Konsole darstellen können. Bei einem Handy wird das schon schwierig. Das Benutzerinterface lässt sich nicht an das jeweilige Gerät anpassen.
  3. Da die Kopplung zwischen Applikation und Betriebssystem durch ssh und screen sehr lose ist, können spezielle Mechanismen des Zielgeräts – zum Beispiel das Abspielen eines Sounds bei eingehenden Nachrichten – nicht genutzt werden. Die Integration ist sehr schlecht.

Gerade offene Protokolle mit entsprechenden Client-Bibliotheken laden dazu ein, auf das jeweilige Gerät angepasste Applikationen zu schreiben. Deshalb muss das Cloud Messaging über das Protokoll realisiert werden.

Möglich ist zum Beispiel folgende Lösung: Der Server versendet nicht sofort die Nachrichten, sondern informiert alle Clients über die anstehende Nachricht. Falls sich Clients anmelden, wenn noch wartende Nachrichten vorhanden sind, werden diese ebenfalls informiert. Erst wenn ein Client die Nachricht wirklich angenommen hat, der Nutzer die Nachricht also aktiv auf dem Client empfangen hat, wird sie vom Server entfernt. Die übrigen Clients werden darüber informiert, dass die Nachricht empfangen wurde. Effektiv werden damit keine Nachrichten mehr verschickt, sondern Informationen über eine Änderung des Messaging-Zustandes des betroffenen Nutzers. Dieser liegt auf dem Server, wie das auch derzeit mit nicht abgerufenen Nachrichten der Fall ist.

Wenn dieses Konzept auf den Status erweitert wird, ist es außerdem möglich, transparent mit nur einem Gerät zu erscheinen, während man gleichzeitig mit dem Desktop-PC, dem Notebook und dem Handy online ist und die Wahl hat, auf welchem der Geräte man die Nachricht empfangen und die Antwort verfassen möchte.

irssi-Hilight mit Jabber

Seit einigen Jahren läuft in meiner Screen-Session neben ICQ und anderen Tools auch ein irssi, um mich mit der Welt des IRC zu verbinden. In den meisten Channels bin ich einfach nur anwesend, gelegentlich spricht mich dann aber doch jemand an. Dank hilight im irssi wird man darüber ja eigentlich informiert. Nur leider schaue ich viel zu selten in das irssi-Fenster, um das dann letztendlich auch zu sehen. (Ja, screen informiert ueber Pings in anderen Fenstern, aber da guck ich doch erst Recht nicht hin …)

Da irssi eine schicke Perl-API hat, liegt es doch nahe, ein Perl-Script zu schreiben, mit dessen Hilfe ich mich anderweitig informieren lassen kann. Sehr nahe liegt da der Instant Messenger, der sowieso immer läuft, wenn ich am Rechner sitze – konkret Jabber.

Mit dem Perl-Modul Net::Jabber ist das alles kein Problem (abgesehen von den lückenhaften Dokumentationen, insbesondere in der irssi API) und so gibt es nun das Script irssi2jabber.pl, das als irssi-Script geladen werden kann und mir nun bei jedem Hilight oder jeder privaten Nachricht, die auftreten, während ich /away bin, eine Nachricht an meinen Jabber-Account schicken.

Das Script ist etwas kommentiert, die notwendigen Einstellungen stehen ganz am Anfang und müssen in die irssi-Config. Unter der GPLv3 darf es jeder weiterverwenden, natürlich nehme ich auch Patches an, die, wenn sie nützlich sind, eingepflegt werden.

WebUni Iconset für Psi

Ich plane, über kurz oder lang ICQ Lebewohl zu sagen und auf Jabber umzusteigen. Gründe dafür gibt’s genug und wer will, kann da sehr viel im Netz finden. Jabber-Clients gibt’s mittlerweile einige und auch die verbreiteten und beliebten Multi-Protokoll-Clients Miranda und Trillian können damit umgehen. Ich persönlich bin ein Fan von Psi. Der unterstützt das Protokoll und viele Erweiterungen, GnuPG-Verschlüsselung ist eingebaut und er sieht sowohl unter Windows als auch unter Linux schick aus – schlicht, aber schick.

Aus Neugier habe ich letztens geschaut, wie die Iconsets dort eingebunden sind. In einem Ordner liegt jedes Icon in Form einer PNG-Datei und dann gibt es eine Datei icondef.xml, die selbsterklärend ist, ein tolles Beispiel für die sinnvolle Anwendung von XML.

Naja genau genommen habe ich nicht nur aus reiner Neugier geschaut. In meinem Freundeskreis gibt es einige Leute, die bei der Online-Community WebUni aktiv sind. Mit der Zeit verinnerlicht man die Abkürzungen für die dort gebräuchlichen Smilies und dann benutzt man die irgendwann auch außerhalb von WebUni – beispielsweise im Instant Messenger. Was liegt näher, als dort auch die gleichen Icons anzeigen zu lassen. Da es, wie oben beschrieben, recht einfach ist, für Psi ein Iconset zu bauen, habe ich mich mal kurz hingesetzt und das gemacht.

Das größte Problem bestand darin, dass Psi keine animierten GIF-Icons anzeigt und ich aus den animierten noch je ein charakteristisches Einzelbild extrahieren musste. Der Rest ging sehr flott von der Hand und daher gibt es jetzt als Weltpremiere und exklusiv bei antiblau: das Psi Iconset »WebUni«. Einfach an geeigneter Stelle entpacken, in Psi auswählen und freuen. Als kleiner Vorgeschmack dann hier noch ein Screenshot:

Screenshot Psi Iconset »WebUni«