Oh my goodness, I can't believe nobody found the time to translate
this document yet. Please do! In the meantime the
whitepaper
should answer most questions.
Grundsatzdiskussion
- Why this hasn't been done before is because there must be a very good reason against it.
- False: All things have a beginning. And not doing things just because others before you haven't done those things is no reason not to do them or make excuses why not to do them.
- Wenn PSYC die Antwort auf alle Fragen ist, warum kennt es keine Sau?
-
Dieselbe Frage habe ich mir auch 1990 gestellt, als eine Handvoll Firmen
ins Internet gingen und per E-Mail erreichbar waren. Ich fragte mich warum
nicht die gesamte Wirtschaft E-Mail und FTP verwendet um effizienter zu
kommunizieren und Daten auszutauschen als mühsam per Fax oder Modem?
Fünf Jahre später machte mich ein Bekannter auf MP3 aufmerksam. Ich schrie
Juchei und sagte den Redakteuren vom stern, das wird 'ne ganz große Nummer.
Die meinten: Nein, das ist viel zu kompliziert - das bleibt eine Liebhabersache
für Computerfreaks. Manchmal braucht es halt seine Zeit, bis der Groschen fällt.
Sicherlich ist es von Vorteil wenn der Einstieg leicht ist, sich gut anfühlt
und toll aussieht. Da sind wir dran. Und dann könnte man noch Marketing machen.
Iih, Marketing! ;°)
Betrieb des psyced
- Ich finde XML vollkommen ungeeignet für Chatprotokolle. Kann ich PSYC auch ohne XMPP- und Jabber-Gedöns betreiben?
- Ja, es reicht schon keine Kommunikation mit XMPP-Anwendern zu
führen, und die entsprechenden Module werden gar nicht erst von der Festplatte
geladen.
Man kann auch einen Schritt weiter gehen, und den XMPP-Port einfach
abschalten. Es liegt also in der eigenen Hand, das XMPP Protokoll als wichtige
Schnittstelle zwischen den Systemen zu betrachten, oder als technologische
Entgleisung im Umfeld der Überbewertung der XML-Syntax. Wir unterstützen
grundsätzlich beide Meinungen.
- Ich finde IRC recht unpassend für ein Messaging-System, kann ich diese alte Technologie bei mir ausklinken?
- Genauso wie bei XMPP, aber wozu? Es gibt so viele Menschen, die gerne mit
ihren IRC-Clients aktiv bleiben wollen. Sollten sich dennoch keine IRC-User einfinden, dann werden auch in diesem Fall die IRC-Module gar nicht erst in den Speicher geladen.
Sicherheit und Privatsphäre in PSYC
- ich als user moechte nicht, dass der server meine ip-adresse an
irgendjemanden rausrueckt, der mit mir chatten moechte. so wie ich das
verstanden habe, gibt einer ein psyc://die.server.ip/~mc und der server
rueckt meine richtige IP raus, und den port auf dem mein client listened...
-
das kann dein server entscheiden wie du es willst.
das normalverhalten sollte sein:
freunden gebe ich meine ip direkt.
"feinde" werden gefiltert.
unbekannte werden durch den heimserver versorgt, damit sich mein user
später entscheiden kann, ob das ein freund ist.
diese logik ist aber an sich nirgendwo festgenagelt, du kannst also auch aus
prinzip niemandem vertrauen,
oder du kannst so tun als seiest du niemals online.
psyc erlaubt -im gegensatz zu datenbankbasierten buddylistsystemen-
zu lügen - ganz wie im echten leben kann man für uwe da sein und
für zora nicht zu sprechen.
- im prinzip koennte doch jeder daherkommen und sagen, hallo ich bin joe, ich bin in deiner friendlist, ich floode dich jetz n bisschen und du denkst ich bin joe, dabei bin ich in wirlichkeit jack
- der client soll unerwuenschte messages per default ignorieren.
erst wenn jemand sagt er sei XY und der server von XY bestaetigt das: ja,
das ist wirklich XY
dann werden seine nachrichten verarbeitet.
im normalfall spricht die person sowieso erstmal mit dem heimserver des
anderen.
dieser kontrolliert sofort dessen id
und wenns die richtige person ist schickt er die nachricht weiter an den client
und der person die aktuelle adresse des clients, falls direktkommunikation
erwünscht ist.
- oki. und woher weiss der "heim"-server von joe, dass joe wirklich joe ist u
nd nicht jack?
weil sich joe bei ihm authentifiziert.
default wie üblich mit Klartext-Passwort,
aber es gibt ja bereits SSL/TLS-geschützten Zugang zum psyced.
Gruppenkommunikation mit PSYC
- ich moechte schon ein "channel"-konzept haben,
allerdings serverbasiert, und nicht, dass jeder client dann jedem anderen
client in der "gruppe" eine kopie schicken muss.
- PSYC hat was das betrifft überhaupt keine Festlegung, durch das
veraltete Whitepaper (Wir müssen das mal auffrischen!) entsteht der
Eindruck PSYC wäre eine reine peer-to-peer-Technologie. P2P war damals noch
so exotisch, dass wir das erst erklären mussten. PSYC ist aber mitnichten
zwingend P2P. Genaugenommen gibt es nur wenige Clients die experimentell
so etwas in der Art unterstützen. Der Realzustand ist, dass die
meisten Räume nur auf einem bestimmten Server existieren, oder mit anderen
psyced ein IRC-artiges Netzwerk bilden. Dies wird in
Junctions erklärt. Dies ist
nur ein Zwischenstand auf dem Weg zum eigentlichen PSYC Conferencing,
aber schon dieser Ansatz hat IRC gegenüber den Vorteil, dass jeder "Channel"
sein eigenes optimiertes Baumnetz durch das PSYC-Universum konstruieren
kann, und dies nicht vom IRC-Netz vorgegeben ist, mit den daraus resultierenden
Nachteilen. In PSYC kann man jedenfalls viele Verteilungsstrategien
ausprobieren, der Verwalter eines Raumes/Channels kann es sich aussuchen wie
dieser funktioniert, und man kann beliebig Hybride konstruieren. Also
beispielsweise ein Raum in dem eine Handvoll Leute direkt untereinander reden,
der Rest aber zentral vom Hauptserver versorgt wird. Ja sogar "IP Multicast"
könnte eingebunden werden, was für Radio/TV-artige Kanäle sinnvoll wäre.
- das heisst, man kann festlegen, auf welchen servern der "raum" laeuft?
- der raum hat eine network identification, das ist eine "url"
psyc://bei.mir.de/@partyraum.
da schickt der client seinen join hin, oder der heimserver des users tut es,
join heisst _request_group_join. man bittet um einlass. nichts ist garantiert.
der raum kann tun was er will. person weiterleiten an anderen server,
person sagen, ok ich bin dein raum, schick mir alles was du hast,
oder, ich bin dein raum, aber du sollst folgenden personen direkt zuschicken.
oder schick's mir, schick's deinem ip-multicast-proxy, und schicks noch uwe
und petra von hand.> was der client dann tut ist wiederrum dem user
überlassen.. wenn er petra nicht mag, dann kann er sie "aktiv" ignorieren.
so sieht es jedenfalls die reine lehre vor.. total flexibility.
<nopcode> hey bei psyc... wenn man sagt "der raum kann einen reinlassen oder
nicht, frei programmierbar" aber WER macht das dann ? eine gruppe
von clients die in dem raum sind ? der home server von dem raum ?
oder was ?
<BitKoenig> nop: das programm des raumes :)
<nopcode> bitkoenig =) aber WO soll das programm rennen ? auf ner VM im
raumserver ?
<BitKoenig> nop: sozusagen
<nopcode> bitkoenig mhhh krass :)
<BitKoenig> nop: denkbar ist vieles - z.b. koennte der betreiber des servers
verschiedene konfigurierbare channelprogramme anbieten
<BitKoenig> sozusagen "standard-channels"
<nopcode> hm ja. hauptsache ist der server machts darum gings
<lynX> die programme als "agenten" in der sandbox eines gastservers zu betreiben
ist nur eines von *vielen* möglichkeiten einen psyc-raum zu realisieren
<nopcode> lynx: ja aber wohl die flexibelste oder ?
<lynX> das ist sogar eines der kompliziertesten, eventuell auch flexibel
ja kein zweifel. aber es geht auch ganz banal: du koenntest einen irc-bot
nehmen und den ein bisschen umschreiben zum psyc-channelmaster.
bots sind in psyc keine belastung, sondern sinnvolle agenten.
1. ein programm kann eigenstaendig listen auf port 4404 machen und einen
channel implementieren, beispielsweise in perl mit der Net::PSYC lib.
2. ein server kann eine sprache oder methode anbieten raeume zu scripten
oder zu hosten. der psyced erlaubt jetzt schon programmierbare raeume,
einfach dadurch, dass sie "inherit standardraum" machen.
und du anschliessend in LPC deine eigene behaviour reinprogrammierst.
3. ein server kann fertige programme anbieten die man per /-befehl oder
web-interface konfiguriert.
Buzzword compatibility in PSYC
- PSYC hat ja eine recht ungewohnte Syntax. Warum nicht XML?
- XML ist kein Format fuer Protokolle.
XML ist parametrisch, was immerhin besser ist als corba zB
aber psyc hat auch hierarchien in den methoden und attributsnamen drin,
wodurch man "inheritance" auf protokollebene machen kann. Zudem hat
XML keine Standardlösung zur Einbettung von Binärdaten (ein GIF etwa).
Die Ersatzlösungen sind da eher rechenintensiv und bandbreitenunfreundlich
(escapen, uuencoden etc). PSYC kann stattdessen genauso wie HTTP einfach sagen
die nächsten n Bytes sind Binärdaten, und schon ist die Sache erledigt.
Ironischerweise kann man deshalb XML-Dateien mit PSYC ohne jegliche Änderung
übertragen, während man in einem XML-basierten Protokoll
sämtliche XML-Sonderzeichen escapen muss. Das kostet
Rechenzeit und liest sich dann sicher auch ganz super.
Mehr dazu in http://html.pages.de/onXML/.
Die ungewohnte Syntax von PSYC wird in den Spezifikationen erklärt. Im Prinzip ergab sie sich recht automatisch daraus die übliche Header-Syntax der meisten Internet-Protokolle (RFC822) erweitern zu wollen um Veränderungen von Werten (+, und = statt einfach nur :), sowie das
Konzept der Inheritance, welches die Erweiterbarkeit jedes einzelnen Attributs in einem PSYC-Paket erlaubt, und die Kompression von Standardkeywords auf einzelne Bytes, denn ein von Natur aus kompaktes Protokoll ist immer besser als eines, welches nur mit Kompressionsalgorythmen existieren kann.
- Wie steht es um strukturierte Daten in PSYC aus?
- Dies ist ganz klar die Heimstärke des XML-Formats. Die PSYC-Syntax täte
sich damit eher schwer, allerdings sind wir einerseits kaum auf entsprechende Notwendigkeiten gestoßen, hätten andererseits auch keine Hemmungen bei absoluter Notwendigkeit auch mal ein XML Dokument als Payload einer Nachricht zu spezifizieren, aber die tatsächliche PSYC-Strategie in dieser Hinsicht lautet wie folgt:
Die feingliederungsfähigen Variablennamen mit Inheritancefähigkeit haben eine vergleichbare Funktion zu XMLs XPath-Darstellung.
So wie man ein XML Dokument in eine Tabelle von XPath-Zeigern und Werten umwandeln kann, kann man strukturierte Daten in verschachtelte PSYC Variablen packen. Da dessen NotwendigkeiT der Ausnahmefall ist, sollte sich dieser Ansatz als effizienter ergeben gegenüber XML. Weiterer Vorteil dieses Ansatzes ist, dass es im Vergleich zu XML so gut wie keinen Parsing-Aufwand gibt.
- Wie ist das mit IMPP und XMPP? Ist es nicht ein Rückschritt für PSYC
zu diesen RFCs compliant zu sein?
- IMPP kann kein Multicast, also kann es nicht sinnvoll eine Nachricht an
mehrere Leute herausverteilen, wobei Multicast jetzt als Konzept gemeint ist,
die technische Umsetzung sollte auswählbar sein und hat derzeit in unserem
Falle nichts mit "IP Multicast" zu tun. Wir erfüllen die Ziele von
IMPP, auch wenn wir mit dem Multicasting eigentlich höhere Ansprüche stellen.
XMPP speziell verwenden wir ja nur im Umgang mit Jabber-Servern.
Konfrontation oder Kooperation mit anderen Technologien
- Gibt es auch Gutes an bestehenden Technologien wie IRC und XMPP?
- Auf jeden Fall und jede Menge. Dadurch dass es leichter ist Neuerungen zu
erklären in dem man sie mit bestehenden Technologien vergleicht, mag der
Eindruck entstehen, wir würden über alles vorhandene "lästern." Das ist aber
ein Mißverständnis. Wir benutzen IRC-Technologie selbst noch jeden Tag,
manche unserer Entwickler haben an IRC selbst mitgewirkt und dort ihren
Beitrag geleistet und die netzkulturhistorische Bedeutung von IRC wird
womöglich noch in einem Jahrhundert ausser Frage stehen. Lediglich einen
Vorwurf machen wir IRC und damit auch uns selbst, dass IRC es versäumt hat,
die ultimative Messaging-Technologie des Internets zu werden, und dass in
diesem traditionsreichen Segment proprietäre Anbieter nun die Nase vorn haben,
und dabei nicht einmal wirklich gute Leistung erbringen.
An der Stelle möchten wir unbedingt die Erfolge von XMPP preisen, welches
daran arbeitet die Menschen und die Öffentlichkeit für ein freies Open-Source
System zu begeistern. PSYC hätte diese Rolle schon viel früher einnehmen
wollen, aber da zeigt sich, dass auch Open-Source gutes Marketing nicht
schadet, und darauf verzichtet PSYC ja weitgehend.