Der Microblogging-Server laconi.ca kann jetzt auch Dateianhänge. Das ist nett und macht Twitpic und Co. langfristig überflüssig. Dateiuploads funktionieren sehr simpel: Man lädt eine Datei hoch, der Dienst generiert dazu eine Short-URL mit is.gd. und fügt diese am Ende des Dents ein. Das wars. Dabei hätte man es wahrscheinlich so viel besser machen können.
Im Prinzip ist das Problem mit Dateianhängen das gleiche, wie mit URLs allgemein und verschiedenen anderen Sachen: Sie sind im Grunde Metainformationen zur Nachricht selbst und kollidieren mit dem 140 Zeichen Reintext-Limit beim Microblogging. Das ist etwas unfair, denn URLs sind mitunter sehr lang, gelegentlich sogar länger als 140 Zeichen. Abhilfe schaffen die vielen Short-URL Dienste, aber nun weiß man zum einen nicht mehr, was sich hinter einem solchen Link verbirgt (wie bei dem hier), zum anderen können Dienste schließen und alle darüber generierten URLs würden unbrauchbar werden. Oder aber URLs werden nach einiger Zeit recycelt, was noch schlimmer ist, denn nun zeigt mein Link auf eine völlig andere Seite. Short-URLs sind also scheiße und zu vermeiden, wo es nur geht. Doch wie? Im Folgenden ein paar Lösungsansätze zum Thema.
Wie wäre es, wenn Twitter (stellvertretend für alle Microblogging-Dienste gemeint), eine URL pro Nachricht als Metaangabe erlaubt. Die einfachste Möglichkeit dazu wäre es, von URLs nur ein Zeichen bei der 140-Zeichen Limitierung zu berücksichtigen. Das hätte aber gleich zwei gravierende Seiteneffekte: Erstens bricht man die API, denn viele Dienste erwarten nur 140 Zeichen und würden die Nachricht deswegen einfach abschneiden. Zweitens würde sich schnell die Unart etablieren, ganze Sätze in nicht existierenden URLs zu formulieren und so das Limit zu umgehen. Diese Möglichkeit kommt also keinesfalls infrage.
Eine erste echte Möglichkeit wäre es, wenn Twitter von jeder Short-URL beim entgegennehmen des Tweets das Ziel auslesen würde und dieses Ziel zur Verlinkung (oder als Title-Attribut) in der geparsten Nachricht benutzen würde. In der Textversion (über die API) würde dann aber immer noch alleine die Short-URL stehen, Twitter-Clients, die diese selber parsen, bekämen also davon nichts mit. Zudem werden die URL-Shortener das gar nicht mögen, werden sie so doch brutal übergangen. Das grundsätzliche Problem bliebe bei der Lösung außerdem bestehen: Die Short-URL ist immer noch da, wird archiviert und man ist weiterhin dem URL-Shortener ausgeliefert. Vorteilhaft wäre, dass Twitter das Verfahren sofort einführen könnte und die volle Kontrolle darüber hätte. Sprich: User könnten das Verhalten konfigurieren, wenn sie es nicht mögen und Twitter kann sich aussuchen, bei welchen URL-Shortenern sie das Verfahren anwenden. Denkbar wäre auch, dass Twitter einen eigenen URL-Shortener Dienst anbietet, der das Verfahren implementiert.
Meine eigentliche Idee ist aber Folgende: Twitter erweitert seine API um ein Feld für eine URL (mit max 255 Zeichen). Das Webinterface und Twitter-Clients, die das Verfahren implementiert haben, bieten ein extra Eingabefeld für diese URL und fügen (zumindest übergangsweise) automatisch eine Short-URL dazu in die Nachricht ein. Diese Short-URL wird zweckmäßigerweise von einem dem Dienst angeschlossenen Service bereitgestellt und sollte garantiert so lange leben, wie es den Dienst gibt. Ältere Clients schicken eine normale Short-URL in der Nachricht und Twitter parst diese (bzw. die erste, wenn es mehrere gibt) und füllt die eigentliche URL in das Extrafeld ein. Als einzigen Nachteil des Verfahrens sehe ich, dass durch die Erweiterung der API das Verfahren nicht sofort in voller Schönheit in allen Clients zum Vorschein kommt. Dass so nur eine solche URL pro Nachricht möglich ist, sehe ich angesichts des 140 Zeichen Limits als durchaus konsequent und nicht als Nachteil an. Langfristig sehe ich aber große Vorteile in dem Verfahren: Es ist voll abwärtskompatibel, bringt aber neue Möglichkeiten mit. Können genug Twitter-Clients mit diesen URLs angemessen umgehen, kann man auf das Einfgen einer zusätzlichen Short-URL verzichten und hat die vollen 140 Zeichen für seine Nachricht zur Verfügung. Ein weiterer Vorteil ist, dass die Clients selbst entscheiden können, wie sie mit URLs umgehen wollen.
Ich halte das für eine saubere Lösung für das leidige Short-URL Problem, aber eben auch für andere Metadaten. Dateianhänge könnten auf die gleiche Weise implementiert werden, intern macht laconi.ca/identi.ca das offenbar ja schon so. Nur hapert es eben an der Anbindung nach Außen. Ebenfalls abgefrühstückt werden könnte dann endlich auch mal eine sinnvolle und nicht störende Geokodierung von Beiträgen. Momentan behilft man sich mit Krücken wie L:Düsseldorf, was für "Location Düsseldorf" steht, oder der sehr hässlichen Einbindung von Geokoordinaten direkt in den Nachrichtentext. Ein Metafeld für Geoinformationen würde hingegen niemanden stören, eine verlässliche Einbindung von Kartendiensten in geofähigen Clients erlauben und so schöne Geschichten wie Live-Twitter-Maps ermöglichen. Flickr hat das so schön vorgemacht.
Mancher mag jetzt einwenden, dass gerade die Einfachheit von Twitter mit dem einen Eingabefeld seinen Charme ausmacht. Dem halte ich entgegen, dass drei kleine Knöpfchen neben dem Eingabefeld für diese Metainformationen der Einfachheit keinen Abbruch tun würden, die vielen Twitter Poweruser hätten aner eine schöne Möglichkeit, ihre Tweets sauber zu halten. Kein Anfänger auf der Suche nach Einfachheit versteht Tweets, wo alles irgendwie verlinkt ist mit #Tags, !Gruppen, L:Orten, http://sho.rt/urls, RTs und @namensnennungen. Da kann man doch beim besten Willen nicht mehr von Einfachheit sprechen und eine Metaangabe für Reply-Tos gibt es schon immer und jeder weiß die zu schätzen.
Meine Forderung an Twitter und identi.ca lautet also: Erweitert Eure API um Felder für eine URL, Geokoordinaten und ggf. einen Dateianhang. Die Leute benutzen diese Sachen tagtäglich und nutzen dafür teilweise ärgerliche Krücken. Schluss damit!
Ich selber werde bei Gelegenheit meine PHP-Twitter-API derart erweitern, dass sie eingehende Short-URLs auflöst und ersetzt (und das Ergebnis cached). Profitieren wird davon mein Lifestream und die Microblog-Anzeige in der Sidebar vom Blog.
Nachtrag 24.08.2009: Inzwischen hat Twitter eine Erweiterung um Geokoordinaten zu jedem Tweet angekündigt, was gut ist. Was aber schlimmer als gedacht ist: Twitter kürzt automatisch und unabschaltbar alle URLs mit mehr als 30 Zeichen mit bit.ly. Ich hasse das, denn wenn ich von meinen 140 Zeichen 60 für eine URL opfere, dann hat das seinen Grund. Hoffentlich ändert sich das irgendwann mal wieder.