From 80dbb091d7479cfc2181ec5f9d7ae67c837fa030 Mon Sep 17 00:00:00 2001 From: Jay Graber Date: Tue, 9 Jun 2020 21:53:13 -0700 Subject: [PATCH 1/3] Add xmpp --- protocols/xmpp.md | 78 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/protocols/xmpp.md b/protocols/xmpp.md index e69de29..bd33c53 100644 --- a/protocols/xmpp.md +++ b/protocols/xmpp.md @@ -0,0 +1,78 @@ +#XMPP + +XMPP, the Extensible Messaging and Presence Protocol, is a protocol designed for instant messaging and generalized routing of XML data. It was originally developed in the Jabber open source community in 1999 to provide an alternative to closed instant messaging services. + +XMPP uses a federated client-server architecture that is similar to email, but introduced several modifications to facilitate real-time communication. + +XMPP is a large protocol, with many Extension Protocols that have been added over time. Due to the maturity of the protocol, it is well documented, with clearly written specs available for every component. + +### Identity + +Every user has a unique XMPP address, called a JID (Jabber ID). A JID is a username followed by the homeserver, for example: + +``` +alice@example.com +``` + +Users can choose a [global, memorable nickname,](https://xmpp.org/extensions/xep-0172.html) but these are not globally unique. + +### Networking/Message passing + +XMPP is implemented in a distributed client-server architecture. + +The basic protocol data unit in XMPP is an XML "stanza", a fragment of XML that is sent over a stream. + +### Data Storage/Message Persistence + +An XMPP client may store data on the server. Whether it is accessible to others or not depends on the client implementation. + +Default settings for a Jabber server [store information](https://jabber.at/p/privacy/) including: saved contacts ("buddies"), offline messages, error logs, and perhaps chat messages and file uploads for a limited number of days. + +### Moderation/Reputation + +Due to the federated nature of XMPP, moderation actions are only respected if they are supported by the client. + +Some examples of moderation in XMPP: +[An experimental spec for groupchat moderation](https://xmpp.org/extensions/xep-0425.html) + +### Social/Discovery + +Built-in information about network availability (“presence”) +Presence subscriptions for two-way authorization +Presence-enabled contact lists (“rosters”) + +XMPP includes the ability for users to advertise their network availability or "presence." This is not strictly necessary for the exchange of data, but facilitates real-time interaction by indicating the the recipient is online and available. + +### Privacy/Access Control + +Channel encryption using Transport Layer Security (TLS) +Strong authentication using the Simple Authentication and Security Layer (SASL) + +### Monetization + +### User experience (if applies) + +### Interoperability + +XMPP was designed with the goal of connecting users through multiple instant message systems. This was done through transports or gateways to other IM protocols, but also to protocols such as SMS and email. + +In February 2010, the social-networking site Facebook opened up its chat feature to third-party applications via XMPP.[13] Some functionality was unavailable through XMPP, and support was dropped in April 2014.[14] + +Similarly, in December 2011, Microsoft released an XMPP interface to its Microsoft Messenger service.[15] Skype, its de facto successor, also provides limited XMPP support.[16] + +### Scalability + +[A single ejabberd node with 2+ million concurrent users](https://www.process-one.net/blog/ejabberd-massive-scalability-1node-2-million-concurrent-users/) + +### Metrics + +### Implementations + +A list of [XMPP clients](https://xmpp.org/software/clients.html) + +Gtalk, Whatsapp + +### Links + +[XMPP About](https://xmpp.org/about/technology-overview.html) +[XMPP Wikipedia](https://en.wikipedia.org/wiki/XMPP) From a0f7d158d5192a1fa8fc183fd381d59e0d483bf7 Mon Sep 17 00:00:00 2001 From: Jay Graber Date: Wed, 10 Jun 2020 08:55:57 -0700 Subject: [PATCH 2/3] Edit --- protocols/xmpp.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/protocols/xmpp.md b/protocols/xmpp.md index bd33c53..057d470 100644 --- a/protocols/xmpp.md +++ b/protocols/xmpp.md @@ -37,16 +37,17 @@ Some examples of moderation in XMPP: ### Social/Discovery -Built-in information about network availability (“presence”) -Presence subscriptions for two-way authorization -Presence-enabled contact lists (“rosters”) +XMPP includes the ability for users to advertise their network availability or "presence." This is not strictly necessary for the exchange of data, but facilitates real-time interaction by indicating the the recipient is online and available. Users can subscribe to each other's presence statuses. -XMPP includes the ability for users to advertise their network availability or "presence." This is not strictly necessary for the exchange of data, but facilitates real-time interaction by indicating the the recipient is online and available. +Users have contact lists called "rosters". Rosters are [often stored on the server](https://www.blikoontech.com/tutorials/xmpp-made-simple-roster-and-presence-explained) to protect the user's social graph. ### Privacy/Access Control -Channel encryption using Transport Layer Security (TLS) -Strong authentication using the Simple Authentication and Security Layer (SASL) +XMPP specifies that channel encryption should be used for the XMPP and HTTP channel via SSL or TLS. + +The original protocol did not include end-to-end encryption by default. Encryption methods were later added as extensions to the core protocol. + +XMPP includes a method for authenticating a stream using the [Simple Authentication and Security Layer (SASL)](https://tools.ietf.org/html/rfc6120#ref-SASL). ### Monetization @@ -72,6 +73,10 @@ A list of [XMPP clients](https://xmpp.org/software/clients.html) Gtalk, Whatsapp +### Monetization + +XMPP was developed by the open source Jabber community without funding. + ### Links [XMPP About](https://xmpp.org/about/technology-overview.html) From 4d7a16e16425d5125495f312e59bb6008f08914d Mon Sep 17 00:00:00 2001 From: Jay Graber Date: Tue, 16 Jun 2020 13:26:00 -0700 Subject: [PATCH 3/3] Edit matrix, xmpp draft. --- protocols/matrix.md | 10 +++++----- protocols/xmpp.md | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/protocols/matrix.md b/protocols/matrix.md index 1893f39..720dd18 100644 --- a/protocols/matrix.md +++ b/protocols/matrix.md @@ -2,8 +2,6 @@ Matrix is a protocol for replicating a signed history of JSON objects in realtime across a set of nodes with (optional) end-to-end encryption. -Matrix is designed to support multiple communication cases - Chat, VoIP, IoT, VR/AR, Social etc, but so far effort has been concentrated on providing a federated chat experience with good UX at scale. - ### Data Storage/Message Persistance Matrix messages are stored in per-conversation Merkle DAG data structures, and conversations are replicated across all participating servers. Matrix is architecturally most similar to Git. @@ -68,16 +66,18 @@ Matrix is governed by [The Matrix.org Foundation CIC](https://matrix.org/foundat Matrix can be bridged with IRC, Slack, Discord, Telegram and others. -### Applications +### Implementations & Applications -The public network currently (Feb 2020) has 17.9M known addressable users (as of June 2020), with more in private federations or on servers which don't report stats. +Matrix is designed to support multiple communication cases - Chat, VoIP, IoT, VR/AR, Social etc, but so far effort has been concentrated on providing a federated chat experience with good UX at scale. Matrix supports multiple clients (most notably [Riot](https://riot.im), the flagship app from the core team), and has bridges to many other chat systems (IRC, Slack, Discord, Telegram etc). -### Scalability +### Scalability & Metrics Scalability study: https://arxiv.org/pdf/1910.06295.pdf +The public network currently (Feb 2020) has 17.9M known addressable users (as of June 2020), with more in private federations or on servers which don't report stats. + ### Links [matrix.org](https://matrix.org/) diff --git a/protocols/xmpp.md b/protocols/xmpp.md index 057d470..ecfbd89 100644 --- a/protocols/xmpp.md +++ b/protocols/xmpp.md @@ -1,10 +1,10 @@ -#XMPP +# XMPP XMPP, the Extensible Messaging and Presence Protocol, is a protocol designed for instant messaging and generalized routing of XML data. It was originally developed in the Jabber open source community in 1999 to provide an alternative to closed instant messaging services. XMPP uses a federated client-server architecture that is similar to email, but introduced several modifications to facilitate real-time communication. -XMPP is a large protocol, with many Extension Protocols that have been added over time. Due to the maturity of the protocol, it is well documented, with clearly written specs available for every component. +XMPP is a large protocol, with many Extension Protocols that have been added over time. Due to the maturity of the protocol, it is well documented, and has many implementations and applications. ### Identity @@ -49,10 +49,6 @@ The original protocol did not include end-to-end encryption by default. Encrypti XMPP includes a method for authenticating a stream using the [Simple Authentication and Security Layer (SASL)](https://tools.ietf.org/html/rfc6120#ref-SASL). -### Monetization - -### User experience (if applies) - ### Interoperability XMPP was designed with the goal of connecting users through multiple instant message systems. This was done through transports or gateways to other IM protocols, but also to protocols such as SMS and email. @@ -67,16 +63,20 @@ Similarly, in December 2011, Microsoft released an XMPP interface to its Microso ### Metrics -### Implementations +### Implementations & Applications -A list of [XMPP clients](https://xmpp.org/software/clients.html) +A list of [XMPP clients](https://xmpp.org/software/clients.html). XMPP has use cases beyond chat, such as [IoT, gaming, social, and WebRTC](https://xmpp.org/uses/). -Gtalk, Whatsapp +Apple and Google [use XMPP for push notifications](https://xmpp.org/uses/social.html). -### Monetization +WhatsApp, Zoom, Grindr, and Jitsi [use XMPP for chat](https://xmpp.org/uses/instant-messaging.html). + +### Governance & Business Models XMPP was developed by the open source Jabber community without funding. +Applications that use XMPP are varied, and have many different business models, from advertising to SASS. + ### Links [XMPP About](https://xmpp.org/about/technology-overview.html)