GSoC/GCI Archive
Google Summer of Code 2011

XMPP Standards Foundation

Web Page:

Mailing List:

The XMPP Standards Foundation (formerly the Jabber Software Foundation) is an independent, nonprofit standards development organization whose primary mission is to define open protocols for presence, instant messaging, and real-time communication and collaboration on top of the IETF's Extensible Messaging and Presence Protocol (XMPP). The XSF also provides information and infrastructure to the worldwide community of Jabber/XMPP developers, service providers, and end users.

As a GSoC org, we're happy to mentor projects on most of the mainstream XMPP chat clients, servers, libraries, bots and other parts of the XMPP infrastructure.

Currently, Melange's interface doesn't allow non-IRC chatroom links - our main room is


  • Implementing Jingle Relay Nodes, STUN support and CAPTCHA plugin in prosody. The goal of my project will be to implement STUN (Session Traversal Utilities for NAT) support and Jingle Relay Nodes as a module in prosody. These modules will help admins to set up Jingle Relay Nodes and STUN on their servers with ease. I would also add CAPTCHA support which will have to be validated before entering a MUC room or before registering an account.
  • Jingle based File-Transfer Support in Swift(-en) This project is about implementing file transfer related protocol extensions in Swift and Swiften. This includes, but isn't limited to, XEP-0166, XEP-234, XEP-260, XEP-261, ICE and STUN. The aim is to have easily usable working file-transfers.
  • Pub-sub search engine and crawler The main goal of this project is to build a distributed directory service that would run as an XMPP component. That would enable users to easily find interesting content on pub-sub nodes in the XMPP space.
  • Stream Management I will be implementing Stream Management (XEP-198) in Gajim. The idea behind Stream Management is to keep track of the messages that are being sent and received by each of the communicating entities. If the connection is lost while the conversation is taking place, then by knowing which messages were handled, it is possible to recover the lost messages and resend those that were not delivered.