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.


16 November 2016

Blockchain, a revolutionary tool for Ring

Blockchain technology brings on a new revolution, as its advocates write on every wall, it is likely to deeply change our verticaly-shaped society.  Savoir-faire Linux uses its mechanism to develop Ring distributed ledger and users ID management.

Read more

4 November 2016

Ring Bêta 2 is now available

Ring, a GNU projet, is improving. Test the Gaston Miron version now!
Among the latest features in the beta 2 version, you will find :

  • A global account identification mechanism based on blockchain implementation on an Ethereum technology.
  • The multi-device
  • The IPv6 support

Learn more

4 November 2016

Ring, an official GNU package

Since October, Ring is officially a GNU package, following its integration into the GNU project.