Summer of Code 2008

From XMPP WIKI
Revision as of 20:41, 6 March 2008 by Stpeter (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

The XMPP Standards Foundation has applied to once again participate in the Google Summer of Code for 2008. We're using this page, the JDEV discussion list, and the jdev chatroom to talk about potential Summer of Code ideas. Also free free to chat with developers working on particular codebases.

Clients

Coccinella

Jingle video using iaxclient

  • Mentor: Mats Bengtsson
  • Programming language: C (knowledge of Tcl/Tk is a plus but not required!)

Project description

The goal is to integrate and implement the video part from the iaxclient project with Coccinella.

This project involves two distinct tasks:

  1. Write a Tcl/Tk widget integrating video from the iaxclient package. There already is a Tcl package available in Coccinella for iaxclient audio that can be reused.
  2. Include this video widget into Coccinella. A Tcl package supporting the Jingle protocol exists and is being used by the audio package.

Iaxclient as a cross-platform C library for unix-like systems, Windows, and Mac OS X. It is fairly high level and takes care of codecs, some negotiating, network, and grabbing. The work involves mainly C coding and some Tcl coding. Only C coding knowledge is required to participate. There already exist video widgets for Tk which can be used as templates (QuickTime and DirectShow). The student may pick any of the supported platforms for the work since all components are cross-platform.

Jingle file transfer

Project motivation

Transporting files from one user to another is plagued by NATs and firewalls. In ancient times a standard Tcp connection was all that was needed. Instead various application level protocols have been implemented on top of Udp which handles NATs much better. This "reinventing the wheel" by having to reimplement a kind of pseudo Tcp stack on top of Udp is a very unfortunate situation which lacks standardization.

Implementation

This projects aims to use Google gTalks Jingle implementation as a starting point. Ufortunately it is written in C++ and deeply tied into the application notifier system and therefore not reusable as is. Instead the task will be to use the Tcl Udp C code implementation, and essentially use gTalks PseudoTcp class as a wrapper. There are two possible options here: either do a pure Tcl script implementation of the tricks used in PseudoTcp, which I'm not sure is possible, or just translate the C++ class into C code and wrap up the tcludp package to a pseudo tcp (ptcp) command. This should work just like the standard Tcl socket command and should be able to use it transparently.

Jingle contains several parts but the actual jingle xmpp protocol stack is already running and used for voip. A limited STUN client has also been implemented in pure Tcl, but some support for the ICE protocol will likely be necessary.

Relevant XEP

an aquarium for kids

Project description

This project involves the creation of an interface for kids to Coccinella. You need to create a new roster style, the fishy roster style, with an aquarium containing fishes that represents the contacts (like ralphm's Jabber Aquarium). The fishes need to be be animated with User Mood. For example, when a contact is happy, the fish will swim quickly in the aquarium with a smile on his face. The graphics will be done in 2D, but when time allows, they can be made in 3D.

The programming tools will be Tcl/Tk and the tkpath graphics extension package [1] which provides high quality graphics on all platforms. There exists an albeit primitive SVG importer so the actual graphics elements can be obtained from a SVG drawing tool.

This project will involve mostly new code, and less boring code rewriting.

Servers

Components

Libraries

Other