Summer of Code 2010 Project Ideas

Here are some project ideas for the XSF's involvement in GSoC 2010. Visit our Summer of Code 2010 page for information about applying.

High-Level Priorities
The high-level priorities for the XMPP community include the following (see also the XSF Roadmap)...

Jingle File Transfer
We are working to migrate from the old file transfer method XEP-0096 to a more robust method based on Jingle. The new Jingle-based method has been implemented in Pidgin but not yet in other clients. We'd love to see more implementations and get more deployment experience with this method so that we can correct and advance the relevant specs, which are:


 * XEP-0234: Jingle File Transfer
 * XEP-0047: In-Band Bytestreams
 * XEP-0065: SOCKS5 Bytestreams
 * XEP-0260: Jingle SOCKS5 Bytestreams Transport Method
 * XEP-0261: Jingle In-Band Bytestreams Transport Method

Reliability Improvements
The XSF has defined two specifications that make XMPP communication more reliable: Stream Management and Message Receipts. We won't know if these technologies solve the problem until we have more implementation and deployment experience, so we need to get busy coding.

I (MattJ) have some server-side code for XEP-0198 (Stream Management) in Prosody, and am willing (and very interested) to work with someone adding support to a client so we can get a pair of interoperable implementations going this summer.

Mobile Optimizations
As with reliable communication, the XSF is actively working on optimizations for mobile environments. The two most relevant specifications are Roster Versioning and SIFT. Here again we're looking for more implementation and deployment experience.

Stronger Security
Information security is a never-ending, multi-faceted challenge. Some relevant technologies in the XMPP community are:


 * CAPTCHA Forms
 * Entity Reputation
 * Incident Reporting

In addition, we have several competing proposals for end-to-end encryption but they are fairly experimental.


 * XTLS
 * AES

XMPP for the social web
Proposer: Kevin Smith Difficulty: Variable (scope can be agreed during applications) Student requirements: Competent development skills, self-drive, ideas. There are many many websites that involve a social component. This is typically some sort of list of friends, a way to exchange messages, a way to expose information about yourself, and general information feeds. These are all functions that XMPP natively supports very well (the XMPP Roster, Message stanzas, PEP, PubSub etc.). XMPP also has a feature that most of these sites do not - it federates, so you can talk to and friend people on any server. Wouldn't it be great if you could take your friends list with you between sites? So the friends you chat with in your chat client are the same friends you share photos with on a photo stream site, share your thoughts with on microblogging platforms, play games with etc. Wouldn't it be great if when you signed up to a new social-flavoured site, it could pull that in for you? This project is an open-ended attempt to set up a framework that allows social websites to get 'for free' all the flavour of a user's contact list, and the sharing available there, and a simple demo site that uses these features, where XMPP is the back-end and the data-store, and all sites can federate.

Gajim
Gajim is a full-featured and easy to use Jabber client. It is written in Python, uses GTK and integrates well with the GNOME desktop environment (but does not depend on it).

Ideas

 * XEP-0234: Jingle File Transfer
 * XEP-0198: Stream Management
 * You can visit Gajim's wiki.

Prosody
Prosody is a lightweight XMPP server written in Lua. It is designed to be modular and easily extensible via Lua plugins.

Ideas

 * The Prosody community had a bit of a brainstorming session and came up with some fun project ideas

jabberd2
jabberd2.x project is the next generation of the jabberd project. It has been rewritten from the ground up to be scalable, architecturally sound and to support the latest protocol extensions coming out of the XSF. jabberd2 is written in C.

Ideas

 * XEP-0060: Publish-Subscribe
 * XEP-0163: Personal Eventing Protocol
 * XEP-0136: Message Archiving