Ignite Realtime Summer of Code 2007 Projects
We're excited to be participating in the Google Summer of Code 2007. Like last year, we are participating as a member of the XSF
. The project ideas are detailed below and summaries can be found on the XSF Summer of Code 2007 wiki page
. Several mentors are available and will be matched to students based on the project selected.
If you are interested in a project, send an email to "greg at jivesoftware.com" and include details about yourself and experience, which project you are interested in, and why the project interests you. Of course, you're more than welcome to make a proposal for a project not included in this list.
1) Asterisk-IM
: Asterisk and Openfire Integration
Take the existing Openfire
plugin for integration with Asterisk
to the next level. People in the Ignite Realtime community are clamoring for new features and the code update for this fun integration. Existing functionality includes click-to-dial from the Spark client and automatic presence changes based on phone status.
This project includes:
- Stabilizing the existing code base while bringing it up to date with the latest Openfire APIs
- Adding support for transferring calls
- Adding conference management with the new Asterisk-Java
API for controlling multi-party calls.
2) Link-Local Messaging (XEP-0174
) support
Link-Local Messaging is a way to connect clients on a local area network directly, without needing a server. It is described as "XMPP-like" because it does not require authentication, but uses the same XML stanzas as XMPP in a local zero-configuration network to create a "mesh" of connected clients.
In this project you will implement the Link-Local Messaging specification in Java for the Smack
library.
3) File transfers for gateways
Gateways for connecting from XMPP servers to the closed IM networks like AIM, MSN and Yahoo are extremely valuable to many people. Currently, though, there is no good way to transfer a file through these gateways. This project will implement file transfer between the Openfire Gateways plugin
and either AIM, MSN or Yahoo. There are two goals for the project:
- Create a core library that can be used for basic file transfer functionality with any gateway.
- Use the core library to implement file transfer for one of the IM networks listed above.
4) Jingle Voicemail
Jingle
is the media stream signaling protocol built on top of XMPP. It is used by Google for voice in GoogleTalk and is available in Spark. Currently there is no specification for voicemail in Jingle, but since it is a voice technology used for calling people it only makes sense to add the functionality. Creating a standard (XEP) around the feature will facilitate interoperability and allow many clients and servers to have this cool feature.
The goals for this project are:
- Create a preliminary specification, in XEP format, for Jingle Voicemail
- Allow for termination of Jingle calls in the Openfire server for recording
- Support three use cases:
- Person being called is offline, so leave a message
- The Jingle call request times-out, so leave a message
- Send a voice message rather than a chat message without initiating a Jingle call request
- Limit the amount of data recorded per voice mail
- Update the Openfire server administration console to support the functionality
5) Group Chat for Gateways
Group chat through gateways is a difficult, if not impossible, problem if approached at the protocol translation level. Instead of attempting a protocol translation implementation this project would focus on using the web-based group chat widget that will be a part of Openfire and is currently in use
at Ignite Realtime. When a group chat invitation is sent to a non-XMPP contact through a gateway the gateway translates this request and instead sends a link to a web-based interface for the group chat room.
The goals for this project are to:
- Implement group chat (MUC) invitation translation in one of the gateways (MSN, AIM, or Yahoo) provided in Openfire
- Refine the web-based group chat widget so that the end-user experience is excellent
- Document the configuration of the components involved in the solution
6) G722 Codec for JMF
The G722 (wideband) codec is a high quality codec for voice applications that is gaining momentum – for example, it's supported in the latest version of Asterisk. This project's goal is to add G722 support to the Java Media Framework
in order to enable higher-quality Jingle calls. Deep understanding of JMF and audio codecs is required to make this a successful project.