Skip to content

Instantly share code, notes, and snippets.

@alok4nand
Last active Aug 29, 2016
Embed
What would you like to do?

Google Summer of Code 2016

Organization: Debian

Project: Create a Telepathy Connection Manager (telepahy-bell) for Ring

Table of Contents

  1. Overview
  2. Primary Goals
  3. Stretch Goals
  4. Contributions

Overview:

What is a Telepathy Connection manager ?

To understand what a Telepathy Connection Manager is we first need to know about telepathy framework. As per its website:

Telepathy is a flexible, modular communications framework that enables real-time communication via pluggable protocol backends.

The idea behind Telepathy is to unify all communications. Several communication services like IM, VOIP etc., implement their own desktop clients. This leads to duplication of effort and sometimes poor integration. Most of these features can be abstracted and their functionalities can be integrated to provide a unified user experience.

Telepathy divides itself into separate reusable components. The protcol enabling the communcation becomes part of one of the components as a background process. These components communicate with each other using DBus messaging. There is a well documented DBus API for it. Some of the well known components include :

telepathy

  • Connection Manager : A connection manager is a service that provides the interface between the components of Telepathy and the individual communication services such as Text , Call. It serves the part of pluggable protocol backend in description of telepathy framework. It creates connections supporting a protocol. It also provides interfaces for several other functionalities like getting contacts, setting presences etc.

  • Account Manager : It stores users account configuration and calls the appropriate connection manager when requested.

  • Channel Dispatcher : In telepathy, a channel is used to exchange data and communicate between local users and remote servers. A channel dispatcher responds to creation of new channels and requests to create a new channel by a client.

  • Telepathy Client : A normal everyday user will use the client application to communicate. There are several clients for telepathy, most notably Empathy for Gnome and Telepathy-Kde for KDE. I have primarily used Empathy during the course of my work in GSoC 2016.

Why use connection manager for Ring ?

  • The purpose of this Connection Manager is to use Ring via Telepathy framework. Ring offers several clients for different platforms including two clients for Linux:

    Although these clients provide many more functionalities and configuration options than telepathy-bell, a telepathy client is installed by default in many popular distributions and using telepathy connection manager can lower the entry barrier for many users.

  • Telepathy-Bell requires only ring-daemon as its functional dependency. Ring daemon has a DBus API, which the connection manager uses to perform its operations. Using the existing modular design, when more features are added to daemon, it can be easily extended to Telepathy-Bell.

high-level

Goals:

Done

The primary goals to be accomplished were as follows:

  • 1. Create a base/skeleton project for Ring CM

    • with a working CMakeLists.
    • the minimum required (empty) functions to interact with Telepathy
  • 2. Connect Ring CM to the ring-daemon

  • 3. Work on basic Account Management

    • allows creating a new Ring account
    • allows using an existing Ring account
  • 4. Basic contact management

    • associate a contact alias with RingID. Since ring-daemon does not manage contacts, the association exists only for lifetime of the connection.
  • 5. Script to create a working .deb for telepathy-bell.

  • 6. Add some Ring functionality to Ring CM.

    • Out of call chat messages
    • Placing call and receiving call.

To Do

  • 6. Improving the Account Management, text messaging, and Contact Management

    • Making the CM usable as a Ring client for text messaging for a non tech user
  • 8. Exploring video calls

    • currently the daemon handles video one frame at a time (not a video stream)
      • if using dbus the actual frames are shared via shm (shared memory)
      • would the video via frames model work with telepathy/empathy?
  • 9. Trust requests (ie: friend requests)

    • currently still being implemented in desktop clients

Contributions:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment