diff --git a/build/dependencies.rst b/build/dependencies.rst index aeffce56a12d1bcbfbbb65898e860b99487095c6..aee0048fb96363974f15a96c9bb2cbedf35ddcd5 100644 --- a/build/dependencies.rst +++ b/build/dependencies.rst @@ -173,10 +173,8 @@ And for the optional Qt WebEngine dependencies:: sudo dnf install qt6-qtwebengine-devel -.. note:: Given the newness of Qt 6, it may not be fully (or at all) - packaged in the official repositories of your GNU/Linux - distribution of choice yet. In that case, the easiest - approach would be to install the libqt-jami or jami-libqt - package on your supported dpkg/deb-based and rpm-based - GNU/Linux distribution respectively, to get all of the - needed Qt 6 dependencies of Jami. +.. note:: The easiest approach would be to install the libqt-jami + or jami-libqt package on your supported dpkg/deb-based + and rpm-based GNU/Linux distribution respectively, to get + all of the needed Qt 6 dependencies of Jami. And to be as + similar as possible at what we are testing and building. diff --git a/developer/feature-requests.md b/developer/feature-requests.md index c654ef93c4bc41760667c0a20f157a974c4b6a66..03598d7d26625f511e4c4b3725dc0003f767a60e 100644 --- a/developer/feature-requests.md +++ b/developer/feature-requests.md @@ -7,17 +7,15 @@ the tickets. ## SFL -+ {daemon-issue}`Implement pipewire <13> to support screen sharing on - Wayland` -> Contact #Jami (Adrien, Sébastien, etc.) / hard / In progress -+ Connectivity -> Contact #Jami (Sébastien) / medium: ++ Connectivity -> Contact #Jami (Francois-Simon) / medium: + TURN ipv6 support + connection ipv6 only<->ipv4 only + 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 + Search in system contacts ({client-gnome-issue}`1191`, {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) + Update media RTP ciphers for ffmpeg / probably easy + Support ECC (instead RSA) for Jami accounts / hard but short @@ -39,9 +37,9 @@ the tickets. + Categorized conversations (like favorites, groups, etc) (to discuss with #Jami) + jami-web: + 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: @@ -51,9 +49,8 @@ Some other ideas from tickets: Contact Rennes + [Qt/QML Improve client](https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues) -> Contact #Jami (Andreas) - + Redo emoji-picker with native component + 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. Joining a conference via a link can be cool. For now, nobody is working on it. diff --git a/developer/jami-concepts/account-management.md b/developer/jami-concepts/account-management.md index 8b14ceb541ff67c90d105a7a8943d10b18099ad8..5c4c19b2ff5a6b9a373235e57624969dd5ec2789 100644 --- a/developer/jami-concepts/account-management.md +++ b/developer/jami-concepts/account-management.md @@ -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. +## 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 ### Daemon side diff --git a/developer/jami-concepts/calls-in-swarm.md b/developer/jami-concepts/calls-in-swarm.md index dacd0ea565293d90961db6c648c2173ea5a7b593..b3202d2805cae5c540a04becc556a32444e85e78 100644 --- a/developer/jami-concepts/calls-in-swarm.md +++ b/developer/jami-concepts/calls-in-swarm.md @@ -31,18 +31,17 @@ Proposed flow:  -**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 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 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 @@ -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? 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 diff --git a/developer/jami-concepts/calls.md b/developer/jami-concepts/calls.md index c2d69f359c6fe9a7c8f3ad35b3d39eb03f10619d..423ed5b630e3531e9a79ba48e4dee1ce35f903c5 100644 --- a/developer/jami-concepts/calls.md +++ b/developer/jami-concepts/calls.md @@ -214,7 +214,7 @@ The XML was updated to add the wanted stream: ## Conference -Reflected changes are documented {doc}`here <conference-protocol>`. +Reflected changes are documented [here](conference-protocol). ## Client diff --git a/developer/new-developers/debugging-tools.rst b/developer/new-developers/debugging-tools.rst index 1203d8ca8cc31a1c69b8d7ab0952f1f52bd8c4f8..f3808659a90c78caad1e6eea4e1f896b30296ebc 100644 --- a/developer/new-developers/debugging-tools.rst +++ b/developer/new-developers/debugging-tools.rst @@ -6,7 +6,7 @@ There are several ways to debug Jami from a developer perspective, depending on 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 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 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 project in *DEBUG* mode to get debug symbols. @@ -28,6 +28,8 @@ Some useful commands: + `Ctrl + X / A` - pass in graphical view + `p` - print an internal value. +Note: VSCode is fully supported by Jami and can be used to debug the project. + Profilers ~~~~~~~~~ @@ -68,4 +70,10 @@ LTTng Finally, tracepoints can be created and analyzed. `daemon/tools/trace` provide the documentation 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 -tracepoints from network interfaces). \ No newline at end of file +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 diff --git a/developer/new-developers/improving-quality-of-jami.md b/developer/new-developers/improving-quality-of-jami.md index 4458285711bd2a1c540262924d12528dc607a684..9ec8e366be79d5d2597b0d6eda2dd2f985ed0d7d 100644 --- a/developer/new-developers/improving-quality-of-jami.md +++ b/developer/new-developers/improving-quality-of-jami.md @@ -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. -* 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/ +* 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 * 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 * The environment needs to be set with ‘--disable-shared’ during the ’./configure’ command -## Framework Tests - -* 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. +* Clients also have tests (cf `jami-client-qt/tests` for Desktop, `jami-client-android/jami-android/app/src/androidTest` for Android) ## Integration tests @@ -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. -* 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: @@ -39,13 +31,9 @@ Improving the quality of Jami * Issues are made by developers or users on git.jami.net -## Monitoring - -* 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. +## Agent -* If needed, the manual command is ./script.sh –peer 031acbb73f2a3385b2babc7161f13325be103431 - -* 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 +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) ## Smoke tests @@ -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. -## Special note: FDroid - -The script to generate MR is in the client-android repo (fdroidMergeRequest.sh) ## What needs to be done -* Push coverage closer to 60% - * 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 * Integrate sonarqube on each client * Automate the testing of Jami’s behavior on network compatibility - -* Make a make_ring.py script adaptable to windows also diff --git a/developer/new-developers/submitting-your-first-patch.md b/developer/new-developers/submitting-your-first-patch.md index b88e1360064096707d8c874cade8723158f3f079..672cdaedea8f9968548cc1012df51b4be02a3408 100644 --- a/developer/new-developers/submitting-your-first-patch.md +++ b/developer/new-developers/submitting-your-first-patch.md @@ -8,21 +8,21 @@ Submitting your first patch first see: -* {ref}`Creating a gerrit review <developer/working-with-gerrit:To Create the Review>` +* [Creating a gerrit review](working-with-gerrit) ### SSH setup 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 -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 1. Login to [gerrit](https://review.jami.net) via your Gitlab account (Sign-in=>OAuth Gitlab) 2. Follow the ssh key instructions found from (your) user options [settings](https://review.jami.net/settings/) @@ -36,7 +36,7 @@ This *assumes* you have moved any existing project clone out of the way. 1. Clone a (fresh) copy of the project. `git clone ssh://USERNAME@review.jami.net:29420/PROJECT_NAME_GOES_HERE.git`; e.g. `git clone ssh://foo@review.jami.net:29420/jami-project.git`. 2. Configure this clones local .git/config (optional) -3. Generate commit Change-Ids +3. Generate commit Change-Ids aka: commit-msg hook script A shell script, to be installed to .git/hooks/commit-msg. @@ -56,7 +56,3 @@ References ---------- + [Some Gritty Details](https://review.jami.net/Documentation/user-upload.html#_gritty_details) - - - -Original author: *Peter Gossner*