diff --git a/developer/jami-concepts/index.md b/developer/jami-concepts/index.md new file mode 100644 index 0000000000000000000000000000000000000000..11e812d66e79a29d0cf906f48bd43dedd2464d2f --- /dev/null +++ b/developer/jami-concepts/index.md @@ -0,0 +1,65 @@ +# Jami Concepts + +Jami is a quite complex platform interacting with many different components and introducing many new concepts. +This manual is intended to help you understand how Jami works, how to develop for Jami, and how to contribute to the project. + +To quickly summarize and help you to find the part of the manual that you are looking for, here is a brief overview of the different sections: + +Jami is a distributed platform that allows users to communicate without the need for a central server. +So, a Jami account consists of a chain of certificates (CA, account, and device) that is used to authenticate the user and to encrypt the communication. +The account is stored on the user's device, not on a server. + +For this, here is the page that explains how it works: +* :ref:`account-management` +* :ref:`jami-identifiers` + +After the user account is created, the user can contact other people by sending connection requests through a DHT (<https://opendht.net>) after finding the contact ID +(directly known or by looking up the name server). +If both parties agree, they will first try to create a P2P TCP link (with the ICE protocol), then encrypt it via TLS and use it as a multiplexed socket to transmit data for various protocols, cf.: + +* :ref:`contact-management` +* :ref:`banned-contacts` +* :ref:`connection-manager` +* :ref:`name-server-protocol` + +When both peers are in their contact list, a conversation is created. +This conversation is a **swarm** based on **Swarm Technology**. +A **swarm** is synced between all devices in a conversation via the `git` protocol (it's a Git repository), and connections across devices in a conversation are routed by a component called the **DRT** (distributed routing table). + +* :ref:`swarm` +* :ref:`drt` + +Then, the connection can be used to send messages, files, or to make calls (1:1 or conferences). + +* :ref:`calls` +* :ref:`calls-in-swarm` +* :ref:`file-transfer` +* :ref:`conference-protocol` + +```{note} + Only calls using Jami accounts are based on Swarm Technology. +``` + +Finally, a user can have multiple devices, and a lot of information is synced between them. + +* :ref:`synchronizing-profiles` +* :ref:`synchronization-protocol` + +```{toctree} + :maxdepth: 1 + + account-management + banned-contacts + calls-in-swarm + calls + conference-protocol + connection-manager + contact-management + drt + file-transfer + jami-identifiers + name-server-protocol + swarm + synchronization-protocol + synchronizing-profiles +``` \ No newline at end of file diff --git a/developer/jami-concepts/index.rst b/developer/jami-concepts/index.rst deleted file mode 100644 index 0c50d56b91893004b378610bc40116a9b7fe7c81..0000000000000000000000000000000000000000 --- a/developer/jami-concepts/index.rst +++ /dev/null @@ -1,74 +0,0 @@ -############# -Jami Concepts -############# - -Jami is a quite complex platform interacting with many different -components and introducing many new concepts. This manual is intended -to help you understand how Jami works, how to develop for Jami, and how -to contribute to the project. - -To quickly summarize and help you to find the part of the manual that -you are looking for, here is a brief overview of the different sections: - -Jami is a distributed platform that allows users to communicate without -the need for a central server. So, a Jami account consists on a chain of -certificate (CA, Account, Device) that is used to authenticate the user -and to encrypt the communication. The account is stored on the user's -device, not on a server. - -For this, here is the page that explains how it works: -+ :ref:`account-management` -+ :ref:`jami-identifiers` - -After the user account is created, the user can contact other people by -sending connection requests through a DHT (https://opendht.net) after finding the contact id -(directly known or by lookup the name server). If both parties -agree, they will first try to create a p2p TCP link (with the ICE protocol), then -encrypt it via TLS and use it as a multiplexed socket to transmit data for various -protocols c.f.: - -+ :ref:`contact-management` -+ :ref:`banned-contacts` -+ :ref:`connection-manager` -+ :ref:`name-server-protocol` - -When both peers are in their contact list, a conversation is created. This conversation -is called a **Swarm**. A **swarm** is synced between all devices in a conversation via -the `git` protocol (it's a git repository) and connections across devices in a conversation -are routed by a component called the **drt** (distributed routing table). - -+ :ref:`swarm` -+ :ref:`drt` - -Then, the connection can be used to send messages, files, or to make calls (1:1 or conferences). - -+ :ref:`calls` -+ :ref:`calls-in-swarm` -+ :ref:`file-transfer` -+ :ref:`conference-protocol` - -.. note:: - Calls may be fully replaced by call in swarms in the future (except for SIP accounts) - -Finally, a user can have multiple devices and a lot of information is synced between them. - -+ :ref:`synchronizing-profiles` -+ :ref:`synchronization-protocol` - -.. toctree:: - :maxdepth: 1 - - account-management - banned-contacts - calls-in-swarm - calls - conference-protocol - connection-manager - contact-management - drt - file-transfer - jami-identifiers - name-server-protocol - swarm - synchronization-protocol - synchronizing-profiles