Welcome to Ring’s documentation!

As a new user, getting started is a good place to start.

As a developer looking to get started with a contribution, see contributing and how to build.

Getting Started

To get started with Ring, you can install it from our repositories. Instructions on installing Ring can be found on the download section of the Ring website.

Connecting Ring contacts to LDAP

It is possible for Ring to search contacts in an LDAP directory. At the moment, this is only possible with the Gnome client. This is done by configuring gnome-contacts and evolution to search LDAP for contacts.

Connecting gnome-contacts to LDAP

  1. Open Evolution
  2. From the contacts tab, right click and select New Address Book
  3. Fill the requested information depending on your LDAP configuration. Here is an example:

Connecting to LDAP section:

Field Value
Type On LDAP Servers
name <choose a name>
Autocomplete with this address book checked
server hostname of your LDAP server
port port of your LDAP server
Authentication Method Using distinguished name (DN)
Authentication Username <ldap username>

Using LDAP section:

Field Value
Search base ou=Users,dc=enterprise,dc=net
Search Scope Subtree
Download limit 100
Browse until limit is reached checked
  1. Launch gnome-contacts. You should be asked for your LDAP password and the LDAP contacts will appear.
  2. Launch Ring and your LDAP contacts will be shown.

Setting up a TURN or STUN server

Ring can be configured to use TURN or STUN servers (RFC5766) to establish a connection between two peers.

In this guide, we will setup a coturn server. There are other TURN/STUN server implementations available under a free license. See TurnServer and Restund.

1. Installing

COTURN is available in most Linux distributions. On Debian, install it with the following command:

apt-get install coturn

2. Configuring

Here is a basic turnserver.conf file:

listening-port=10000
listening-ip=0.0.0.0
min-port=10000
max-port=30000
lt-cred-mech
realm=sfl
no-stun

3. Creating users on your TURN server

To create users on your TURN server, use the turnadmin binary.

turnadmin -a -u bob -p secretpassword -r sfl

4. Launching the TURN server

turnserver -c turnserver.conf

5. Configuring Ring to authenticate to the TURN server

You may configure Ring to use your TURN server from the advanced tab your account settings:

Field Value Example
server url host and port of your server 0.0.0.0:10000
username username bob
password password secretpassword
realm realm sfl

Contributing

Ring loves external contributions but we do not use the Github PR system. Instead, we host a public gerrit server: https://gerrit-ring.savoirfairelinux.com

Before submitting a contribution, you need to register on our Gerrit server either with your Github or Google account.

Head to the settings section to set one of the following:

In each Ring submodule there is a .gitreview file. It contains all the necessary info to send a patchset to our gerrit server.

After you commited your changes (one or multiple commits) you can submit them with:

git-review

More documentation on Gerrit can be found on the official website.

Making Changes

  • [Optionnal] Create a ticket in our Tuleap bug tracker https://tuleap.ring.cx/projects/ring

  • Make commits of logical units.

  • Check for unnecessary whitespace with git diff –check before committing.

  • Make sure your commit messages are in the proper format
    • 50 chars title
    • 80 chars message width

Compiling and installing

This section covers compiling the different components of Ring.

Just the daemon (advanced)

Linux

1. Compile the dependencies
cd contrib
mkdir native
cd native
../bootstrap
make
2. Compiling dring
cd ../../
./autogen.sh
./configure
make
3. Installing dring
make install

Done !

OSX

1. Installing dependencies

Without a package manager

cd extras/tools
./bootstrap
make
export PATH=$PATH:/location/of/ring/daemon/extras/tools/build/bin

With a package manager (macports or brew)

Install the following:
  • automake
  • pkg-config
  • libtool
  • gettext
  • yasm
2. Compiling dependencies
cd contrib
mkdir native
cd native
../bootstrap
make -j
3. Compiling the daemon
cd ../../
./autogen.sh
./configure  --without-dbus --prefix=<install_path>
make

If you want to link against libringclient and native client easiest way is to add to ./configure: --prefix=<prefix_path>

Done!

Common Issues

autopoint not found: When using Homebrew, autopoint is not found even when gettext is installed, because symlinks are not created. Run: brew link --force gettext to fix it.

Clang compatibility (developers only)

It is possible to compile dring with Clang by setting CC and CXX variables to ‘clang’ and ‘clang++’ respectively when calling ./configure.

Currently it is not possible to use the DBus interface mechanism, and the interaction between daemon and client will not work; for each platform where dbus is not available the client should implement all the methods in the *_stub.cpp files.

Just libRingClient (advanced)

Basic Installation

These are generic installation instructions.

To install the appplication, type the following commands in a console, while in the root directory of this application:

mkdir -p build
cd build
cmake ..
make -j3
make install

The following options are often usefull to append to the cmake line:

-DRING_BUILD_DIR=<daemon install location>
-DCMAKE_INSTALL_PREFIX=<install location>
-DRING_XML_INTERFACES_DIR=<daemon dbus interface definitions directory>
-DCMAKE_BUILD_TYPE=<Debug to compile with debug symbols>
-DENABLE_VIDEO=<False to disable video support>

Explanation

This script will configure and prepare the compilation and installation of the program and correctly link it against Ring daemon.

All needed files will be built in “build” directory. So you have to go to this directory:

cd build

Then execute the Makefile, to compile the application (src, doc...)

make

Then install it all using:

make install

You have to use “sudo” to be able to install the program in a protected directory (which is the case by default and most of the time). Therefore it will ask for your system password.

OS X Install

Install necessary tools:

brew install cmake
brew install qt5
export CMAKE_PREFIX_PATH=<path_to_qt5>

hint: default install location with HomeBrew is /usr/local/Cellar/qt5

First make sure you have built ring daemon for OS X.

mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=<install_dir_of_daemon> [-DCMAKE_BUILD_TYPE=Debug for compiling with debug symbols]
make install

You can now link and build the OSX client with Ring daemon and LRC library

Internationalization

To regenerate strings for translations we use lupdate (within root of the project)

lupdate ./src/ -source-language en -ts translations/lrc_en.ts

Hint: On OSX lupdate is installed with Qt in /usr/local/Cellar/qt5/5.5.0/bin/ when installed with HomeBrew

Just the gnome client (advanced)

Requirements

  • Ring daemon
  • libRingClient
  • GTK+3 (3.10 or higher)
  • Qt5 Core
  • X11
  • gnome-icon-theme-symbolic (certain icons are used which other themes might be missing)
  • libebook1.2 / evolution-data-server (3.10 or higher)
  • libnotify (optional, if you wish to receive desktop notifications of incoming calls, etc)
  • gettext (optional to compile translations)

On Debian/Ubuntu these can be installed with:

sudo apt-get install g++ cmake libgtk-3-dev qtbase5-dev libclutter-gtk-1.0-dev gnome-icon-theme-symbolic libebook1.2-dev libnotify-dev gettext

On Fedora:

sudo yum install gcc-c++ cmake gtk3-devel qt5-qtbase-devel clutter-gtk-devel gnome-icon-theme-symbolic evolution-data-server-devel libnotify-devel gettext

Compiling

Run the following from the project root directory:

mkdir build
cd build
cmake ..
make

The following options are often usefull to append to the cmake line:

-DCMAKE_INSTALL_PREFIX=<install location>
-DLibRingClient_DIR=<path the the installed cmake module of LibRingClient>
-DLibRingClient_PROJECT_DIR=<path to the project folder of LibRingClient>

You can then simply run ./gnome-ring from the build directory

Installing

If you’re building the client for use (rather than testing of packaging), it is recommended that you install it on your system, eg: in ‘/usr’, ‘/usr/local’, or ‘/opt’, depending on your distro’s preference to get full functionality such as desktop integration. In this case you should perform a ‘make install’ after building the client.

Building without installing Ring daemon and libRingClient

It is possible to build ring-client-gnome without installing the daemon and libRingClient on your system (eg: in /usr or /usr/local):

  1. build the daemon
  2. when building libRingClient, specify the location of the daemon lib in the cmake options with -DRING_BUILD_DIR=, eg: -DRING_BUILD_DIR=/home/user/ring/daemon/src
  3. to get the proper headers, we still need to make install libRingClient, but we don’t have to install it in /usr, so just specify another location for the install prefix in the cmake options, eg: -DCMAKE_INSTALL_PREFIX=/home/user/ringinstall
  4. compile libRingClient and do ‘make install’, everything will be installed in the dir specified by the prefix
  1. point the client to the libRingClient cmake module during configuration: -DLibRingClient_DIR=/home/user/ringinstall/lib/cmake/LibRingClient

Debugging

For now, the build type of the client is “Debug” by default, however it is useful to also have the debug symbols of libRingClient. To do this, specify this when compiling libRingClient with -DCMAKE_BUILD_TYPE=Debug in the cmake options.

Ring release process

This page explains the process of making a new Ring release. It can be used as checklist of things to remember when making a new release. It was written to clarify the release process between the Ring dev team and the distribution maintainers.

Release tarball

Ring is released in the form of a tarball. They are hosted here:

Tarballs are generated from the integration branch of the ring-project repository with a job on our Jenkins server. They include a copy of all contrib libraries configured in daemon/contrib/src. If you are a Savoir-faire Linux employee, you may trigger the job from this page.

Naming scheme

Tarballs respect the following naming scheme ring_<date>_<number_of_commits>.<commit_id>.tar.gz where:

  • date is the current date, for example 20160422
  • number_of_commits represents the number of commits that day
  • commit_id is the commit id of the last ring-project commit

Packaging

Distribution packaging

Distribution packages should be generated from the release tarballs. It is best that distributions exclude as much embedded libraries as possible from the tarballs and use their packaged versions instead.

Debian

The Debian package is maintained by Alexandre Viau <aviau@debian.org> as part of the Debian VoIP Team <pkg-voip-maintainers@lists.alioth.debian.org>.

The packaging is maintained using git-buildpackage and can be found in the following Alioth repository:

  • git.debian.org:/git/pkg-voip/ring.git

The repository contains a Debian.README file explaining the process of importing a new version. To upload a new version of Ring, manual action is required by Alexandre. If he is unavailable, other members of the Debian VoIP team may do the upload.

Upstream packaging

The Ring dev team builds packages for popular Linux distributions. Those packages are built weekly. Instructions on installing the repositories can be found on ring.cx/download.

Stable releases

At this moment Ring is still considered in beta and does not support stable releases. This may or may not change when the beta period is over. The most secure and stable version of ring is the tip of the master branch.