PROTOCOL FOR SYNCHRONOUS CONFERENCING
Carlo v. Loesch
symbolic lynX

Weisspapier zu PSYC


Zusammenfassung

Das Ziel
PSYC ist ein flexibles Protokoll zum Aufbau einer weltweiten verteilten Messaging-Infrastruktur primär für text-basierte Konferenzschaltungen (auch Chats oder Chatsysteme genannt). Es entstand mit der Zielsetzung, das Internet- Relay- Chat- System ersetzen zu können, hat sich aber weiterentwickelt zur Unterstützung von multimedialer Kommunikation und kann auf allerlei Einsatzzwecke zugeschnitten werden. Bestehende Kommunikationssysteme können relativ leicht in das PSYC-Netzwerk eingebunden werden, da die Komplexität des Protokolls auf der Client-Seite residiert.
Der Weg
Der Grundgedanke ist es, eine weltweite Datenbank über die Anwesenheit von Personen und Existenz von Konferenzen gar nicht erst aufzubauen, sondern ganz wie im Web den Resourcen und Personen URL-konforme Locators zuzuweisen, und daraufhin die Client-Programme direkte oder smart geroutete Verbindungen untereinander aufbauen zu lassen. Die Server nehmen dabei eine vermittelnde Hilfestellung ein, und sind von Datenbank oder Routingproblemen gänzlich befreit. Passend dazu kommt ein minimalistisches Konferenzsteuerungsprotokoll, welches totale Programmierbarkeit der Politik des Konferenzraumes ermöglicht (Wer darf hinein? Wer darf nur zuhören? etc.). Zugleich kann die Zustellung der Nachrichten durch Multicast- Protokolle optimiert werden. Der Server trägt nicht die Last der eigentlichen Kommunikation, es sei denn man möchte es so.

Was ist ein Chatsystem?

Einleitung
Ein Chatsystem oder elektronisches Konferenzsystem ist eine (meistens textuelle) Gruppenkommunikation von Menschen, die an unterschiedlichen Orten am Computer sitzen und deren Computer in irgendeiner Form vernetzt sind. Das Wort "Chat" (norddeutsch "Schnack") deutet dabei die Gelassenheit und Gemütlichkeit an, die in Chaträumen üblicherweise vorherrscht. Dies ist aber trügerisch: Man kann solche Systeme durchaus zur Ergänzung der Geschäftskommunikationswege einsetzen.

Die Aufgabenstellung

Dezentral ist hip
Verteilte Strukturen sind im Internet die Regel, da sie am skalierungsfähigsten und unbürokratischten sind. Im Bereich der asynchronen Kommunikation sind es die E-Mail- Server und -Clients. Zur Informationsgewinnung hat sich in Windeseile das WWW etabliert. Für Dateiarchive ist FTP üblich. Nur für die synchrone Kommunikation ist kein vergleichbares Protokoll vorhanden.

Stand der Technik

talk, ytalk, msend
talk und verwandte Protokolle arbeiten zwar nach dem Prinzip der verteilten Client-Server- Kommunikation, orientieren sich jedoch an Maschinen, auf denen Menschen dann und wann eingeloggt sind, nicht an den Menschen selbst.
Internet Relay Chat
Gerade diese Schwäche bewältigt IRC, welches dadurch zum größten Chatsystem auf dem Planeten avancierte. Egal, woher man sich ins IRC einwählt, man trifft seine Kommunikationspartner wieder, da sie i.d.R. immer wieder denselben Nickname (Spitzname: bis zu 9 Zeichen langes Kürzel) oder dieselben Channels (Konferenzschaltungen) benutzen. Zusätzlich bietet IRC die grandiose Fähigkeit, Bescheid zu geben, wann bestimmte Nicknames im System belegt werden, also Freunde anwesend sind (Notify-Funktion). Leider krankt IRC an seinem unzulänglichen Protokoll, welches nicht für den Grad des Wachstums konzipiert wurde - und bürokratische Probleme entstehen noch zusätzlich, da der Betrieb eines IRC-Servers Bürde und Machtposition zugleich ist. Von der Hackbarkeit von Channels und Nicknames nicht zu sprechen. Microsoft hat eine IRC-Protokollerweiterung namens IRCX vorgeschlagen, dieses definiert jedoch lediglich erweiterte Client-Features.
Chatsysteme mit zentralem Server
Alles in einem Server zentralisiert zu haben macht die Programmierung erheblich leichter, und macht es möglich Eigenschaften des Systems ganz nach persönlichem Gusto zu implementieren. Daher gibt es besonders im proprietären Umfeld viele Chatsysteme dieser Art.

Aber:

  • Wieviele tausend Menschen kann ein einzelner Server vertragen?
  • Wie soll man Menschen wiedertreffen, die man auf diesem oder jenem System kennengelernt hat - In dem man sich stets in alle Systeme gleichzeitig einwählt?
  • Und ist es sinnvoll, wenn sich zwei Australier unterhalten wollen, daß sie es womöglich unbeholfenerweise auf einem österreicherischen Server tun?
Buddy Lists
Buddy Lists stammen aus den Online-Diensten, haben sich aber auch im Internet inzwischen recht beliebt gemacht - besonders das ICQ- System. Bisher sind sie proprietär, zentralistisch ausgelegt und schränken die Privatsphäre ein (Werbenachrichten sind eine Folge davon).
Zusammenfassend
Der Grund, warum es noch keine klare einfache Lösung zum Problem gibt, liegt in der Komplexität der Personenmodellierung, sowie im Routing bei Konferenzschaltungen.

Uniform Network Identifications & Locations

psyc://gerhard@ ve.kanzleramt.de
So funktioniert Personenmodellierung in PSYC: UNIs, z.B. psyc://gerhard@ve.kanzleramt.de fordern einen PSYC-Client auf, sich an den PSYC-Server ve.kanzleramt.de zu verbinden, und dort nach der aktuellen UNL des Kanzlers zu fragen. Der Server wird dann, falls Gerhard gerade online ist, eine Adresse in China oder USA. ausspucken, wie etwa psyc://bill.pcnet.whitehouse.gov:34209/.
Übrigens: ve steht für "virtual environment".
Illustrationen zu UNI und UNL
[Sie enthalten noch die alte UNI-Schreibweise
mit dem Benutzernamen am Ende.]

Coolman's Client spricht Suzie's Server an mittels UNI

Der Server schickt dem Client Suzie's aktuelle UNL

Die Clients kommunizieren direkt miteinander

Anrufbeantworter
Sollte Gerhard gerade beim Golfspiel mit Bill sein, kann sein Heim-Server Nachrichten für ihn entgegennehmen, oder "zurückrufen", sobald der Kanzler wieder an der Tastatur ist. Oder er setzt Sprachsteuerung ein.
Vorteile der Adressierbarkeit
UNIs (die Bezeichnung "Uniform Resource Identification" finde ich für Menschen unpassend) bringen weitere enorme Vorteile: Sie können ins WWW eingeflochten werden, in e-mail signatures erscheinen, sowie auf Visitenkarten und in Zeitschriften. Stets kann schnell eine Verbindung zu einer Person aufgebaut werden, oder wenigstens zu ihrem Anrufbeantworter.
nicknames are owned
Die UNI legt zudem Authentifizierung nahe, welche die Identität einer Person sicherstellt und dem IRC-typischen "faken" von Personen im Netz Grenzen setzt.

Anwendungen von UNI+UNL Messaging

Neuer Kommandozeilen-Befehl "tell" ?
Allein Nachrichten "um die Ecke" senden zu können, kann viele Einsatzzwecke finden. Denken wir uns zum Beispiel einen "tell"- Befehl wie im BITNET der 80er Jahre üblich war: Man konnte ihn aus allerlei Automationen und Skripten heraus aufrufen, etwa, um die Ankunft von Email sofort zu melden, oder Ereignisse durchzugeben wie Maschinen, die ausfallen oder Hintergrundprozesse die fertig werden. Ein Chat-Protokoll ist für solche Nachrichten viel geeigneter, als - im ersten Falle - dauernd nach Post zu sehen, oder - in letzeren Fällen - E-Mails zu versenden.
Gateways
All die Protokolle, die nicht die Fähigkeit besitzen, den Empfänger dort zu erreichen, wo er ist, könnte man mit einem PSYC-Übergang dazu bringen es doch zu tun. Ich nenne jetzt einfach ein paar Namen, die Ihnen bekannt sein könnten, oder auch nicht:
  • Die BITnet MSG und ihr Internet-Pendant MSEND (RFC1312)
  • Die ESMTP-Befehle SAML und SOML (send as mail or terminal) gemäß RFC821
Und da die Mobiltelefonie noch nicht auf Internet-Protokollen basiert, wären Übergange zum Short Message Service (SMS) der Mobiltelefonanbieter praktisch. Bisher wurden solche Übergänge nur zu E-Mail realisiert, welches aber dafür gar nicht geeignet ist.
Vorschläge?
Ein Internet-Messaging-Protokoll ist für sehr viele Anwendungen nützlich. Fallen Ihnen auch welche ein?

Konferenzsteuerung

psyc://ve.ai.mit.edu /@gnu.announce/
So sähe die UNI einer Konferenzschaltung aus. Hier wird dem Client nahegelegt, den Server um Zutritt zu bitten - er kann aber auch beliebige andere Methoden in diesem Objekt aufrufen. Das "@"-Zeichen deutet dem Client nur an, daß sich dieses Objekt wie ein Raum verhält, und daher betretbar ist.

Coolman möchte den berüchtigten flirts-Raum betreten

Der Manager gibt ihm die Liste der Teilnehmer durch

Der Manager informiert alle über die Ankunft von Coolman

Coolman nimmt Verbindung mit allen Teilnehmern auf

Einsatz von Multicastprotokollen zur Wegeoptimierung möglich


Programmierbare Konferenzsteuerung

Programmierbare Konferenzsteuerung
Was noch lange nicht bedeutet, daß das Managerobjekt, wie ich es nun nennen möchte, den Client auch hereinlässt. Das Objekt kann beliebige Algorithmen anwenden, um diese Entscheidung zu treffen.

Es seien die klassischen Algorithmen genannt: Zugang nur mit Passwort oder nach erfolgter Einladung. Es ginge aber auch automatisch nach Authentifizierung der Person, oder einfach alle Leute aus der Domäne *koeln*.de zulassen. Das Managerobjekt könnte die Entscheidung sogar hinauszögern, etwa um eine oder mehrere Personen um Rat zu fragen. Selbstverständlich gibt es auch öffentliche Räume.

Persönliche Räume
Besonders schön finde ich die Vorstellung, ein Benutzer könne sich eigene Räume einrichten, dessen Eigenschaften er gemütlich und persistent durch HTML-Formulare konfigurieren kann. Und sollte ihm eine Feature fehlen, kann er den Admin des Servers bitten diese einzubauen. PSYC-Konferenz-Hosting als Dienstleistung.
Unknackbare Konferenzräume
Weiterhin soll in der Regel nur das Managerobjekt die Authority über die Konferenz besitzen, um dessen Eigenschaften und Teilnehmer festzulegen. Dadurch ist der im IRC so befürchtete "Take-Over" einer Konferenz so gut wie unmöglich.
Dennoch: verteilte Kommunikation
Dennoch findet die Kommunikation zwischen den Teilnehmern direkt oder über Multicast-Protokolle statt. Dies ist möglich durch PSYCs minimalistisches Konferenzsteuerungsmodul, welches im Prinzip den Teilnehmern lediglich die Liste anderer Teilnehmer zukommen lässt, und - zur Realisierung moderierter Konferenzen - informiert, ob diese Sprecher oder Zuhörer sind.

Einbindung weiterer Protokolle

Protokollauswahl
Die Weiterleitung von einer Personenidentifikation (UNI) zum aktuellen Client der Person muß sich nicht auf eine einzelne UNL beschränken. Eine ganze Sammlung von Portnummern und Protokollschemas kann übergeben werden, damit anspruchsvollere Protokolle automatisch miteinbezogen werden können.
Audio und Video
Naheliegend wäre es also UNL-Schemas zu definieren für allerlei Audio- und Videokonferenzprotokolle. Dadurch liessen sich auch die typischerweise eher dürftigen Konferenzsteurungssysteme dieser Protokolle umgehen durch das flexiblere und unabhängige PSYC. Umgekehrt bräuchten sich die Entwickler von Real-Time-Protokollen keine Gedanken mehr über die Konferenzsteuerung zu machen.
Multicast-Routing mit oder ohne PSYC
Auch für textbasierte Kommunikation ist die Auswahlmöglichkeit mehrerer Protokolle sinnvoll, etwa um unterschiedliche Multicast-Strategien sogar hybrid einsetzen zu können; vom PSYC-basierten Proxynetzwerk über PSYC-basiertes MBONE-Multicasting (auf PIM-SM hoffend) bis zu Fremdprotokollen.

Optionale Protokollmodule

Multimediale Daten
Ergänzenderweise bietet auch PSYC selbst die Möglichkeit einen Content-Type festzulegen für übertragene Nachrichten, welcher demnach nicht unbedingt text/plain sein muß, sondern auch text/html oder image/jpeg sein kann.
Module zur Binärübertragung
Passend dazu bietet PSYC die Option der Binärübertragung. Kombiniert mit der Option der Fragmentierung läßt sich sogar Multicast-Filetransfer realisieren.
Das Modulkonzept
Es brauchen jedoch nur jene Module implementieren werden, die auch benötigt werden. Daher ist ein Minimal-PSYC-Server schnell programmiert. Selbstverständlich können jederzeit eigene Module konzipiert werden und bei der anfänglichen Negotiation jeder Kommunikation angepriesen werden. Die Grundfunktionalität der Übertragung kleiner Textnachrichten ist dennoch immer gewährt und per se bereits sehr wertvoll.

Beispiel einer Protokollnachricht

Beispiel einer Nachricht im long-format von PSYC
      =_identification psyc://ve.cool.org/~cool
      :_target	~suzie
     
      =_nickname	Coolman
      =_nickname_alias Cool
      =_description	As cool as ice ice baby
      :_action	flüstert Dir augenzwinkernd zu
      _conversation
      Hey du! Schon was vor heutabend?
      .
    
Erwartete Darstellung bei Suzie (angenommen ihr Client hat mit Coolman schon einmal Bekanntschaft gemacht):
  Coolman flüstert Dir augenzwinkernd zu: Hey du!
    Schon was vor heutabend?

Die Leerzeile zwischen dem Header für den Nachrichtenübertragungs- und Routinglayer MMP (Modular Message Protocol) und dem Rest der Nachricht - ein Methodenaufruf gemäß PSYC - ist kein Fehler. Die genauere Spezifikation des Protokolls befindet sich in http://psyc.pages.de/tech.en.html.


Übergange ins IRC

Zutritt mit dem IRC-Client
Es wird eine Software frei erhältlich sein, um IRC-Server so zu emulieren, daß IRC-Anwender in der PSYC-Dimension navigieren können wie sie es im IRC gewohnt sind. Es kommen ihnen schon auf diesem einfachen Wege viele Vorteile des neuen Systems zuteil:

  • Identität mit Passwortschutz
  • Anrufbeantworter
  • Programmierbare sowie konfigurierbare sichere Konferenzräume
Gateways in IRC-Netze
IRC ist das größte Chatsystem der Welt. So groß, daß es nicht mehr alle Teilnehmer in einem gemeinsamen Netz handhaben kann. Deshalb werden immer mehr Netze parallel aufgezogen. Nur ein Chatsystem kann (zur Zeit) grösser sein als IRC: Die Integration mehrerer IRC-Netze zu einem gemeinsamen System.

Daher kann es den Aufwand wert sein, entweder die IRC-Software um PSYC-Support zu erweitern, oder umgekehrt.

Anschliessend würden IRCer und sogar IRC-Channels im PSYC integrierbar und adressierbar werden.


DNS-Registrierung für populäre Räume

/enter channel
Ein bißchen Bürokratie muß schon sein - und die beste Bürokratie ist jene, in der sich Aufgaben gut delegieren lassen. Subdomains im Domain Name System lassen sich Klasse delegieren. Scherz beiseite: um die IRC-Eigenschaft zu erhalten, einfach /join channel tippen zu können um einer Gruppe beizuwohnen, ist eine spezielle Unterstützung populärer Räume nötig.
psyc:@org.cert .announce
Eine UNI à la psyc:@org.cert.announce sollte die PSYC-Instanz dazu verleiten im DNS den Namen announce.cert.org.group.psyc.int abzufragen, welcher dann ein eine oder mehrere UNLs zum Managerobjekt dieser Konferenz zurückgibt.

Unvermeidlich wird das Privileg eine Konferenz möglichst cool adressieren zu können zum Politikum. Wir werden's überleben. Da das Gros der Anwender die Konferenzen per Websurf und Mausclick betreten, ist die schöne UNI keine Notwendigkeit.


Zukunftspläne

Kompression und Verschlüsselung
Das Protokoll kann mehrere Encoding-Verfahren auch geschachtelt spezifizieren. Freiwillige vor um diese auch zu implementieren! Es lassen sich aber auch bereits bestehende SSL und SSH-Implementationen auf die TCP-Variante von PSYC anwenden.
Interface- Beschreibungssprache für PSYC-Objekte
Für herkömmliche Chat-Zwecke reichen die Interfacebeschreibungen, die durch ~ oder @ in der UNI angedeutet werden, aus. Weitere Methoden können geraten werden. Sollte man aber über dies hinaus gehen wollen, so ist eine IDL, eine Interface Description Language, angebrachter. Hierzu gibt es noch keine konkreten Ansätze.

Was existiert schon heute?

psyclib in java
Nachdem Mario 'BitKoenig' Holbe bereits auf eigene Faust PSYC-Prototypen gebaut hatte, haben Matthias Oelmann, Gesellschafter der LAVA Ges. für digitale Medien, und ich beschlossen ihn mit der Erstellung einer PSYC-Implementation in Java zu beauftragen. Diese Implementation ist besonders aufwendig und ausgereift, man kann mit ihr Clients wie Servers, aber auch hybride Applikationen konstruieren. Diese Entwicklungsbibliothek wird von LAVA kostenfrei im Quellcode herausgegeben.
Psychadelic
Hierbei handelt es sich um ein Chat-Programm, welches die oben genannte Bibliothek verwendet. Es ist für Endanwender gedacht und ist ebenfalls frei erhältlich.
psycved
psycved, der PSYC Virtual Environment Daemon, ist mehr als nur ein PSYC-Server. Er enthält Client-Emulationen für telnet, java applets und IRC-Clients. Er modelliert intern die Funktionen eines PSYC-Servers sowie mehrerer Clients. Die professionelle Variante davon ist bereits als Webchat im Einsatz. Er ist in LPC implementiert und benötigt einen LPMUD-Treiber unter Unix. Auch diese Software ist frei im Quellcode erhältlich.
perlpsyc
Ich habe begonnen ein Perl5 Modul Net::PSYC zu entwickeln, mit dem man ruck zuck kleine Server oder Automationen basteln kann. Die UDP-Variante funktioniert bereits. Klar kommt das anschliessend ins CPAN.

Zur Person

Carlo v. Loesch, geboren '68, seit '89 im Internet aktiv, implementiert seit '88 Chatsysteme. Er hat an der IRC-Software mitgewirkt und sie unter anderem um den berüchtigten /me Befehl erweitert. '95-'97 STERN online: Redaktionssysteme und Internet-Applikationen für Gruner+Jahr. '97-'99 bei LAVA, Realisierungen und Konzeptionen, ChatEvents mit Politikern, zuerst im Wahlkampf98, dann für den
politik-digital Verein und dessen führende Politik-Webzine. Inzwischen unabhängig mit eigener dotcom.