Skip to content
Snippets Groups Projects
Commit fd632c2e authored by Amin Bandali's avatar Amin Bandali
Browse files

Move developer docs from technical/ to developer/ (developer manual)

And standardize their filenames.

Also fix links to internal and external resources (like images, PDFs,
and LibreOffice files).

Change-Id: Ib56898abe5c1244826beee89b260a1bee358a645
parent 53b8ccd7
Branches
No related tags found
No related merge requests found
Showing
with 50 additions and 48 deletions
......@@ -59,7 +59,7 @@ This will require translation of .po files to JSON format (using [i18next-gettex
This will require translation of .po files to JSON format (e.g. using [po2json](https://github.com/mikeedwards/po2json)).
po2json also requires nodeJS as dependency, **but** it is [available as Debian package](https://packages.debian.org/stable/javascript/node-po2json), which makes it slightly less annoying
![gettext_end](/uploads/0be97d3200bcac7ab4b4432c18f879c3/gettext_end.png)
![gettext_end](https://git.jami.net/savoirfairelinux/jami-project/uploads/0be97d3200bcac7ab4b4432c18f879c3/gettext_end.png)
Source: [Internationalization in JavaScript](http://www.jeromesteunou.net/internationalisation-in-javascript.html)
......
......@@ -8,7 +8,7 @@ LRC documentation
- Lrc (Libringclient) is an interface between the clients and
the daemon. It ensures to get the same behaviour for all client
using it.
![Introduction](/uploads/01896b43f2a29d29e5148ad60e608846/Introduction.png)
![Introduction](https://git.jami.net/savoirfairelinux/jami-project/uploads/01896b43f2a29d29e5148ad60e608846/Introduction.png)
note: red = missing feature.
......@@ -17,7 +17,7 @@ note: red = missing feature.
- this class is an interface between lrc and the sqlite database. This
class should not be called directly from the client.
![Databasemanager](/uploads/896f30e099c7bb7b40451b528aefda6e/Databasemanager.png)
![Databasemanager](https://git.jami.net/savoirfairelinux/jami-project/uploads/896f30e099c7bb7b40451b528aefda6e/Databasemanager.png)
### NewCallModel class and NewCall namespace
......@@ -38,7 +38,7 @@ note: red = missing feature.
- note about the name : we are using New as prefix to avoid conflict
with the current CallModel and Call objects.
![Newcallmodel_newcall](/uploads/c9ba7bec82a6d2cd3bc5ba1cde018f4a/Newcallmodel_newcall.png)
![Newcallmodel_newcall](https://git.jami.net/savoirfairelinux/jami-project/uploads/c9ba7bec82a6d2cd3bc5ba1cde018f4a/Newcallmodel_newcall.png)
### ContactModel class and Contact namespace
......@@ -54,7 +54,7 @@ note: red = missing feature.
- When we need to perform some operation on a contact, we pass it uri
to the delegate performing the operation.
![Contactmodel_contact](/uploads/42c32722576a7a25de813419503805f5/Contactmodel_contact.png)
![Contactmodel_contact](https://git.jami.net/savoirfairelinux/jami-project/uploads/42c32722576a7a25de813419503805f5/Contactmodel_contact.png)
### ConversationModel class, Conversation namespace and Message namespace
......@@ -72,10 +72,10 @@ note: red = missing feature.
- note about Message : so far, we didn't need a MessageModel, but this
could be come soon.
![Conversationmodel_conversation_message](/uploads/1b1ad190ef65b5aa088bbcb785645099/Conversationmodel_conversation_message.png)
![Conversationmodel_conversation_message](https://git.jami.net/savoirfairelinux/jami-project/uploads/1b1ad190ef65b5aa088bbcb785645099/Conversationmodel_conversation_message.png)
### resources
[Diagram1.dia](/uploads/f6d0a81d67b075c13c57b7d9771ca065/Diagram1.dia)
[Diagram1.dia](https://git.jami.net/savoirfairelinux/jami-project/uploads/f6d0a81d67b075c13c57b7d9771ca065/Diagram1.dia)
[Diagram2.dia](/uploads/00b3212a7642e58fd35b74c48e712332/Diagram2.dia)
[Diagram2.dia](https://git.jami.net/savoirfairelinux/jami-project/uploads/00b3212a7642e58fd35b74c48e712332/Diagram2.dia)
Manage accounts
===============
Account management
==================
In this part, we will learn how to manage a Ring account. This means, how to create a Ring account, modify the basic settings and delete the account. This part will *NOT* explain what all the settings mean or how we can use the account to do any action like adding a contact.
......
The different APIs
==================
The APIs of Jami
================
## OpenDHT
......@@ -248,7 +248,7 @@ The Doxygen documentation is available [here](https://jenkins.ring.cx/view/libri
### Database schema
![lrcbd](/uploads/94bee0c65b2a87b0f3e1ee223ccf81dc/lrcbd.jpg)
![lrcbd](https://git.jami.net/savoirfairelinux/jami-project/uploads/94bee0c65b2a87b0f3e1ee223ccf81dc/lrcbd.jpg)
```sql
CREATE TABLE profiles (id INTEGER PRIMARY KEY, \
......
Call in Swarms
Calls in Swarm
==============
## Goals
......@@ -29,7 +29,7 @@ Proposed flow:
+ **c:** else, host a new *Rendezvous* and join it.
+ Also, ask users if they want to be the host for next calls.
![Untitled_Diagram.drawio_1_](uploads/cc28c4379584386c8e5ea8e0d65a29e1/Untitled_Diagram.drawio_1_.png)
![Diagram: Placing a call in a Swarm](images/placing-call-in-swarm-diagram.png)
**TODO, when to commit and who is commiting**
......
Let's do a call
===============
Calls
=====
**NOTE: this page detail the principle for Jami accounts. For SIP accounts, the SIP protocol is used.**
Let's do a call in Jami!
## Daemon side
When creating a call between two peers, Jami mainly uses known protocols such as ICE, SIP or TLS. However, to make it distributed, the process of creating a call is a bit different. To summarize, when someone wants to contact one of its contact, this is what they will do:
......
......@@ -31,67 +31,67 @@ Thanks to this test we can estimate the bitrate that will be emitted in Jami acc
* * *
1080p / 300 kbit/s / CRF28
![image](uploads/b06a8291afb89ef0f29977dde37c86ea/image.png)
![image](images/choosing-crf-1080p-300kbps-crf28.png)
1080p / 300 kbit/s / CRF38
![image](uploads/e330a23900b26f302f0bee104609530f/image.png)
![image](images/choosing-crf-1080p-300kbps-crf38.png)
Visual comparison (CRF28 a gauche / CRF38 a droite)
1080p / 1.5 Mbps / CRF22
![image](uploads/4747083f516ddd2f479f1a28836bff0d/image.png)
![image](images/choosing-crf-1080p-1.5mbps-crf22.png)
1080p / 1.5 Mbit/s / CRF30
![image](uploads/6eaeeaa1a548dddd8001608a1fa50a63/image.png)
![image](images/choosing-crf-1080p-1.5mbps-crf30.png)
Visual comparison (CRF22 left / CRF30 right)
1080p / 6 Mbps / CRF17
![image](uploads/485d3ec4b5ae06597bbfe60abd55145e/image.png)
![image](images/choosing-crf-1080p-6mbps-crf17.png)
1080p / 6 Mbit/s / CRF23
![image](uploads/8d641b5e9cdb867e7337cce1d65eeaa7/image.png)
![image](images/choosing-crf-1080p-6mbps-crf23.png)
Visual comparison (CRF17 on the left / CRF23 on the right)
* * *
720p / 300 kbps / CRF28
![image](uploads/2b9839f762944db0f11ecd7d5f4d135d/image.png)
![image](images/choosing-crf-720p-300kbps-crf28.png)
720p / 300 kbit/s / CRF38
![image](uploads/dfc9bb0fce68c6f890bf3f3eb6ed455b/image.png)
![image](images/choosing-crf-720p-300kbps-crf38.png)
Visual comparison (CRF28 left / CRF38 right)
720p / 1.5 Mbps / CRF22
![image](uploads/e821c84b0b46382fd6264f9924999e7b/image.png)
![image](images/choosing-crf-720p-1.5mbps-crf22.png)
720p / 1.5 Mbit/s / CRF30 (Test with reduced CRF)
![image](uploads/812fbae5646a7bcddca644ff7932ea97/image.png)
![image](images/choosing-crf-720p-1.5mbps-crf30.png)
Visual comparison (CRF22 left / CRF30 right)
720p / 6 Mbps / CRF17
![image](uploads/c6e9647d626076770786d018a0bea853/image.png)
![image](images/choosing-crf-720p-6mbps-crf17.png)
720p / 6 Mbit/s / CRF23
![image](uploads/02fa8b3e55027c8f5c4beaaf4d840c34/image.png)
![image](images/choosing-crf-720p-6mbps-crf23.png)
Visual comparison (CRF17 left / CRF23 right)
* * *
436p / 300 kbps / CRF28
![image](uploads/c72e33c4d7115e0e1f6904c0456e0dd6/image.png)
![image](images/choosing-crf-436p-300kbps-crf28.png)
436p / 300 kbit/s / CRF38
![image](uploads/61028c01dc283e387df758dc1115cffb/image.png)
![image](images/choosing-crf-436p-300kbps-crf38.png)
Visual comparison (CRF28 left / CRF38 right)
436p / 1.5 Mbps / CRF22
![image](uploads/88bdb808259bd327354e350ae5d3eba5/image.png)
![image](images/choosing-crf-436p-1.5mbps-crf22.png)
436p / 1.5 Mbit/s / CRF30
![image](uploads/8d0e42f40a904b1c34635a4daec87ba1/image.png)
![image](images/choosing-crf-436p-1.5mbps-crf30.png)
Visual comparison (CRF22 left / CRF30 right)
436p / 6 Mbps / CRF17
![image](uploads/98d57fc3bbc932152fbc653b2e8d9d93/image.png)
![image](images/choosing-crf-436p-6mbps-crf17.png)
436p / 6 Mbit/s / CRF23
![image](uploads/caa3efc66941e93519750dc1d8990cac/image.png)
![image](images/choosing-crf-436p-6mbps-crf23.png)
Visual comparison (CRF17 left / CRF23 right)
Manage contacts
===============
Contact management
==================
This section will present how to find and add a contact from the DHT to the client. The usage of a name server will not be explained here. If you want details about that, please read: https://git.ring.cx/savoirfairelinux/ring-project/wikis/technical/Name-Server-Protocol
......
Create plugin
=============
Creating Jami plugins
=====================
**NOTE: this page introduces the Jami Plugins SDK.**
......
......@@ -12,34 +12,34 @@ How to use it?
For sending a file on gnome, in a conversation you need to click to the
send file icon at the bottom right of the conversation:
![Gnome_send_file](/uploads/e7571789effe8641f5ff4117e47f89dd/Gnome_send_file.png)
![Gnome_send_file](https://git.jami.net/savoirfairelinux/jami-project/uploads/e7571789effe8641f5ff4117e47f89dd/Gnome_send_file.png)
Then you will see your image as soon as the transfer is finished (and
show images is activated)
![Gnome_image](/uploads/cc03387d134a9aa71c6deb60ccf53ed8/Gnome_image.png)
![Gnome_image](https://git.jami.net/savoirfairelinux/jami-project/uploads/cc03387d134a9aa71c6deb60ccf53ed8/Gnome_image.png)
On the contrary if you receive a file (and if it's not a picture < 20
Mb), you will have to accept the transfer:
![Gnome_accept](/uploads/29dd852e062e7bcbcb654e4e7e3f8e47/Gnome_accept.png)
![Gnome_accept](https://git.jami.net/savoirfairelinux/jami-project/uploads/29dd852e062e7bcbcb654e4e7e3f8e47/Gnome_accept.png)
And then the file will be sent. You have the possibility to cancel in a
middle of a transfer.
![Gnome_ongoing](/uploads/92f319f8a88f75c388020d999f607bdc/Gnome_ongoing.png)
![Gnome_ongoing](https://git.jami.net/savoirfairelinux/jami-project/uploads/92f319f8a88f75c388020d999f607bdc/Gnome_ongoing.png)
### Android
When you are talking to somebody on Android, you have the possibility to
send a picture on your device or take a photo with these buttons:
![Android_file_buttons](/uploads/d68472b2c7bfcc616b0c674c9c7a8fed/Android_file_buttons.png)
![Android_file_buttons](https://git.jami.net/savoirfairelinux/jami-project/uploads/d68472b2c7bfcc616b0c674c9c7a8fed/Android_file_buttons.png)
Note: when you send a file, the other has to accept it. At this moment
you will see 'awaiting peer':
![Android_awaiting_peer](/uploads/56f0316c945ca243448668ae9091b1de/Android_awaiting_peer.png)
![Android_awaiting_peer](https://git.jami.net/savoirfairelinux/jami-project/uploads/56f0316c945ca243448668ae9091b1de/Android_awaiting_peer.png)
How it works? (technical)
-------------------------
......@@ -64,7 +64,7 @@ The following method is used:
1\. A client will call `DataTransferFacade::sendFile()`. `DataTransferFacade` is the class corresponding to the API exposed for the clients. It is used to manage a view of the file transfers (the corresponding classes are `DataTransfer`, `IncomingFileTransfer`, `OutgoingFileTransfer` and `SubOutgoingFileTransfer`). This method will ask the linked `JamiAccount` to request a connection.
![DataTransfer](uploads/6517bd0f766fb15f82de38192aa066a7/DataTransfer.png)
![Diagram: DataTransfer class diagram]images/file-transfer-datatransfer-class-diagram.png)
2\. The method `DhtPeerConnector: requestConnection()` is triggered and creates a connection between all connected devices of the peer (found on the DHT). `DhtPeerConnector` is used to manage the main event loop which manage connections. When a device is found, the *event loop* will create a `ClientConnector` (which manage the connection for one device) and launch the `process()` method.
......@@ -78,7 +78,7 @@ The following method is used:
7\. If a cancel is received from the peer or the client or if the file transfer finish, the connection will be closed via a `CANCEL` message on the `DhtPeerConnector::eventLoop()` and the resources will be released.
![TLSsocketEndpoint](uploads/ce7b58d02fdcd0075575a4cca499d6dd/TLSsocketEndpoint.png)
![TLSsocketEndpoint](images/file-transfer-tlssocketendpoint-diagram.png)
##### Receiving a file
......@@ -102,7 +102,7 @@ The receiver can now accepts the first incoming transfer, download the file and
##### Schema
![Main](uploads/0e8f8a2d4f9d8b40e910b81a665695cc/Main.png)
![Diagram: main schema diagram](images/file-transfer-main-schema-diagram.png)
##### SDP sent over the DHT
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment