Dienstag, 9. Juni 2009

Verteiltes Twitter?

Wäre es nicht schön, wenn Twitter andauern funktionieren würde? Öfter haben ja die Server ausfälle und vor allem: Es ist alles zentral und nicht OpenSource.
Wäre es nicht schön, wenn man eine abgewandelte Version des XMPP/Jabber Protokolls schaffen würde, welches natürlich über eine ähnliche API anbietet wie Twitter? Dazu so verteilt, dass jeder, der eine Homepage hat dieses leicht installieren könnte.
Also, die Idee:
Jeder installiert ein paar CodeSchnipsel auf seiner Datenbankfähigen Homepage. Diese bietet die API für den eigenen Client an. Es werden die Freunde = Following eingetragen und das Skript auf dem Server frägt deren Feeds ab und gibt sie an den Client zurück. Der Client könnte natürlich auch eine WebApp sein. Keine Frage...
Da stellt sich natürlich noch die Frage: Wie werden die Freunde identifiziert?
Das könnte über die URL zu der API des jeweiligen Freundes gehen. Evtl. kann man das Protokoll noch so anreichern, dass eine Homepage mehrere Benutzer unterscheiden kann. Die URL zu der API kann dann in einem link-Tag stehen, so dass Browsererweiterungen diese autonom finden und anbieten, analog zu RSS Feeds.
Geschützt werden kann der Zugriff standardkonform via SSL.

Weiterhin kann man natürlich behaupten, dass die Homepage besonders großer Multiplikatoren (Britney Spear, Barack Obama, etc.) dadurch zu sehr ausgelastet werden. Evtl. könnte man dazu Proxies einrichten lassen die wie die Aggregatoren der RSS Feeds funktionieren und einen Packen Friends abfragen und als nicht dynamische Homepage wieder anbieten um die Datenbank zu entlasten.

Was denkt ihr? Wäre das keine gute Idee, insbesondere wenn man bedenkt dass Twitter ein Geschäftsmodell sucht und weiß Gott was daraus wird! Ein verteiltes OpenSource Twitter hätte dieses Problem nicht!

Ich freue mich über Kommentare.

4 Kommentare:

Uli hat gesagt…

Hmm, klingt interessant, könnte funktionieren. Allerdings müsste der Server ja aktiv die Nachrichten der Freunde abrufen, also vielleicht per Cron-Job. Ein einfaches Php Skript kann das ja nur tun, wenn es aufgerufen wird.

Sicherheit könnte da ein kritischer Punkt sein, da man ja außer der URL keine globale User-Tabelle hat (wie bei einem zentralisierten Twitter). SSL verschlüsselt zwar die Kommunikation, aber man muss sich ja dennoch darauf verlassen können, dass die URL vertrauenswürdig ist ("man-in-the-middle"). Müsste man vielleicht noch ne Authentifizierung zwischen den Servern einbauen (z.B. public key). Auch DoS Attacken oder Injection muss man vermeiden. Aber das ließe sich wohl schon machen...

Fabi hat gesagt…

Eine Sache, die Twitter recht cool macht (und denen wahrscheinlich auch Performanzprobleme bereitet) ist die Echtzeit-Fähigkeit.
Ich weiß nicht ob du es so gedacht hast, aber so wäre die Idee: Immer wenn ich einen neuen Eintrag erstelle, werden alle Leute, die sich als followers_me bei mir eingetragen haben, von mir per Instant Messaging Nachricht benachrichtigt. Also ne Art Broadcasting an alle, die sich für meine Updates interessieren.

Vorteile:
- Damit muss nicht immer der gesamte Feed abgefragt werden, obwohl sich evtl. gar nichts geändert hat.
- Man braucht keinen Cron-Job laufen lassen.
- Jeder kann festlegen, wer einem folgen darf

Nachteile:
- Wie frage ich Nachrichten ab, die ich verpasst habe?
- Schwierigere Kontrolle, wem man followt.

So ein paar unausgegorene Ideen...

christoph hat gesagt…

Ich dachte für sowas gibt es Laconica?

Aber von verteilten Services halte ich recht wenig. Ich habe zum Beispiel die Theorie, dass Jabber-Server immer maximal 1 Jahr lang zuverlässig funktionieren (empirisch bereits an 3 freien Serverprovidern getestet) - und dass jeder seinen eigenen (V)Server hat ist dann leider doch zu viel verlangt.

philipp hat gesagt…

hi. ich find die idee auch sehr interessant.

wenn man jabber bzw xmpp dafür verwendet, brauch man keine cron jobs oder ähnliches, da es eine Publish-Subscribe-Erweiterung für XMPP gibt (http://xmpp.org/extensions/xep-0060.html), die das alles schon erledigt und damit ist man auch gleich Echtzeit-fähig.
Die Sicherheit ist da auch schon gegessen, XMPP macht SSL/TLS.

Laconica geht schon in die richtung, wie es aussieht. Überhaupt scheint die idee leider nicht ganz neu zu sein:

http://joecascio.net/joecblog/2008/05/06/distributed-twitter-the-hard-bits/

http://www.process-one.net/en/blogs/article/introducing_the_xmpp_application_server/

das schwierigste an der ganzen sache ist, denke ich, einen ähnlichen Bekanntheitsgrad wie Twitter zu erreichen. Es gibt ja eben schon Laconica und identi.ca und weitere Twitter-Klons, bloß wer kennt die schon?

Aber wenn man das gut aufzieht, könnte das schon klappen.

philipp