From df32686159629bf6f36609f2bc9ec6cb4fcd5d0e Mon Sep 17 00:00:00 2001
From: Amin Bandali <amin.bandali@savoirfairelinux.com>
Date: Wed, 7 Sep 2022 15:15:37 -0400
Subject: [PATCH] user/faq: update various questions for swarm and group chats

Change-Id: I88aced34d8dd41e663a08cb94d61fe4ed6e02e2f
---
 user/faq.rst          | 95 +++++++++++++++++++++++++------------------
 user/introduction.rst | 10 ++---
 2 files changed, 61 insertions(+), 44 deletions(-)

diff --git a/user/faq.rst b/user/faq.rst
index 1d678f17..64d25ff0 100644
--- a/user/faq.rst
+++ b/user/faq.rst
@@ -102,40 +102,57 @@ clicking the "Add participant" button.
 Does Jami have group chats?
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Not yet, but they are :ref:`coming soon <technical-overview:Swarms>`.
-
-
-Why is my contact not seeing my avatar?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Due to technical limitation, avatars are only transfered to your
-contacts during a voice or video call.  This limitation will disappear
-when :ref:`group chats <technical-overview:swarms>` are released.
+Yes, Jami now has :doc:`../developer/swarm` group chats.  However,
+they are currently experimental and must be manually enabled from
+application settings.  Also, group chats are currently limited to 8
+participants (so that bugs and issues could be more easily found and
+fixed in smaller scenarios, and hopefully lift this limit in the
+future).
 
 Why aren't my sent messages showing up on all linked devices?
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-All of your devices receive the same messages from your contacts, but
-*sent* messages will not show up on all of your devices.
-
-The :ref:`swarm <technical-overview:swarms>` update will introduce
-full conversation sync between linked devices for all conversations
-(including one-on-one conversations).
+Before :doc:`../developer/swarm`, an account's devices would receive
+the same messages from contacts if the device was online at the time
+of the message being sent, but *sent* messages would not show up on
+devices other than the one sending the message.
+
+With the introduction of Swarm, conversation histories of new Swarm
+conversations (including one-on-one conversations) are fully
+synchronized between all of an account's linked devices.  If you are
+using an older version of Jami, please upgrade to the latest version
+with Swarm support.  The latest version of Jami is always available
+from the Download page of the Jami website, at
+https://jami.net/download/.
+
+To learn more about Swarm, you can read our blog post `Synchronizing
+conversation history with Swarm
+<https://jami.net/synchronizing-conversation-history-with-swarm/>`_
+and see the :doc:`../developer/swarm` page of the Jami developer
+manual.
 
 Can I message offline contacts?
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Jami does not yet have offline/persistent messages because of its
-distributed nature.
-
-Your messages can't be queued on a central server so both contacts
-must be online to message each other.  If you send a message to an
-offline contact, Jami will save the message on your device and send it
-to them when they come online.
-
-There are some possible future solutions to this issue, including
-:ref:`swarms <technical-overview:swarms>`, which will allow users to
-set up their own "server" node to receive messages for them.
+With :doc:`../developer/swarm` conversations, every device stores all
+a copy of all of the messages in that conversation.  If a device
+(whether your own, or another participant's) is not available/online
+when a message is sent, when it comes back online again it will try to
+fetch any new messages from other online devices/peers and synchronize
+message history.  This can be done whenever at least one other device
+that has a copy of the new messages is also online.
+
+.. note:: You can read more about how Swarm conversations are
+          synchronized in our blog post `Synchronizing conversation
+          history with Swarm
+          <https://jami.net/synchronizing-conversation-history-with-swarm/>`_.
+
+If the participants in a conversation are often not online at the same
+time (for instance, due to timezone differences), one of them might
+choose to set up Jami on an often-online device that would receive the
+messages from each participant and relay it to the other(s) whenever
+they come online.  Thus, acting similarly to a "server", all the while
+Jami remains distributed by nature.
 
 .. _config-file-location:
 
@@ -226,7 +243,7 @@ optional):
    in your device.
 
 More information about Jami accounts is available in the
-:ref:`Technical Overview <technical-overview:jami account>`.
+:ref:`Technical Overview <developer/technical-overview:Jami Account>`.
 
 Where is my Jami ID?
 ~~~~~~~~~~~~~~~~~~~~
@@ -289,11 +306,11 @@ There are two ways to back up your account:
 
 1. Link another device to your account so your account will be on two
    devices.  You can find this option in the account settings page.
-2. Back up the :ref:`account archive <technical-overview:Account
-   storage and backup>`.  This file can be found in the account files
-   :ref:`folder <user/faq:Where are the configuration files
-   located?>`.  In some clients, you can export this archive from the
-   account settings.
+2. Back up the :ref:`account archive
+   <developer/technical-overview:Jami archive (export.gz)>`.  This
+   file can be found in the account files :ref:`folder <user/faq:Where
+   are the configuration files located?>`.  In some clients, you can
+   export this archive from the account settings.
 
 Can I retrieve my username without my keys?
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -305,8 +322,8 @@ If you use a different name server, there may be a way to move a
 username to a new Jami ID at the discretion of the administrator of
 that name server.
 
-For more information about name servers, see :ref:`the Technical
-Overview <technical-overview:Name servers and ns.jami.net>`.
+For more information about name servers, see
+:doc:`../developer/name-server-protocol`.
 
 Can I recover my account if I forget my password?
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -343,9 +360,9 @@ What happens when I link a new device?
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 When you link a device to your account, your :ref:`account archive
-<technical-overview:account storage and backup>` is put on the Jami
-network for a few minutes.  It is protected by a password Jami gives
-you.
+<developer/technical-overview:Jami archive (export.gz)>` is put on the
+Jami network for a few minutes.  It is protected by a password Jami
+gives you.
 
 The new device receives your full account certificate with the master
 RSA keys, but it generates a new device key for signing/encrypting
@@ -432,10 +449,10 @@ blockchain).
 With the default name server, you can look up usernames at
 ``https://ns.jami.net/name/test``, where ``test`` is a username
 for which we are looking for a matching :doc:`Infohash
-<../guidelines/Identifiers>`.  Once registered, this name server
+<../developer/jami-identifiers>`.  Once registered, this name server
 **does not** provide any way to remove the mapping.
 
-Read more about the Jami :doc:`../technical/Name-Server-Protocol`.
+Read more about the Jami :doc:`../developer/name-server-protocol`.
 
 How can I change the timeout for a call?
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/user/introduction.rst b/user/introduction.rst
index 0d7c1fa4..9d60aed6 100644
--- a/user/introduction.rst
+++ b/user/introduction.rst
@@ -8,9 +8,9 @@ Jami is a free/libre, end-to-end encrypted and private communication
 platform that requires no central authority.
 
 Jami's features include: text chats, voice and video calls, screen
-sharing, file sharing, conference calls, and group chats (:ref:`coming
-soon <general/technical-overview:swarms>`).  Jami can also function as
-a regular SIP client.
+sharing, file sharing, conference calls, and :doc:`group chats
+<../developer/swarm>`.  Jami can also function as a regular SIP
+client.
 
 Jami works on GNU/Linux, Windows, macOS, iOS, and Android.  Multiple
 devices can be linked to a Jami account, and no personal information
@@ -34,8 +34,8 @@ secure connection, performing `Secure Real-time Transport Protocol
 For more on how Jami works, see the `Jami and how it empowers users
 <https://kelar.org/~bandali/talks/jami-empowers-users.html>`_ talk by
 `Amin Bandali <https://kelar.org/~bandali/>`_, as well as the
-:doc:`Technical Overview <technical-overview>` for more in-depth
-information.
+:doc:`Technical Overview <../developer/technical-overview>` for more
+in-depth information.
 
 Who makes Jami?
 ---------------
-- 
GitLab