VoIP via the ECF Call API and the Jingle Protocol
Collaboration via Voice over IP is gaining more and more adaption worldwide. The ever increasing number of Skype users and the growing number of VoIP providers via the regular phone infrastructure pays tribute to the success of VoIP. The eclipse platform, as an open application framework, should provide the necessary infrastructure to allow an easy integration of such services. Although the Eclipse Communication Framework (ECF) is already providing a set of interfaces to support voice communication via its call api, a concrete implementation is still missing… up until now.
The goal of this project is to create a working implementation of the ECF call api and to make use of it in a softphone application. This softphone can be realized as an Eclipse plugin or a standalone RCP application. Due to the usage of the ECF, other components like buddy lists, presents detection, file transfer etc. are already available and can be incorporated via the ECF apis.
The important part of the project is the implementation of the call api. There are various VoIP protocols in usage nowadays. From SIP to the proprietary Skype, there are many ways to transmit voice from A to B. One protocol which seems to be of special interest is the Jingle Protocol (http://www.xmpp.org/extensions/xep-0166.html). Jingle allows negotiating various means of transportation for a multitude of media types, including voice and video data. The protocol is adapted by several applications like Google Talk or Asterisk. It is based on the XMPP standard, which is already partially implemented in the ECF apis. XMPP itself originated from the jabber project and is widely accepted as an open standard for instant messaging.
In order to use the Jingle protocol, it is intended to make use of the Smack API (http://www.igniterealtime.org/projects/smack/). Smack provides an implementation of the XMPP protocol and the Jingle extension. It is available under the Apache license.
To resume… The project will consist of two parts: Number one is to wrap the functionality of the Smack API via the ECF call api. Whereas step two involves creating a softphone application, which utilizes the call api. Since the call api is an abstraction on a concrete protocol implementation, the Jingle implementation could easily be replaced by any other protocol like Skype, SIP or Asterisk.