31 May 2018

Launching Our GitLab Instance!

Ring is a universal communication platform (and a free software project) the development of which heavily benefits from contributions of its community members. As such, the contribution process should be as easy and painless as possible.

Thus far, we have been relying on Tuleap as a means to facilitate collaborations, but it was intimidating for newcomers, to say the least. Tuleap's bug tracker and wiki are hard to find, particularly by those who are new to the project. For this and many other reasons, we decided to launch a new collaboration platform: This easy to navigate platform has two (2) main advantages over the retired one.

First, GitLab reduces the entry barrier especially for those who join the Ring community for the very first time and is easy to navigate.

It does not matter if you are a frequent member, a lurker, or a casual or even one-time contributer, you can just do your thing without being required to sign up for an account, as it was the case with Tuleap. Second, GitLab is an integrative platform. You can log onto it using your already existing GitLab or a GitHub account without new sign-ups; or, you can register an account on, but you do not have to. Moreover, to make sure everyone has still access to the old information and repositories, we have migrated all issues to GitLab. As for the Wiki, it is available as usual on Ring's webpage at In addition, please note that Gerrit will still be used for managing patches and code review (see Gerrit's tutorial).

To sum up, we have made it easier to contribute to the Ring project and we invite you to join the community. We highly value our community fellows and we believe it has been because of their support that we have come this far. If you are wondering how to support Ring, you may consider these pathways:

  1. maintaining a Ring package on your distribution;
  2. submitting design issues;
  3. improving the documentation;
  4. filing tickets on the bug tracker; and
  5. supporting users or by translating Ring.

All can be accomplished through visiting our GitLab instance. And as a tip, please note that the issues on GitLab can be marked as "good first bug" or "help wanted". These could be great for your first code contribution to Ring.

Good Luck!

14 May 2018

A Meeting with Richard Stallman: On the Future of Ring As a GNU Package

Ring Team Attenting the 5th Libre Seminar of ADTE 2018

On May 2nd, a small delegation of the Ring team attended the 5th Colloque libre de l’Adte 2018; a colloqium about free software, open data and open science as well as free access to resources and research for higher education purposes. This year, ADTE was held at The Université du Québec à Montréal (UQAM), a public university based in Montreal, Quebec, Canada.

The event was a packed one-day long seminar with many talks, interesting participants from academia, industry as well as the provincial and federal governments of Canada. The seminar hall was full of young students (some travelling from other cities and provinces) interested in learning about the implications of taking an open and libre approach to data and software production, distribution, and management.


Richard Stallman Visiting the Ring Team

At the event, we attended Richard Stallman's keynote, and exhibited Ring to the general public and participants alike. This seemed like a good opportunity to invite Richard to our office to disucss with him about Ring in more detail.

Richard is the founder of the Free Software Foundation ( He started and shaped the GNU project and inspired many free software developers around the world. On both social and technological levels, he has helped the Ring project to evolve and for this reason he visited our Montreal office to have a face-to-face steering discussion with the team.

Richard Stallman is familiar with the project. In fact, Ring is a GNU package, and has made it to the list of the high priority projects of FSF in late 2016. For this reason, we find it important and encouraging to personally meet with Richard and discuss our ideas, the technical challenges we face, and in general the future direction of the project development.

In this meeting, we discussed the following key topics:

  1. Further Protecting Privacy of Ring Users. We debated some concerns around Firebase powered push notification feature of Ring for mobile devices and its implications for the privacy of users. In line with this matter, the team explained their technical strategies and action plan they have put in place to deal with these issues.

  2. Pursuing Ring’s Capacity as a Global Project. Richard posed the question of the capacity of Ring for serving millions of users and brought into light what technical issues might ensue as a result of such large scale use of Ring. The team explored this issue further through the lens of private blockchain.

  3. Creating a Sound Brand Strategy for Ring as a GNU Package.

Moreover, questions about robustness of Ring's user-name system, the current load capabilities of the distributed network and Ring's use-cases for educational purposes were also raised and attended to. We also asked for his advice on debatable issues associated with Ring's website.

Overall, spending the day with Richard Stallman seemed like a crash course on the most interesting topics of Free Software, and indeed an enduring cherished memory for us all.

26 April 2018

Modern Mailboxes with Take&Send

Keeping Ring a Stable Platform

Last week we have all made a great effort to improve the stability of various Ring clients such as macOS, GNU/Linux and Android. Our developers managed to fix multiple issues in the account deletion part, and the GNU/Linux (GNOME) client received several fixes addressing issues with new account creation or network disconnection.

Privacy, Security and Stability Matters, so does Innovation

Creativity and innovation are very important aspects of our daily job as Ring developers. Whether adding a file sharing feature or maintaining the fully distributed platform of Ring, every Ring developer tries to be as innovative as s/he can. Lately, we discussed about the user experience improvements made by adding the image sending feature to the Ring App. It was indeed a cool project. Today, we are focused on another little but imapctful innovation: Scheduled Take&Send feature! Let's discover it in more details together.

Ins and Outs of Modern Mailboxes: Introducing Take&Send

A short while ago, Hugo Lefeuvre, a Karlsruhe Institute of Technology's Computer Science undergrad and a Debian Developer, joined our development team. Hugo is a free software enthusiast who will shoulder the task of developing the new Take&Send feature. This added functionality will allow Ring users to take pictures, record short videos/voices directly from the Ring client and send it to their contacts within just a few clicks.

What's more? Images and videos will be directly accepted (with size restrictions), images will be directly displayed and videos will be represented by a thumbnail. All of this is possible because of work already done to create image sending feature. However, received audio tracks will be displayed using a dedicated message layout.

Additionaly, this new functionality will lead to the development of a modern «mailbox» system. On the occasion where your call is not responded, this mailbox system is capable of recommending the user to record and send a video/audio message to the called contact. So, if your friend is busy now, don't worry, they will eventually get your message. Ring can function just fine as a mailbox. Such additions, however marginal, enrich Ring users' experience by adding variety to their communications, in form of text, emojis, audio, picture or video calls and messages.

Getting Your Hands on Take&Send

Summer will definetly keep us busy, entertained and creative with development and testing of these cool additions, but with the fall of beautiful fall leaves you can hopefully have your first-hand experience! The first release will be for devices running GNU/Linux (GNOME), but we will not keep you long on your toes. Our team will make sure this feature will be available on all platforms as soon as they can.

10 April 2018

Messaging improvement on Android

During the last few months we mostly focused on major new features for Ring such as file transfer, push notifications, and iOS support. Among other things, we have also discussed a few cosmetic features in order to offer users a more pleasant user experience while interacting with Ring.

Text messaging is the prime communication channel for many people, allowing for direct or asynchronous commuincations between users. Recently, we have noticed that the text messaging experience on Ring does not live up to Ring users' expectations so we decided to make several improvements to the conversation view such as sending images and displaying emojis, with the goal of making using Ring as pleasant as possible for every user.

Sending images

Sending images is done through using the file transfer feature, added recently. Users are most likely to use Ring's file sharing feature to exchange images, therefore we have made an effort to make sure users swap pictures as easily and conveniently as possible. To this end, we focused on small images (less than 20MB) and designed the app to automatically accept, download and show images that come from the user's contact list. Also, by tapping on an image in the chat window, it automatically opens to full screen mode with a transition animation. Easy, convienent and fun!

Displaying emojis

Raw text messages are often dull as they lack context and emotions. Indeed, many users tend to add emojis to their messages in order to convey more meaning and be more effective. Sometimes a message only contains emojis followed by no text or even an image. In this case, Ring's conversation now shows emoji-only messages without any background(see the screenshot below), to stand out better and have a stronger impact. After all, emojis speak louder than words!

10 April 2018

File Sharing: Now Available in Ring

A Ring feature supporting secure file transfers has been recently added. So far, the Linux (GNOME), macOS, Android, and iOS clients have implemented this new feature. While files of any size can be transferred, special care has been given to the transfer of smaller image files (less than 20MB), which will be automatically accepted and immediately displayed in the chat view.

Secure peer to peer file transfer has never been this easy!

On the iOS platform, all accepted files are saved in the application documents’ folder which can be accessed using Xcode or third party applications. To make access even easier, the files can be copied into the Photos or Files applications, as well as shared via social networking directly from Ring. More specifically, in order to send a file, a user has two options: 1) select an existing file or a photo; or 2) send a new photo. While some images on iOS could have HEIC or HEIF format, Ring always transforms them into a PNG image format while preparing them for a transfer.

The Android platform along with the Linux (GNOME) and macOS desktop versions offer similar options, with a more flexible file access system.

We hope this new feature serves the Ring users well, and please do not forget to communicate with us to share your experience and feedback.

5 April 2018

Push Notifications: A New Feature Added to Ring Project

Push Notifications: A New Feature Added to Ring Project

Push notifications are essential part of the effective end-user experience on mobile platforms. They tend to boost the app engagement and users find them useful and handy as they ease their communications. Although push notifications are widely considered an advantage for most apps, they are regarded most useful for messaging, email and other types of communication apps in general. For this reason, our team of developers have been working hard to make sure Ring is equipped with such critical feature in lockstep with Ring users’ expectations. Today, Ring’s push notification is available for its Android and iOS versions and the users can stay informed of their accounts’ developments while their phones have been idle.

What Is a Push Notification?

Push notifications on AndroidWhen a smartphone is idle, certain applications are still capable of receiving notifications. This is mostly the case when a new message or an email is received. This notification, coming from an external server, forces the device to wake up from its standby mode and therefore is called “push notifications”. Adding this feature to Ring enables its users to be duly informed of a new message, a new call or even a friend request even when their application is not open or their phone is sleeping.



Why Is It a Challenge to Add a Push Notification to Ring?

Platforms like iOS refuse to have an application running in the background while the device is idle. Android now has similar restrictions (with Doze), at least for apps published on the Play Store. However, because Ring is fully distributed, powered by OpenDHT, it requires a DHT node to continuously listen to the network to be able to be notified of new messages or calls. To work with push notifications, a mobile device should request a remote DHT node (also referred to as a DHT proxy), in order to be able to receive push notifications and perform operations on the distributed network. While the device is listening for push notifications through a proxy node, Ring on the user's phone is automatically woken up upon receiving a trigger such as a new call or message. It would then retrieve the piece of information from the network, decrypt it, and eventually notify the user.

How Do Push Notifications work in Context of Ring?

When a user starts using Ring, a DHT node is automatically started. This node will do the job of exchanging information with the other DHT nodes available in the Ring network. Since Ring runs on a distributed network, the Ring app can operate in a distributed manner without any central server, thereby the network acts in place of an external centralized server.

However, we know that from a technical standpoint, the push notification system must be centralized. This is mainly because a push notification must travel through the push provider which is a service owned and provided either by Google (usually FCM) in case of Android, or by Apple (APN) for iOS devices. Equally important, the push gateway is a second service that is responsible for creating the notifications and passing it to the FCM or APN. Using information necessary for authentication (a password or a certificate) with the push provider, the push gateway must also be centralized.

Today, Savoir-faire Linux hosts the push gateway for the Ring app on a server “GoRush”. The specifications of which can be found in GitHub.

The push gateway is however accessible from any node of the OpenDHT network. This gateway can also be hosted on any other server, however, in this case the user is required to re-sign the Android or iOS application with the appropriate certificates to use push notifications.

It is noteworthy to mention that since the respect for privacy is our core value and of utmost importance in Ring project, we made sure that no sensitive user data goes through push notifications. Since the push server and push gateway have access to some potentially sensitive metadata (receiver IP address and device ID, time of events), and because push notifications require a central service, push notifications will always be optional.

A Closer Look into How Push Notifications Operate

By the end of 2017, with the help of the Free software community, we managed to make sure that OpenDHT has the capability to connect the user’s application to the main OpenDHT network through a proxy node. This makes sure that the node representing the user on the hash table can in fact connect to the proxy node and make a request to listen to the distributed network while being in its original place on the distributed network. The proxy, consequently, sends back the data to the user’s node to be decrypted. The ability to perform operations on the distributed network using proxy node can drastically reduce the consumption of mobile data. The user's local node is no longer synchronized with the rest of the network, but is only connected to the proxy. The feedback or information exchange between the node and the proxy can be done either directly, with a simple HTTP/TCP connection, or through a push notification. If the user chooses to go through push notifications, the proxy will send notifications and authentication information to the push provider via the push gateway hosted by Savoir-faire Linux.

Concluding Remarks

Push notifications through the DHT proxy now allow Ring users to receive calls and messages at any time, even when their device is sleeping, while reducing mobile data and battery usage.

18 November 2017

Ring Universal Communication Platform Now on Android TV!

Ring keeps surprising communication experts and enthusiasts! Ring is now available on Android TV box and other smart TVs. Ring has become the only  communication software available on the Google Play Store for Android TVs, since the discontinuation of support for the TV version of Skype in June 2016. This new release is quite different from its mainstream app which can be downloaded on a myriad of devices such as cellular phones, tablets, Mac and PCs.

Read More

18 September 2017

Recent changes to the Ring clients

Changes to Ring, since the release of the 1.0 version:

UWP client
1. Fixes:
- SIP call audio fixed.
- Name registration fixed.
2. Improvements:
- SIP account creation and contact management improved.
- UI improvements during video calls.

Win32 client
1. Fixes:
- Missing DLL (needs reinstallation of Ring from the website).
- SIP UI correction and behavior fix (no messaging outside calls),
- Various bug fixes:
    - Closing first wizard without creating account doesn't crash the app anymore.
    - Clicking on old formatted contacts won't crash the app.
2. Improvements:
- General UI improvement:
    - Contextual menu of contact list fixed.
    - Multiple size and ratio adjustments.
- Code cleaning and refactorisation.

GNU/Linux Client
1. Fixes:
- Fix: Add contacts to the correct models.
- Fix smart infos display during a call.
- Fix a crash when ContactMethod is null.
2. Improvements:
- Improved display of avatars (circle and color pallet, common to all desktop clients).
- Improved display of contact requests.
- Improved display of messages reception date.
- YouTube videos and images can now be displayed into the conversation window.
- Displayed messages are now grouped by reception date.
3. Other changes:
- Remove the category label for a contact in the call view.
- Remove the ability to drag-and-drop an object in the chat view.
- Add a setting to enable/disable the preview of images and videos in the conversation window.

macOS client
- Removal of the add contact pannel which allowed to change your name and add it to Contacts.
- Remove the "Add to Contact" popover. It is now a single click action.
- Adding a default avatar (a white lettre inside a coloured circle).
- Minor cosmetic changes (commit 053283b2 & 22f71275).
- Many automatic translations uptades.

Changes on the Ring daemon
1. Addition of the following tests:
  ⁃ functional: SIP
  ⁃ Unit-Test: various simple classes for now
This is a GSoC 2017 contribution by Olivier Gregoire, accessible by command /make check/ (see test/ directory for further details)
1.1 RingAccount: archive can now be saved in plain text (not encrypted) without password.  In this case the archive is just a plain json file compressed with gzip.

2. Fixes:
  ⁃ Android: restbed crash
  ⁃ DHT:
    ⁃ prevent DHT connection on disabled account
    ⁃ avoid flipping DHT connection status
  ⁃ tweak vp8 parameters for better live performances
  ⁃ fix RingAccount certificate check code to be compliant with gnutls >= 3.4.11

3. Build/code
  ⁃ various refactoring for code cleanup/maintainance
  ⁃ various build fixes on dedicated platforms
  ⁃ build log less verbose (almost for boost)

4. Contribs (Bumps/Downgrades/Add/Remove)
  ⁃ restbed/asio 4.6
  ⁃ opendht (latest)
  ⁃ x264 (latest)
  ⁃ vpx 1.6.1
  ⁃ ffmpeg 3.3.3g
  ⁃ Boost 1.64
  ⁃ (UWP) downgrade gnutls 3.4.17
  ⁃ (UWP) downgrade pjproject 2.5.5
  ⁃ libav removed (ffmpeg is now used everywhere)

21 July 2017

Release of Ring 1.0 « Liberté, Égalité, Fraternité »

Savoir-faire Linux is proud to announce the official release of Ring 1.0 « Liberté, Égalité, Fraternité », the free and universal communication platform which preserves the users' privacy and freedoms.

Ring is fully distributed, and depends on no central infrastructure or enterprise to work. Every Ring user is connected to his or her contacts via a fully distributed network.

Ring can be used to text and audio/video call more privately, securely, and reliably.

Main functionalities and features:

> Encrypted Audio, HD Video, and InstantMessaging communication (ICE, SIP, TLS)
> Screen sharing and conferencing (Win32 and GNU/Linux)
> Support of an Ethereum blockchain as a distributed public user database
> Distributed communication platform (OpenDHT)
> Platform support on GNU/Linux, Windows UWP (Windows 10 and Surface), Win32 (Windows 7, 8 and 8.1), and macOS (10.10+) and Android (4.0+)
> Distributed under GPLv3+ license

As a GNU package since October 2016, the Ring team wants to thank Dr. Richard Stallman and the FSF for their support for the Ring project.

Important links

> Download Ring
> Contribute to Ring
> Technical documentation

20 December 2016

Ring on UWP: genesis of a technical challenge

Ring's beta 2 version is now available on the Universal Windows Platform (UWP). It's not only a great step forward for Ring, an official GNU package, but a technical success for our development team.