Changes

Jump to navigation Jump to search
5,012 bytes added ,  14:13, 6 March 2007
The XMPP Standards Foundation will almost certainly participate in Google's Summer of Code project for 2007. This year we will do things a little differently. In particular, we want to recruit mentors ahead of time and have the mentors define project ideas that students can work on. This is similar to a "Request for Proposal" process, with the mentors being the people who will define the RFPs and interview the students. If you are interested in becoming a mentor, please contact Peter Saint-Andre.
Here are the project ideas that were suggested for the [http://code.google.com/soc/ Summer of Code 2007] ...

== Client ==

=== Coccinella: Jingle file transfer ===

* Mentor: [http://hem.fyristorg.com/matben/ Mats Bengtsson]
* Programming language: C/C++ and/or Tcl

==== 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 pur 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 XEPs ====

*[http://www.xmpp.org/extensions/xep-0166.html Jingle]
*[http://www.xmpp.org/extensions/xep-0176.html Jingle ICE Transport]
*[http://www.xmpp.org/extensions/xep-0177.html Jingle Raw UDP Transport]

There seems to be a XEP in the works that actually describes the topmost file transfer protocol.

=== Coccinella: an aquarium for kids ===

* Mentor: [http://hem.fyristorg.com/matben/ Mats Bengtsson]
* Programming language: Tcl/Tk
* Coolness factor: high

==== 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 [http://ralphm.net/ ralphm's Jabber Aquarium]). The fishes need to be be animated with [http://www.jabber.org/jeps/jep-0107.html 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 [http://tclbitprint.sf.net/] 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.

==== Relevant XEPs ====

*[http://www.xmpp.org/extensions/xep-0107.html User Mood]
*[http://www.xmpp.org/extensions/xep-0108.html User Activity]
*[http://www.xmpp.org/extensions/xep-0163.html Personal Eventing via Pubsub]

== Server ==

[http://www.process-one.net/ Process-one] will propose mentors for ejabberd related projects. We will also suggest project ideas. In the meantime, feel free to suggest your own project ideas.

== General ==
=== XEP-0033 support ===
[http://www.xmpp.org/extensions/xep-0033.html XEP-0033] is a XMPP extension which can save a lot S2S (Server to Server) traffic and let you easily send messages to more than one contact, even with cc and bcc recipients you used to know from electronic mail. The XEP hasn't changed since 2004 but there are only some implementations at the moment. So your project could be to add support for XEP-0033 to your open source server of choice. If that isn't enough some servers, e.g. eJabberd, have own components for PubSub and MUC so if adding XEP-0033 support to those servers it should be easy for you to add support to the included components too.

=== X-Data framework ===
build a [http://www.xmpp.org/extensions/xep-0004.html X-Data] framework consisting of:
* Visual X-Data forms editor
* application to send forms to entities, analyze and store the submitted results
* X-Data client, plugin to an existing client (PSI) or standalone application

== Library ==
== Component ==
5

edits

Navigation menu