[RFC] XMPP a desktop



A gdyby zintegrować email, IM i RSS na biurku? Spróbowałem to sobie wyobrazić. I widzę to tak:
wersja 0.1, 22.01.2005

Rdzeń

Centralną częścią jest programik o roboczej nazwie Connectivity Daemon. Jest on w zasadzie klientem Jabber/XMPP działającym w tle, pełni funkcje dyspozytora wiadomości. Przychodzące krotki <presence/> przekazuje do Galago, natomiast <message> rozdziela, wg. typu, następująco:
  • chat - jeśli jest włączony program do IM (Psi, GAIM, ekg2?), to przekazuje do tego programu. Jeśli nie - to buforuje (i wyświetla notify - o tym później).
  • headline - gdy jest włączony czytnik RSS - przekazuje mu; jeśli nie - dopisuje do spoola tego czytnika. Wady: musi znać format spoola (lub korzystać z nieistniejącej jeszcze specyfikacji freedesktop.org. Pewna duplikacja kodu między czytnikiem a pluginem zapisującym do spoola w CD.
  • message czyli zwykłe - lekka zmiana nagłówków i przepuszczenie przez procmaila celem umieszczenia w kolejce poczty użytkownika.

Scenariusz działania

Włączamy komputer i logujemy się. W czasie startu sesji uruchamiany jest Connectivity Daemon.
  1. korzystając z danych w konfiguracji CD łączy się na nasze konto XMPP/Jabber. Zasób (resource) generowany jest na podstawie sesji, np. hostname+$DISPLAY. Status ustawiany jest na niewidoczny (niedostępny w XMPP? co w zamian?).
  2. serwer XMPP przesyła do nas:
    • informacje o obecności osób - CD karmi nimi Galago.
    • wiadomości typu headline i message - trafiają one do odpowiednich spooli.
    • wiadomości typu chat - wyświelane są wyskakujące informacje o tym, że dana osoba chciała z nami porozmawiać, z datą i godziną, byćmoże zdjęciem osoby i jej aktualnym statusem oraz przyciskiem Chat, otwierającym okienko rozmowy IM. Gdyby takich informacji miałbybyć więcej niż 4 - informacja zbiorcza typu ,,Chcieli z toba rozmawiać Wojtek, Phantom, Monika...'' i przyciskiem do włączania aplikacji IM. Oczywiście wszystkie wiadomości muszą być zachowane w spoolu (archiwum) aplikacji IM, która musi w jakiś sposób informować o nich po włączeniu.
    Zwracam uwagę, że przez cały czas aplikacja RSS czy IM jest wyłączona. Skojarzenie JIDów ze zdjęciami i imionami/nickami dokonywane jest dzięki KAddressBook lub Evolution Data Server. Informacja o statusie dzięki Galago.
  3. Użytkownik włącza IM - następuje zmiana statusu z niewidzalnego na na taki jak użytkownik sobie życzy. Ewentualnie - drugie zalogowanie za pośrednictwem CD ale to chyba więcej problemów niż zalet.

Wiadomości

Poczta emailowa ma być wkomponowana w strukturę XMPP, czyli używać go jako środka transportu. Częsciowo jest to już zrobione, vide wpis w joggu Smoka. Zadaniem CD ma być integracja i odpowiednie przekazywanie poczty, więc:
  1. wiadomości przychodzące z jabbera muszą mieć zmieniane adresy nadawcy na coś typu user%host@xmpp.not-for-mailinvalid. W takiej formie muszą trafiać do spoola użytkownika (przez procmaila?).
  2. CD musi dostarczać odpowiednik /usr/bin/sendmail którym musi być wysyłana cała poczta. Jeśli poczta wysłana z MUA ma adres nadawcy w formie user%host@xmpp.invalid - dostarczenie jej musi się odbywać na zadany JID.
  3. w przypadku zwykłej poczty - pierwsza próba dostarczenia również ma się odbyć po XMPP - zakładamy pełną integrację CD u wszystkich. Ewentualnie, jeśli adresat jest w naszej książce adresowej oznaczony ,,chce otrzymywać pocztę XMPP'' lub jest online i za pomocą Entity Capabilities ogłasza, że chce przyjmować pocztę XMPP - tą drogą musi nastąpić wysyłka. Z fallbackiem do SMTP.
  4. wysyłka wogólnym przypadku następuje do osób, a nie na adresy email. Jeśli jakiś adres XMPP/Email danego odbiorcy nie odpowiada, należy użyć innego spośród podanych w książce adresowej. Z tej samej kategorii adresów oczywiście (Domowy, Praca itp.).
  5. w przypadku osób używających niektórych klientów zdarza się, że rozmowa nie jest oznaczana jako ,,chat''. Wtedy trafia do skrzynki emailowej. MTA musi wyświetlając wiadomość obok nadawcy wyświetlić jego aktualny status i ikonkę ,,Rozpocznij rozmowę IM'' celem przeniesienia konwersacji na IM. (wymagany jakiś sposób oznaczania danego rozmówcy jako ,,broken'', żeby kolejne wiadomości od niego bez oznaczenia ,,chat'' jednak były traktowane jako takie. Automatyczny sposób).
  6. kwestia spamu:
    • SMTP - znamy i walczymy teraz
    • XMPP/Jabber zapewnia, że domena nadawcy działa i jest na niej sprawny serwer XMPP - inaczej nie można wysłac wiadomości (dialback).

RSS

Czytnik RSS nie ściąga rssów sam z serwerów tylko otrzymuje je od CD. Sam Connectivity Daemon ma wtyczkę do parsowania rssów i programowania ich na desktopie albo robi to serwer. Ideałem byłoby łatwe zintegrowanie PublishSubscribe.

Wiele kont

tutaj sprawa jest trudniejsza. Można albo:
  • zrezygnować ze wsparcia dla wielu kont pozostawiający JID jako single internet identity - raczej niewykonalne.
  • zintegrować wiele kont w CD, dając wybór podobny jak jest w programach pocztowych - przy wysyłaniu wiadomości czy zaczynaniu rozmowy rozwijana lista ze zdefiniowanymi kontami i możliwośc wyboru.

Wymagania wobec serwerów

  • SMTP/pocztowy - przychodzące maile rewrite+pchnięcie do XMPP
  • XMPP - przechowywanie wiadomości bez ich utraty
Najlepiej zrealizować SMTP jako komponent serwera XMPP.

Usługi typy Jogger

Możliwość skonfigurowania dwóch rodzajów powiadomień:
  • obecne - przychodzące jako ,,chat''
  • powiadomienia skladające się z poprawnego RSS, przychodzące jako ,,headline'' i renderowane przez czytnik RSS
  • idealne - PubSub, renderowane przez czytnik RSS

Archived comments:

DoomHammer 2005-01-22 19:19:35

Brzmi doprawdy cudownie, choć mocno idyllicznie. Za ile lat, jeśli wogóle taki scenariusz mógłby sie sprawdzić?

W chwili obecniej _bardzo_ ciężko jest kogokolwiek (użytkownika, admina, whoever) z czegoś, czego używa na coś nowego, niezaleznie od tego, jak dobra by taka nowość nie była.

zdzichuBG 2005-01-22 19:28:39

Kiedy? W 2006, kiedy pojawi się Longhorn ;)

W zasadzie to myślę, że poszczególne kawałki pojawią się jeszcze w tym roku. Sam mam w planach pythonow plugin do ekg2 będacy feedem Galago.
Gdzieś czytałem, że WordPress (take cuś do blogów) powoli zaczyna używać XMPP do przesyłania notyfikacji.
W pewnym momencie kawałków układanki będzie tyle, że wystarczy jeden *klik* - i zadziała.

A na razie spisałem moje przemyślenia dla potomności. Kiedyś będe mógł podać adres i powiedzieć - o, byłem pierwszy.

DoomHammer 2005-01-22 19:40:58

Tia. umnie właśnie od wczoraj leci kompilacja Ekg2 na retroboksie :)

A w kwestii notki: gdy czyta się coś takiego przyjemnie jest mieć jakieś widoczne ślady prowadzące do takiej drogi rozwoju. Najlepiej w dośc logicznym (< 6 miesięcy) czasie. Mam znajomego, dla którego najważniejszym ficzerem, którego nie ma Jabber jest możliwość wysyłania i odbierania e-maili. Kiedy tylko jest dialog o Jabberze pada stwierdzenie "Jabber jest do dupy. Nie mogę wysyłać e-maili". W losowych momentach, gdy dialogi dotyczą bardzo nieokreślonej przyszlości (np. kilku-kilkunastu lat) potrai rzucić stwierdzenie: "może wtedy Jabber będzie już mógł odbierać E-maile". Z tej okazji, że Jabber jest taki do dupy, straszy i ogólnie ble, używa ów kolega gadającego-gówna. Czy nie jest to dziwne podejście?

Właśnie dla takich "beznadziejnych przypadków" możliwość prezentacji przedstawionej przez Ciebie wizji mogłaby skłonić do myślenia, czy też innego katharsis. Choć w to ostatnie śmiem i tak wątpić...

smoku 2005-01-22 21:41:40

Jeremie Miller tworzył Jabbera z nadzieją, że zastąpi dotychczasowy e-mail. (Stąd własnie <message type="normal"/>.)

O kliencie Jabber/XMPP jako element standardowego desktopu stpeter pisał jakiś rok temu.

Powoli to staje się rzeczywistością. :D

ad. ScenDzial.1: Wcale nie trzeba wysyłać żadnego <presence/> po połączeniu się z serwerem. Można od razu przesyłać zwrotki. XMPP-Core nie musi przenosić XMPP-IM - może być uniwersalnym protokołem transportowym XML między zabindowanymi zasobami.

ad ScenDzial.2: Wiadomości oczekujące można sobie pobierać za pomocą Flexible Offline Message Retrieval ( http://www.jabber.org/jeps/jep-0013.html )

Podoba mi się pomysł wysyłania listów do osób, nie do adresów (XMPP z fallbackiem do SMTP).

LFT 2005-01-24 10:48:52

Brzmi fajnie, jest jeszcze pare takich pomyslow niekoniecznie zwiazanych z komunikacja, ale rownie ciekawych jak np onefinger http://onefinger.sourceforge.net/ , logical desktop http://logicaldesktop.sourceforge.net/ .
Na podstawie tego wszystkiego mozna pokusic sie o zbudowanie calkiem nowego desktopu o innej jakosci. A co do longhorna to Autor widocznie popadl w kult wizji prezentowanych przez billa, tak samo krzyczeli ludzie o win2000 ze ma miec ikony 3d i wogole. :)

LFT 2005-01-24 10:49:20

Brzmi fajnie, jest jeszcze pare takich pomyslow niekoniecznie zwiazanych z komunikacja, ale rownie ciekawych jak np onefinger http://onefinger.sourceforge.net/ , logical desktop http://logicaldesktop.sourceforge.net/ .
Na podstawie tego wszystkiego mozna pokusic sie o zbudowanie calkiem nowego desktopu o innej jakosci. A co do longhorna to Autor widocznie popadl w kult wizji prezentowanych przez billa, tak samo krzyczeli ludzie o win2000 ze ma miec ikony 3d i w ogole. :)

Comments


Comments powered by Disqus