Yet Another Communicator

0

Od jakiegoś czasu chodzi mi po głowie chęć napisania komunikatora lepszego niż wszystkie ;-)

  1. Open source
  2. Pełne szyfrowanie e2e
  3. Serwer zero-knowledge, bez loginów/haseł itd. Możliwość uruchomienia własnego serwera lub skorzystania z providera.
  4. Możliwość wyniesienia się od providera bez ustalania z nim migracji.
  5. Tekst + voice + video + możliwość pluginów do innych typów.
  6. Dla voice/video bardzo małe latency przy dużej grupie uczestników rozmowy.
  7. Adres użytkownika per domena z możliwością przekierowania i wyłączenia (jak email)
  8. Łatwe publikowanie kluczy

Większość spełnia Jabber, nie wiem czy wszystkie. Jestem ciekaw czemu nie jest bardziej popularny?

7

Jabber był popularny i nie wykorzystał swojej szansy, bo jest zfederalizowany i przez to trzeba równać do najmniejszego wspólnego mianownika. To, że jakiś serwer wprowadzi rozmowy głosowe czy szyfrowanie, nie oznacza, że inne serwery będą miały to samo, więc efektywnie jest to nieużywalne. Poza tym był zbyt skomplikowany, możliwość skonfigurowania absolutnie wszystkiego jest fajna, ale dla użytkowników niepotrzebna i tylko wprowadza zamieszanie. No i tak samo transporty, były pisane na kolanie, niewspierane, porzucane, ogólnie padaka. Jabber fajnie brzmi na papierze, w praktyce niestety mógł mieć wszystko, bo Google i Facebook go używały, ale teraz już nie ma nic liczącego się.

0
Lwojtow napisał(a):

Większość spełnia Jabber, nie wiem czy wszystkie. Jestem ciekaw czemu nie jest bardziej popularny?

"Popularny" wśród jakiej grupy użytkowników? Niektórych wymienionych przez Ciebie cech pewnie niewiele osób oczekuje; najpopularniejsze wydają mi się 5 oraz 6.

  1. Adres użytkownika per domena z możliwością przekierowania i wyłączenia (jak email)

Nie rozumiem.

0
Silv napisał(a):

"Popularny" wśród jakiej grupy użytkowników?

Czatowanie na gmailu chyba jest oparte o XMPP.
Więc "Jabber" chyba jest cholernie popularny, bo sporo ludzi ma gmaila.

Nie wiem jak teraz, ale kiedyś komunikator gmaila mógł rozmawiać z innymi XMPP.
Np. kolega miał gmail, ja miałem jabbim i mogliśmy do siebie pisać.
Kolega na Mirandzie, ja na Pidginie.

3

@Afish: centralizacja też nie jest do końca dobra. Ostatnio fioletowy był niedostępny przez pierdołę. Dla wielu osób nie było kontaktu z innymi.
Plus jabbera, że nikt się nie wcina w serwer. Stawiam i mam - nikt nienpyta o licencję itp. To, że nie znamy wielu serwerów, nie znaczy, że ich nie ma. Mogą być nawet jako zaplecze.
Czy robienie własnego serwera ma sens? Nawet historia forum pokazuje https://4programmers.net/Forum/Spolecznosc/353513-discord_4programmers , że dobre chęci to nie wszystko. Często liczy się po prostu to, że serwer działa. Im więcej założeń, tym ciężej utrzymać projekt.

0
Lwojtow napisał(a):

Od jakiegoś czasu chodzi mi po głowie chęć napisania komunikatora lepszego niż wszystkie ;-)

  1. Open source
  2. Pełne szyfrowanie e2e
  3. Serwer zero-knowledge, bez loginów/haseł itd. Możliwość uruchomienia własnego serwera lub skorzystania z providera.
  4. Możliwość wyniesienia się od providera bez ustalania z nim migracji.
  5. Tekst + voice + video + możliwość pluginów do innych typów.
  6. Dla voice/video bardzo małe latency przy dużej grupie uczestników rozmowy.
  7. Adres użytkownika per domena z możliwością przekierowania i wyłączenia (jak email)
  8. Łatwe publikowanie kluczy

Większość spełnia Jabber, nie wiem czy wszystkie. Jestem ciekaw czemu nie jest bardziej popularny?

Tak an szybko.

  1. XMPP.
  2. XMPP.
  3. XMPP. Jest coś takiego jak XEP-174. Tylko to bardziej do czatowania po WiFi w jednej sieci czy w zasięgu BT.
  4. Nie do końca rozumiem co masz na myśli. Chodzi o przeniesienie konfiguracji serwera, czy chodzi o to aby użytkownik sam mógł się przenieść do innego?
  5. XMPP. Popatrz na chociażby Conevrsations, BlabberIM(Fork tego poprzedniego z drobnymi zmianami),
  6. XMPP. JitsiMeet? Używają tego XEPa. Można by pewnie wykorzystać kod.
  7. XMPP.
  8. Jakich kluczy?

Jestem ciekaw czemu nie jest bardziej popularny?

Jak nie wiadomo o co chodzi, to chodzi o kasę ;) Firmy wolą się zamykać i tworzyć własne g**no protokoliki, które wymyślają koło na nowo aby zbijać hajs. Co do popularności, to Zoom i WhatsUp go wykorzystują (zmodyfikowany i bez federacji) https://xmpp.org/uses/instant-messaging

Z bibliotek pod np. Javę masz https://github.com/igniterealtime/Smack

Moim zdaniem, jeżeli byś chciał wystartować z usługą, to warto przynajmniej na początku skorzystać z dostępnych rozwiązań: kupujesz wirtualkę na rok, instalujesz takie Prosody, ejabberd, TIgase czy OpenFire. Pod to podpinasz klienta webowego i dajesz linki do desktopa i mobilnego.

Pytanie co chcesz osiągnąć? Sam klient mobilny/web/desktop czy coś jakby 404.city czyli sama usługa serwera? A może całość?

1

Obawiam się że dostaniesz wizytę od ABW jak otworzysz pierwszy tego typu serwer i zbierze się tam grupa neo-nazistów (o przepraszam: prawo-polaków).

IMHO lepszym rozwiązaniem byłby zupełnie rozproszony komunikator P2P, bez serwera bazujący na mesh'ach tak żeby działał nawet jak rząd wypierxxx internet (są już tego typu projekty bazujace na meshu bluetooth i wifi w smartphonach).

0

@.andy: Od początku mi się wydawało, że XMPP rozwiązuje sporo kwestii i tym bardziej się zastanawiałem czemu nie jest używany częściej. Wiem, że Cisco kupiło Jabbera ale co było potem? I czemu firmy jawnie odchodzą od Jabbera, nawet jeśli chodzi o komunikację wewnętrzną, na jednym serwerze?
W pkt 4 chodziło mi o to, że chciałbym aby to działało jak email: mam oddelegowaną pocztę z mojej domeny do jakiegoś dostawcy (tzn MX w dns, konfiguracja klientów). Mogę zmienić na innego dostawcę w każdej chwili.
W pkt 7: Interesowałem się kiedyś PGP i serwerami kluczy, ale z tego co widziałem to też każdy wymyśla koło na nowo. Dystrybucja kluczy (zakładam szyfrowanie asymetryczne) musi się odbywać "automagicznie".
Edit: co chcę osiągnąć? Przede wszystkim to chciałbym skończyć z przenoszeniem konta z FB -> whatsapp -> signal -> i kto wie co następne. Chciałbym komunikator, gdzie mogę odpalić swój serwer (jak email) a jak mi się nie chce, to za parę złotych na miesiąc mogę to oddelegować do dostawcy. Tak naprawdę to zależy mi na prywatności, niezależności i żeby już nigdy nie wysyłać do wszystkich znajomych informacji, że od teraz nie używam X, jestem dostępny na Y.

4
PerlMonk napisał(a):

@Afish: centralizacja też nie jest do końca dobra. Ostatnio fioletowy był niedostępny przez pierdołę. Dla wielu osób nie było kontaktu z innymi.

Nie jest, ale większość ludzi chce rozwiązania, w którym mogą wysłać gifa z kotkiem do każdego i które wysypie się raz na rok, niż rozwiązania, w którym nie przejmują się wywałką serwera jednego ze stu znajomych, ale nie mogą wysłać kotka po ludzku. No i po kościach czuję, chociaż statystyk nie znam, że facebook jednak ma większy uptime niż jakiś jabbim.pl czy inne serwery. Sam pamiętam, jak chrome.pl czy jabster.pl kładły się dość regularnie, a o transportach do innych sieci nie wspomnę.

PerlMonk napisał(a):

Plus jabbera, że nikt się nie wcina w serwer. Stawiam i mam - nikt nienpyta o licencję itp. To, że nie znamy wielu serwerów, nie znaczy, że ich nie ma. Mogą być nawet jako zaplecze.

Tak, to jest prawda, ale tylko wtedy, gdy stawiasz serwer. Zwykli ludzie tego nie potrzebują i nie chcą tego robić.

PerlMonk napisał(a):

Czy robienie własnego serwera ma sens? Nawet historia forum pokazuje https://4programmers.net/Forum/Spolecznosc/353513-discord_4programmers , że dobre chęci to nie wszystko. Często liczy się po prostu to, że serwer działa. Im więcej założeń, tym ciężej utrzymać projekt.

Dokładnie, to ma po prostu działać. W mojej opinii jabber nie działa, a bazuję ją na niemal dekadzie hostowania własnego serwera, własnych transportów, pisania klienta, propagowania go wśród znajomych i walki z każdym gifem z kotkiem.

1

@Lwojtow:

Od początku mi się wydawało, że XMPP rozwiązuje sporo kwestii i tym bardziej się zastanawiałem czemu nie jest używany częściej.

Gdyby email powstał dzisiaj, to by było z nim podobnie niestety... Dzisiaj się nie liczy, to aby usługa była szeroko dostępna, ale zarabianie na niej sporej kasy. No i rozwiązania zabetonowane, bez federacji łatwiej podsłuchiwać ;)

Wiem, że Cisco kupiło Jabbera ale co było potem? I czemu firmy jawnie odchodzą od Jabbera, nawet jeśli chodzi o komunikację wewnętrzną, na jednym serwerze?

Tak jak pisałem, to oni kupili prawa tylko do znaku towarowego czy nazwy Jabber. Cały protokół jest ustandaryzowany i wolny i ma nazwę XMPP.

W pkt 4 chodziło mi o to, że chciałbym aby to działało jak email: mam oddelegowaną pocztę z mojej domeny do jakiegoś dostawcy (tzn MX w dns, konfiguracja klientów). Mogę zmienić na innego dostawcę w każdej chwili.

Działa to analogicznie, masz rekordy SRV:

host -t srv _xmpp-server._tcp.404.city
_xmpp-server._tcp.404.city has SRV record 0 1 5269 xmpp.404.city.

host -t srv _xmpp-client._tcp.404.city
_xmpp-client._tcp.404.city has SRV record 0 1 5222 xmpp.404.city.

W dowolnej chwili zmieniasz rekord i on wskazuje na odpowiedni adres IP. Jeszcze lepiej, to pewnie można postawić jakiegoś load-balancera, na którym będzie zrobione sterowanie, i wtedy nie musisz czekać na propagację dnsów.

W pkt 7: Interesowałem się kiedyś PGP i serwerami kluczy, ale z tego co widziałem to też każdy wymyśla koło na nowo. Dystrybucja kluczy (zakładam szyfrowanie asymetryczne) musi się odbywać "automagicznie".

XMPP jak najbardziej obsługuje szyfrowanie po OpenPGP, jednak to rozwiązanie ma jedną ważną wadę...nie obsługuje wstecznego bezpieczeństwa. Chodzi o to, że ktoś mając dostęp do klucza prywatnego i zaszyfrowane wiadomości jest w stanie poznać całą historię korespondencji.
W przypadku OMEMO (https://xmpp.org/extensions/xep-0384.html), który bazuje na szyfrowaniu z Signala masz to zapewnione, bo dla każdej wiadomości jest tworzony oddzielny klucz. W dużym skrócie każdy user ma parę klucz publiczny-prywatny i na jego podstawie generowane są te takie klucze sesyjne. Klucze są trzymane na serwerze w nodzie podprotokołu pubsub i każdy chętny może zaszyfrować do nich wiadomość nawet jak jesteś offline. Po szczegóły odsyłam do XEPa z OMEMO.

Jedyny problem to potwierdzenie, że osoba A, to osoba A. Czyli pobierasz klucz publiczny Mariana z urządzenia na smartfonie i jakby potwierdzasz, że to jego urządzenie. No ale w przypadku openPGP też trzeba zweryfikować czy klucz należy do tej osoby, bo inaczej to niby prowadzisz bezpieczną komunikację, ale nie masz pewności czy ta osoba to na pewno ta osoba ;)

Edit: co chcę osiągnąć? Przede wszystkim to chciałbym skończyć z przenoszeniem konta z FB -> whatsapp -> signal -> i kto wie co następne. Chciałbym komunikator, gdzie mogę odpalić swój serwer (jak email) a jak mi się nie chce, to za parę złotych na miesiąc mogę to oddelegować do dostawcy. Tak naprawdę to zależy mi na prywatności, niezależności i żeby już nigdy nie wysyłać do wszystkich znajomych informacji, że od teraz nie używam X, jestem dostępny na Y.

W tym celu nie musisz pisać własnego komunikatora, tylko ściągasz dostępny i wybierasz serwer - ewentualnie sam stawiasz. Ja mam własną domenę na Conversations.im, bo nie chcę się zajmować administracją serwera.

1

Serwery hostowane przez userów są nie tylko passé, co chyba nawet brzydkim obejściem problemu skalowania kosztem użytkowników - tych hostujących oraz korzystających. Wydaje mi że niektórzy za mało patologii widzieli na skype/ventrilo/teamspeakach i stąd ta naïvety

btw: czym innym jest udostępnienie takiej możliwości dla Enterprise.

0

W pkt 4 chodziło mi o to, że chciałbym aby to działało jak email: mam oddelegowaną pocztę z mojej domeny do jakiegoś dostawcy (tzn MX w dns, konfiguracja klientów). Mogę zmienić na innego dostawcę w każdej chwili.

Istnieje już coś takiego, nazywa się Matrix. Jest to protokół, żeby go używać potrzebujesz klienta, np. Element. Rozwiązuje on też problem o którym mówisz dalej:

Przede wszystkim to chciałbym skończyć z przenoszeniem konta z FB -> whatsapp -> signal -> i kto wie co następne.

Matrix obecnie oferuje pomosty (bridges) dla każdego popularniejszego komunikatora ( https://matrix.org/bridges/ ). Możesz sobie przy odrobinie chęci zebrać ludzi z kilku komunikatorów w jeden czat. Albo i nawet bez "odrobiny chęci" bo Element ostatnio uruchomił płatną usługę, w ramach której postawią i skonfigurują serwer za ciebie ;)

O ile aplikacje webowe są ok, to problemem Matrixa są słabe aplikacje mobilne. W zasadzie nie ma klienta na Androida którego byłbym skłonny polecić, także jest tu ewentualne pole do innowacji dla ciebie

1 użytkowników online, w tym zalogowanych: 0, gości: 1