About a year ago, the Advocacy team established first contact with Savoir-Faire Linux, a free software consultancy company behind Jami, a privacy oriented VoIP and conference platform. The Jami developers were interested in some sort of collaboration with us, and shedding fresh light on their product. Intrigued by their technology and business model, we featured Jami in the Snap Store. Since, Jami has seen a steady 3X growth in their active user base. Last week, we met again to talk about Jami, their experience with snaps, future plans, and more.
My interview peer was Sébastien Blin, a free software consultant and a core Jami developer working with the company since 2017.
Savoir-Faire Linux is a free Software consultant Company working in several areas of expertise (embedded systems, infrastructure, software development, R&D), based in Canada and France.
Jami is a free (GPLv3) communication platform available on all major platforms (GNU/Linux, Windows, MacOS, iOS, Android, Android TV). What makes it unique and interesting is that it uses distributed P2P technology, based on OpenDHT. It provides the standard set of telephony and VoIP features like SIP video calls and video conferencing, screen sharing, text messaging and groups for up to 8 people, and more. You also get unlimited file transfers and plugin customization. The connections between peers are encrypted.
Jami’s broader message is to enable communities around the world to communicate, work, educate, and share their knowledge, or simply catch up with friends and loved ones privately, securely, and in freedom by building upon the latest relevant free protocols and standards.
As highlighted above, Jami is mainly based on standard protocols (SIP, ICE, TLS encrypted sockets, x.509 certificates chain) and its goal is to be resilient against censorship by design. This is why Jami is using P2P technologies and can provide off-grid communication. With all the current world events, it’s also important for us to be able to use Jami during critical events (Internet shutdown, massive censorship, natural disasters) or even in disconnected areas (on a boat, smart agriculture, educational classes, etc). It’s possible to run Jami without using any infrastructure provided by Savoir-Faire Linux.
Moreover, the use of P2P sockets essentially means that the company does not limit capabilities like size for file transfers or bitrate for audio and video quality. Users can rely on whatever their connections can support.
In 2022, the company focused a lot on enabling group discussion with a technology we call Swarm. This allows us to synchronize messages across all devices by syncing a tree of messages.
Jami is a small team. Because Savoir-Faire Linux is a free Software consultancy, the size of the active team can and will vary a lot from time to time. Overall, we have a small core team, with several other developers being “loaned” to the project from time to time. The core team will work on big features, while the other developers will work on smaller tasks. We try to follow a roadmap, and usually do standup meetings at 10am every morning to check who is blocked and how we can help move the work along. The rest of the day is usually dedicated to developing, reviewing and testing code. Every night, two big test suites run to check various scenarios – and also make sure nothing is broken.
For my part, I generally review the results of the tests every morning, and take time to check feedback from the community. As we’re a small team, we rely on the community, and thanks to their help and ideas, it is possible to improve the user experience. We are also grateful for all the people helping us with translations. We also have a number of community members doing some patches, documentation and bug reports that help us analyze and check new usage scenarios.
From our perspective, for the last several versions of Ubuntu, we find the snaps quite pervasive and sort of mandatory to the user experience. Because we want our users’ journey to be as easy as possible, it made perfect sense to publish Jami through the Snap Store, and make it possible for our users to discover a sandboxed version of the application.
On the upside, this also allows us to provide an up-to-date version for all GNU/Linux distributions supported by snap, reducing the cost of packaging and maintenance. Jami uses a lot of up-to-date libraries, with some patches in a number of libraries, so typically, it may not be easy for our team to maintain all packages using the traditional distribution methods. Even if the community does a lot of great stuff regarding this point, the overhead is too big.
The snap technology has its advantages and drawbacks. Overall, we’re pretty happy because it gives us a convenient way to provide our users with an up-to-date version on a lot of distributions, even though we maintain our repositories for Ubuntu, Debian, Fedora, and openSUSE.
This is highly important for us, because, as communications protocols are evolving, users require an up-to-date version of software at all times, in order not to downgrade the quality of the communication on both sides. That’s generally why other communication platforms may not connect if the user isn’t running the latest version.
For developers, it is quite easy to package applications as snap, using the snapcraft.yaml file. The final artifact is sandboxed, and the users have the ability to give and remove permissions as they want.
In the future, we really hope the snap ecosystem will have a better, more visible permission mechanism. For instance, Android is pretty great on this point, where applications can ask the user to access the camera or filesystem via a popup, instead of failing sometimes in a weird way.
For people who experience problems during packaging, the snapcraft.io forum has a great community that will provide answers rather quickly, most of the time. However the snap packaging process may sometimes be quite complex, with a lot of layers that can cause bugs. With Jami, during development, we encountered two main problems.
- The first one was, for a while, snap users would not have video playback – only a static blue screen. This was due to the use of the GNOME platform snap, with a rather specific bug. We resolved the issue by switching to core22 base in our product.
- The second problem was, since we use Docker to build snaps, and due to the fast pace of snap ecosystem evolution, we encountered connectivity issues with the Dockerfile we use to build snap packages. The Python module inside the container was broken for weeks.
Those two bugs are now fixed, and apart from small maintenance overhead, everything is working fine!
Regarding snap, we would like to use the Snap Store build infrastructure, as this will allow us to publish the application for more platforms and architectures. This work has started but not yet been completed.
For Jami itself, we have a lot of new things coming. We want to increase the limit of members in a swarm, we are working on a Web client compatible with WebRTC, we’re improving the audio and video quality in calls, adding new plugins (we’re working on an offline Transcript Plugin, and much more). Finally, we want to increase our presence out there.
Thank you for featuring us! If there’s something we can help with, feel free to reach out to us
I would like to thank Sébastien for his time, and invite developers out there to get in touch regarding their cool software experiences. If you’re interested in sharing your story about Linux and snaps with us, please email snap-advocacy at canonical dot com, and we will think together what can be done.
Main page image credits: Photo by Duy Pham on Unsplash.