Stranger Than Usual

Slack und Emojis

Als ich Anfang der Woche Kollegen über Slack die Sache mit dem Unicode in Bezeichnern in C und C++ mitteilen wollte, machte Slack ein paar Sachen, die mich verärgert haben. Wer dieses Blog liest kann sich sicher denken, dass aus einem Post so schnell ein Rant mit acht oder mehr Posts wurde. Aber fangen wir mal ganz am Anfang an.

Webforen, Emoticons und Smileys

Als ich in den frühen 2000ern mit dem Internet angefangen habe, waren zwei Dinge sehr verbreitet: Emoticons wie „:)“ und Webforen. Beides gibt es auch heute noch, hat aber im Vergleich zu Emojis und zentralisierten Social Media an Bedeutung verloren. Unicode gab es schon einige Jahre, war aber an vielen Stellen noch nicht angekommen. Emojis gab es noch nicht.

In den meisten Webforen wurden Emoticons automatisch durch kleine Bilder ersetzt. Ein „:)“ zum Beispiel wurde also durch ein Bild ersetzt, dass so ähnlich aussah, wie das heutige „🙂“-Emoji. Es war aber kein Emoji, sondern einfach ein Bild in der Website. Die Ersetzung war üblicherweise ein einfaches Suchen-und-Ersetzen. Das führte manchmal zu Problemen, wenn Zeichenfolgen durch Bilder ersetzt worden, wo es die Verfasser_in eines Posts nicht gedacht hatte. In den meisten Forensoftwares konnte man diese Ersetzen-Funktion auch abschalten.

Instant Messenger wie ICQ oder Skype haben das ähnlich gemacht.

Slack

Slack hat sich in den letzten zehn Jahren in vielen Firmen, aber auch bei uns an der Uni, als Kommunikationssystem verbreitet. Slack ist so eine Art Chatsystem/Instant Messenger, und Emoticons werden hier auch durch etwas anderes ersetzt. Auch das kann man abstellen. Ich habe das abgestellt, weil es mir auf die Nerven ging. Trotzdem poste ich gelegentlich auch mal Dinge mit Emojis.

Für die meisten Nutzer ist das irrelevant, aber Emojis sind nicht „kleine Bilder im Text“. Emojis sind Teil des Textes. Sie haben eigene Code Points in Unicode. Manchmal sind sie auch durch mehrere Code Points zusammengesetzt, das ist hier irrelevant. Der große Vorteil ist: Man kann sie durch Text-Only-Schnittstellen schieben (so lange diese Schnittstellen irgendein Unicode-Encoding verwenden) und muss keine komplizierten Escape-Sequenzen, die dann jede Software anders machen würde.

Slack macht das trotzdem. Slack ersetzt zum Beispiel „🙂“ durch „:slightly_smiling_face:“ oder „🏴‍☠️“ durch „:pirate_flag:“. Der Slack-Client fügt dann anstelle dieses Codes ein <img>-Tag ein. Auch das wäre vielleicht noch zu verzeihen. Aber im alt-Attribut dieses Tags steht dann nicht „🏴‍☠️“ sondern „:pirate_flag:“.

Wenn man jetzt also Text aus Slack kopiert, dann steht mitten im Text anstatt eines Emojis eine Slack-spezifische Escape-Sequenz. Und hier fängt der Ärger für mich richtig an. Mir sind da innerhalb von wenigen Minuten mehrere Probleme aufgefallen:

  • Wie schon gesagt, man kann Texte nicht einfach aus Slack herauskopieren. Ein Round-Trip (kopiere Text nach Slack, kopiere ihn wieder heraus) verändert den Text.
  • Die Ersetzung wird auch in Code-Blöcken gemacht. In meinem Beruf schickt man sich gerne mal Code-Snippets zu. Wenn dann let p = "🏴‍☠️" durch let p = ":pirate_flag:" ersetzt wird, wird der Code verändert.
  • Die Ersetzung ist nicht einmal konsistent. So wird zum Beispiel außerhalb von Code-Blöcken „☺“ durch „:relaxed:“ ersetzt, innerhalb von Code-Blöcken nicht. Die oben erwähnte Piratenflagge wird zwar ersetzt, aber (immerhin) innerhalb von Code-Blöcken nicht durch ein <img>-Tag dargestellt.
  • Unterschiedliche Emojis werden durch die gleiche Escape-Sequenz ersetzt. Zum Beispiel werden „☠“ (U+2620) und „☠️“ (U+2620,U+FE0F) beide mit „:skull_and_crossbones:“. Eine verlustfreie Umwandlung ist also nicht einmal möglich, wenn ich die Escape-Codes von Slack in Betracht ziehe.

Fun Facts

Genug geschimpft. Was machen wir? Nun, vermutlich müssen wir das so hinnehmen. Ich habe nach einem Weg gesucht, das abzuschalten, habe aber nur gefunden, wie man das Ersetzen von Emoticons abschaltet.

Wo wir gerade von dem Ersetzen von Emoticons reden: Ich habe bei meinem alten Arbeitgeber manchmal Slack-Benachrichtigungen per E-Mail bekommen (nein, nicht nach Feierabend). Eine Kollegin hat immer den klassischen Lächel-Smiley :) verwendet. Nach der ursprünglichen Idee von Emoticons sollen damit Gesichtsausdrücke emuliert werden um diesen Teil der nonverbalen Kommunikation zumindest ein bisschen einfließen zu lassen. Bei Text weiß man oft nicht, ob die andere Seite jetzt fröhlich ist, neutral oder ein bisschen genervt. Ein „:)“ stellt sicher, dass die Zielperson die Bemerkung nicht in den falschen Hals kriegt.

Dummerweise ersetzt Slack das durch „:slightly_smiling_face:“. Und da in E-Mails keine <img>-Tags vorkommen, steht dann „:slightly_smiling_face:“ in der Mail, ohne ein Bild, wie das aussieht. Mein Kopf macht daraus dann ein Bild von einem „es ist mir ein bisschen peinlich das ansprechen zu müssen aber du hast einen Fehler gemacht“-Lächeln. Das war aber nicht die Botschaft, die mir die Kollegin senden wollte.

Dieser Arbeitgeber (auch mein zukünftiger Arbeitgeber) hat 2015 (oder 2016, aber ich glaube es war 2015) Slack eingeführt, geht aber demnächst wohl wieder von Slack weg. Aus Datenschutz/Datensicherheitsgründen.

Zum Abschluss noch einen Punkt für Slack: Slack erlaubt auch benutzerdefinierte „Emoji“ (technisch gesehen keine Emojis). Da können Benutzer dann kleine Bilder hochladen und mit einer eigenen Escape-Sequenz versehen. Hier ist die Nutzung der Escape-Sequenzen tatsächlich angebracht. Und man kann schon ein bisschen Spaß damit haben.