Skip to content
Snippets Groups Projects
Commit 3d79aefe authored by Sébastien Blin's avatar Sébastien Blin
Browse files

misc: update some pages

Change-Id: If62da17382f24cbd540ee0c1d22e88b320a42e98
parent 44acbbee
No related branches found
No related tags found
No related merge requests found
...@@ -173,10 +173,8 @@ And for the optional Qt WebEngine dependencies:: ...@@ -173,10 +173,8 @@ And for the optional Qt WebEngine dependencies::
sudo dnf install qt6-qtwebengine-devel sudo dnf install qt6-qtwebengine-devel
.. note:: Given the newness of Qt 6, it may not be fully (or at all) .. note:: The easiest approach would be to install the libqt-jami
packaged in the official repositories of your GNU/Linux or jami-libqt package on your supported dpkg/deb-based
distribution of choice yet. In that case, the easiest and rpm-based GNU/Linux distribution respectively, to get
approach would be to install the libqt-jami or jami-libqt all of the needed Qt 6 dependencies of Jami. And to be as
package on your supported dpkg/deb-based and rpm-based similar as possible at what we are testing and building.
GNU/Linux distribution respectively, to get all of the
needed Qt 6 dependencies of Jami.
...@@ -7,17 +7,15 @@ the tickets. ...@@ -7,17 +7,15 @@ the tickets.
## SFL ## SFL
+ {daemon-issue}`Implement pipewire <13> to support screen sharing on + Connectivity -> Contact #Jami (Francois-Simon) / medium:
Wayland` -> Contact #Jami (Adrien, Sébastien, etc.) / hard / In progress
+ Connectivity -> Contact #Jami (Sébastien) / medium:
+ TURN ipv6 support + TURN ipv6 support
+ connection ipv6 only<->ipv4 only + connection ipv6 only<->ipv4 only
+ SIP: + SIP:
+ Fix IP to IP -> Contact #Jami (Adrien, Sébastien) / easy + Fix IP to IP -> Contact #Jami (Adrien, Francois-Simon) / easy
+ Add unit-tests / probably easy + Add unit-tests / probably easy
+ Search in system contacts ({client-gnome-issue}`1191`, + Search in system contacts ({client-gnome-issue}`1191`,
{client-gnome-issue}`829`, etc.) -> Contact #Jami (Adrien, {client-gnome-issue}`829`, etc.) -> Contact #Jami (Adrien,
Sébastien, Andreas, etc.) / easy but long Francois-Simon, Andreas, etc.) / easy but long
+ Crypto: (Contact #Jami - Adrien) + Crypto: (Contact #Jami - Adrien)
+ Update media RTP ciphers for ffmpeg / probably easy + Update media RTP ciphers for ffmpeg / probably easy
+ Support ECC (instead RSA) for Jami accounts / hard but short + Support ECC (instead RSA) for Jami accounts / hard but short
...@@ -39,9 +37,9 @@ the tickets. ...@@ -39,9 +37,9 @@ the tickets.
+ Categorized conversations (like favorites, groups, etc) (to discuss with #Jami) + Categorized conversations (like favorites, groups, etc) (to discuss with #Jami)
+ jami-web: + jami-web:
+ Design architecture to support calls between jami-web and desktop versions + Design architecture to support calls between jami-web and desktop versions
-> Contact #Jami (Adrien, Sébastien) / hard -> Contact #Jami (Adrien, Francois-Simon) / hard
+ Help for the Roadmap 2023: https://git.jami.net/groups/savoirfairelinux/-/epics/48 + Help for the Roadmap 2024: https://git.jami.net/groups/savoirfairelinux/-/epics/58
Some other ideas from tickets: Some other ideas from tickets:
...@@ -51,9 +49,8 @@ Some other ideas from tickets: ...@@ -51,9 +49,8 @@ Some other ideas from tickets:
Contact Rennes Contact Rennes
+ [Qt/QML Improve client](https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues) + [Qt/QML Improve client](https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues)
-> Contact #Jami (Andreas) -> Contact #Jami (Andreas)
+ Redo emoji-picker with native component
+ Implement designs from Charlotte + Implement designs from Charlotte
+ Help for swarms (Sébastien) + Help for swarms (Francois-Simon)
+ {gerrit-project}`jami-web`; because installing an app can be boring. + {gerrit-project}`jami-web`; because installing an app can be boring.
Joining a conference via a link can be cool. For now, nobody is Joining a conference via a link can be cool. For now, nobody is
working on it. working on it.
......
...@@ -3,6 +3,15 @@ Account management ...@@ -3,6 +3,15 @@ Account management
In this part, we will learn how to manage a Jami account. This means, how to create a Jami 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. In this part, we will learn how to manage a Jami account. This means, how to create a Jami 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.
## What is an account
In Jami, an account is a X509 certificate chain generally containing 3 certificates:
1. CA (Self-Signed if locally generated or a company)
2. Account (Where the fingerprint of the public key is called the "Jami ID")
3. Device
This allow a company to revoke an account if needed and an account to revoke a device (if one get stolen for example).
## Create a new account ## Create a new account
### Daemon side ### Daemon side
......
...@@ -31,18 +31,17 @@ Proposed flow: ...@@ -31,18 +31,17 @@ Proposed flow:
![Diagram: Placing a call in a Swarm](images/placing-call-in-swarm-diagram.png) ![Diagram: Placing a call in a Swarm](images/placing-call-in-swarm-diagram.png)
**TODO, when to commit and who is commiting** For each calls, two commits are added by the host of the call in the swarm. A first one to announce that a new call is starting and give information about who is hosting and the conference id. And a second to announce that the call is finished (so other peers can compute how many calls are currently active) and to get the duration of the call to show.
## Incoming calls for swarm ## Incoming calls for swarm
When receiving a new incoming call, the URI MUST be parsed. If the incoming call is for a *Rendezvous* which is currently hosted by the device and the caller is authorized to join, the call MUST be answered and added to the current *Rendezvous* When receiving a new incoming call, the URI MUST be parsed. If the incoming call is for a *Rendezvous* which is currently hosted by the device and the caller is authorized to join, the call MUST be answered and added to the current *Rendezvous*
## Defining a host for a Swarm ## Defining a host for a Swarm
To define a default URI, the member who wants to be the host should update the profile of the conversation, and this will be synced and validated by peers. However, the host MUST be able to accept or not to be the host and a member with enough permissions SHOULD be able to ask a device to be the host. This process is not decided for now. To define a default URI, the member who wants to be the host should update the profile of the conversation, and this will be synced and validated by peers. However, the host MUST be able to accept or not to be the host and a member with enough permissions SHOULD be able to ask a device to be the host. This process is not decided for now.
**TODO? Permissions to update, negotiation of the host** For now, only the administrator can add one of its device as the default host.
## Future ## Future
...@@ -53,3 +52,5 @@ Members of the swarm that aren't in a call SHOULD be able to know who is in the ...@@ -53,3 +52,5 @@ Members of the swarm that aren't in a call SHOULD be able to know who is in the
### SIP Bridge? ### SIP Bridge?
Because conferences are still mixed SIP calls, a SIP bridge is still possible. In the *Swarm's profile* it should be possible to add a SIP entry, like some popular VoIP systems) Because conferences are still mixed SIP calls, a SIP bridge is still possible. In the *Swarm's profile* it should be possible to add a SIP entry, like some popular VoIP systems)
### Set another member's device as a host
\ No newline at end of file
...@@ -214,7 +214,7 @@ The XML was updated to add the wanted stream: ...@@ -214,7 +214,7 @@ The XML was updated to add the wanted stream:
## Conference ## Conference
Reflected changes are documented {doc}`here <conference-protocol>`. Reflected changes are documented [here](conference-protocol).
## Client ## Client
......
...@@ -6,7 +6,7 @@ There are several ways to debug Jami from a developer perspective, depending on ...@@ -6,7 +6,7 @@ There are several ways to debug Jami from a developer perspective, depending on
Loggers Loggers
~~~~~~~ ~~~~~~~
The first way is to use runtime loggers. Starting `jami` with `-d` will enable logging by the deamon The first way is to use runtime loggers. Starting `jami` with `-d` will enable logging by the daemon
(or the Troubleshoot section in the General settings). Because Jami uses several libraries, we do not (or the Troubleshoot section in the General settings). Because Jami uses several libraries, we do not
enable all logs by default. But you can pass some environment variables to show it: enable all logs by default. But you can pass some environment variables to show it:
...@@ -17,7 +17,7 @@ enable all logs by default. But you can pass some environment variables to show ...@@ -17,7 +17,7 @@ enable all logs by default. But you can pass some environment variables to show
Debuggers Debuggers
~~~~~~~~~ ~~~~~~~~~
Generally your IDE has an embedded debuggger. Else, you can use `gdb` for example to be able to Generally your IDE has an embedded debugger. Else, you can use `gdb` for example to be able to
add breakpoints, backtraces from crashes, print internal structures, etc. You need to compile the add breakpoints, backtraces from crashes, print internal structures, etc. You need to compile the
project in *DEBUG* mode to get debug symbols. project in *DEBUG* mode to get debug symbols.
...@@ -28,6 +28,8 @@ Some useful commands: ...@@ -28,6 +28,8 @@ Some useful commands:
+ `Ctrl + X / A` - pass in graphical view + `Ctrl + X / A` - pass in graphical view
+ `p` - print an internal value. + `p` - print an internal value.
Note: VSCode is fully supported by Jami and can be used to debug the project.
Profilers Profilers
~~~~~~~~~ ~~~~~~~~~
...@@ -69,3 +71,9 @@ Finally, tracepoints can be created and analyzed. `daemon/tools/trace` provide t ...@@ -69,3 +71,9 @@ Finally, tracepoints can be created and analyzed. `daemon/tools/trace` provide t
and some examples. The advantage of LTTng is that it is quicker than logs, can be triggered by system and some examples. The advantage of LTTng is that it is quicker than logs, can be triggered by system
events and can be used with tracepoints already present in the kernel (so that it can be used with events and can be used with tracepoints already present in the kernel (so that it can be used with
tracepoints from network interfaces). tracepoints from network interfaces).
Tests
~~~~~
Both clients and daemon have tests. Daemon's tests are written in C++ and use the `cppunit` framework.
They are located in the `daemon/tests` directory.
\ No newline at end of file
...@@ -5,9 +5,7 @@ Improving the quality of Jami ...@@ -5,9 +5,7 @@ Improving the quality of Jami
* It is harder to make unit-test on Jami project because of the race conditions on multi-level dependance. * It is harder to make unit-test on Jami project because of the race conditions on multi-level dependance.
* There is about 30 unit-tests and 26% coverage. Due to Jami high demand to give new functionalities to user quickly, they are not maintained by the developers or by a QA dept. * We use lcov for the coverage, you can find the lcov’s configuration in the daemon’s Makefile.am. Also, the coverage can be found at https://docs.jami.net/coverage/ and https://dl.jami.net/docs/dhtnet/coverage
* We use lcov for the coverage, you can find the lcov’s configuration in the daemon’s Makefile.am. Also, the coverage can be found at https://docs.jami.net/coverage/
* A system needs to be implemented to start convincing the team to make a unit-test for new code before merging * A system needs to be implemented to start convincing the team to make a unit-test for new code before merging
...@@ -15,13 +13,7 @@ Improving the quality of Jami ...@@ -15,13 +13,7 @@ Improving the quality of Jami
* The environment needs to be set with ‘--disable-shared’ during the ’./configure’ command * The environment needs to be set with ‘--disable-shared’ during the ’./configure’ command
## Framework Tests * Clients also have tests (cf `jami-client-qt/tests` for Desktop, `jami-client-android/jami-android/app/src/androidTest` for Android)
* You can find framework tests in the daemon’s Makefile.am and lunch it with ‘make integration’. This calls jami_test.py script in the tools/dringctrl folder. It uses dringctrl.py and controller.py which let you control Jami through bash.
* This makes a series of calls to assure jami’s opendht network is stable.
* Other framework tests need to be implemented in the future to tests Jami’s functionalities as a whole.
## Integration tests ## Integration tests
...@@ -31,7 +23,7 @@ Improving the quality of Jami ...@@ -31,7 +23,7 @@ Improving the quality of Jami
* Sonarqube lets Jenkins build Jami and verify linting. You can find filters and results at: sonar- jami.savoirfairelinux.net Sonar uses clang-tidy as a preprocessor linting compilator, you can find clang’s filters in .clang-tidy file in the daemon folder. * Sonarqube lets Jenkins build Jami and verify linting. You can find filters and results at: sonar- jami.savoirfairelinux.net Sonar uses clang-tidy as a preprocessor linting compilator, you can find clang’s filters in .clang-tidy file in the daemon folder.
* On sflvault sonarqube can be found at service m#2637 and admin logins at service s#7169 * On SFLVault sonarqube can be found at service m#2637 and admin logins at service s#7169
## Doc and feedback: ## Doc and feedback:
...@@ -39,13 +31,9 @@ Improving the quality of Jami ...@@ -39,13 +31,9 @@ Improving the quality of Jami
* Issues are made by developers or users on git.jami.net * Issues are made by developers or users on git.jami.net
## Monitoring ## Agent
* A script is called every 30 minutes on a virtual machine jami-monitorpeervm-01. You can find it on sflvault service s#7209 and is calling an other client viratual jami- monitorpeer-02 (service s#7224). A series of calls is being made and it returns the failure rate. You can find all the details at https://wiki.savoirfairelinux.com/wiki/Jami-monitorpeervm-01.mtl.sfl.
* If needed, the manual command is ./script.sh –peer 031acbb73f2a3385b2babc7161f13325be103431 Every night, hundred of calls are tested via 2 Agents and a message is posted every morning in the chat with the result (if all call succeeded or not)
* It traces a real time point by point graph on https://monitoring.savoirfairelinux.com/grafana/dashboard/script/dyndash.js?host=jami-monitorpeervm-01.mtl.sfl&service=Check%20JamiCall&panelId=1&fullscreen&orgId=1
## Smoke tests ## Smoke tests
...@@ -66,22 +54,15 @@ This is the list of network configurations that need to be tested: ...@@ -66,22 +54,15 @@ This is the list of network configurations that need to be tested:
If both sides are IPv4 only without TURN/STUN/UPnP, the call should be only local. If both sides are IPv4 only without TURN/STUN/UPnP, the call should be only local.
## Special note: FDroid
The script to generate MR is in the client-android repo (fdroidMergeRequest.sh)
## What needs to be done ## What needs to be done
* Push coverage closer to 60%
* Establish a system within the team to assure maintenance and creation of unit-tests. * Establish a system within the team to assure maintenance and creation of unit-tests.
* Each major functionality should be tested as whole by adding a framework test (i.e. making sure a message was received, the call was ended well on both side, etc...) * Each major functionality should be tested as whole by adding a test (i.e. making sure a message was received, the call was ended well on both side, etc...)
* Each new functionality should be tested on each platform before merging it to reduce regression * Each new functionality should be tested on each platform before merging it to reduce regression
* Integrate sonarqube on each client * Integrate sonarqube on each client
* Automate the testing of Jami’s behavior on network compatibility * Automate the testing of Jami’s behavior on network compatibility
* Make a make_ring.py script adaptable to windows also
...@@ -8,7 +8,7 @@ Submitting your first patch ...@@ -8,7 +8,7 @@ Submitting your first patch
first see: first see:
* {ref}`Creating a gerrit review <developer/working-with-gerrit:To Create the Review>` * [Creating a gerrit review](working-with-gerrit)
### SSH setup ### SSH setup
...@@ -16,10 +16,10 @@ https://review.jami.net/Documentation/user-upload.html#ssh ...@@ -16,10 +16,10 @@ https://review.jami.net/Documentation/user-upload.html#ssh
1. Generate a personal dedicated public / private key set. 1. Generate a personal dedicated public / private key set.
```bash ```bash
ssh-keygen -t rsa -f ~/.ssh/jami_gerrit_review_rsa` ssh-keygen -f ~/.ssh/jami_gerrit_review`
``` ```
Your identification has been saved in `jami_gerrit_review_rsa`. Your public key has been saved in `jami_gerrit_review_rsa.pub.` Your identification has been saved in `jami_gerrit_review`. Your public key has been saved in `jami_gerrit_review.pub.`
2. Tell gerrit your public key 2. Tell gerrit your public key
...@@ -56,7 +56,3 @@ References ...@@ -56,7 +56,3 @@ References
---------- ----------
+ [Some Gritty Details](https://review.jami.net/Documentation/user-upload.html#_gritty_details) + [Some Gritty Details](https://review.jami.net/Documentation/user-upload.html#_gritty_details)
Original author: *Peter Gossner*
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment