PROTOCOL FOR SYNCHRONOUS CONFERENCING |
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:
| ||||||||||
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.]
| ||||||||||
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:
| ||||||||||
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.
| ||||||||||
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 | ||||||||||
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:
| ||||||||||
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 PersonCarlo 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.
|