Dev update #6

🥰
Our team of developers is very grateful for your support and your patience during this process of improving Jami's connectivity and reliability!

Core

We have fixed major bugs in the past weeks, resolving a significant portion of our connectivity issues!

Many of our reliability issues stemmed from bugs in the underlying code layers of the tools we use to connect users. Let's take a look at how Jami works and what has been fixed to significantly improve connectivity. 🤓

What is NAT?

IPv4 and IPv6 are two versions of the Internet Protocol (IP) used for device addressing. IPv4 uses 32-bit addresses, limiting the number of addresses to 4.3 billion. On the other hand, IPv6 utilizes 128-bit addresses, providing a much bigger pool of addresses.

NAT (Network Address Translation) reduces the number of available IPv4 addresses by converting private IP addresses on the local network (e.g. your computer), which are not directly accessible from the Internet, into a single public IP address, connected to the Internet (your router acts as a NAT gateway).

However, NAT can disrupt applications like Jami that rely on private IP addresses.

UPnP

Jami uses ICE (Interactive Connectivity Establishment) to establish a peer-to-peer connection between devices. If NATs block this direct connection, Jami optionally uses UPnP (Universal Plug and Play) if it is supported by the router. UPnP automatically configures router settings like opening ports to facilitate connections.

We fixed bugs occurring in two scenarios:

  • When UPnP was deactivated in the settings
  • When the account was deactivated in the settings

UPnP continued running in the background until Jami restarted. Fixing these bugs reduces unnecessary network traffic and facilitates the identification of other connectivity issues.

TURN

In addition to NAT potentially blocking peer-to-peer connections, dynamic private IP changes and firewall configurations without UPnP support further complicate connections.

To address these limitations, TURN (Traversal Using Relays around NAT) servers act as intermediaries. Similar to routers, these servers provide consistent public IP and port for secure data flow between devices, ensuring security and privacy are maintained.

About a third of Jami users rely on TURN servers.

We have fixed two major bugs that were causing Jami to crash when connectivity changed, one of them being related to the PJSIP library.

OpenDHT

We have added additional automatic tests for OpenDHT, aimed at enhancing connectivity robustness for mobile devices and addressing bugs related to timeout issues during  listen operations  and functions associated with the proxy server.

Desktop

✨ We've released new versions for Ubuntu 24.04 and Fedora 40!

Last week, we received feedback from FFmpeg regarding our patch for screen sharing on Wayland with Pipewire. We've begun implementing the requested changes, and we plan on incorporating them into Jami when they are ready.


Mobile devices present more complex connectivity challenges for Jami compared to desktop computers. When Jami runs in the background on mobile, setting up push notification servers is necessary, and this process varies depending on the mobile operating system (Proxy DHT).

iOS

Efforts on iOS have been focused on stability, UI improvements and the migration of Jami’s code to SwiftUI. Yesterday we've released version 3.68, for both the stable and beta versions, so let's dive into it:

  • Migration to SwiftUI has been completed for calls and smart lists. This transition simplifies modification processes, accelerates development as it incorporates default features provided by Apple.
  • Notification stability has been enhanced by using data streaming to receive data from DHT, instead of waiting for the entire response. This allows for data processing even amidst delays or incomplete responses.
  • Ongoing work on revoking emojis on iOS.

Android

All the changes listed in the Core help address connectivity issues, especially on Android.

Most of the work from our Android team has been devoted to adding automatic tests in order to avoid regression and to find recurring bugs. We've made small UI adjustments and worked on issues related to connectivity changes.

A new stable version for Android will be released next week! 🌟


What's next to tackle?

Jami still encounters issues with connectivity changes on mobile devices, particularly when switching between networks (e.g., Wi-Fi to 5G). These problems are mainly related to OpenDHT and DHTnet. We'll be working on resolving them in the coming months.

Your feedback holds immense value for us, especially since it can be challenging to reproduce specific bugs on our own and given that we don't collect any data. We truly appreciate your willingness to try out these new versions and share your experiences with us❗

When reporting any issues you encounter, please let us know:

  1. The device you used
  2. The version of Jami installed
  3. The steps that led to the specific issue.

Thank you very much 😃.