Differences between revisions 3 and 4
Revision 3 as of 2009-04-22 14:50:25
Size: 6512
Editor: chello089077067090
Revision 4 as of 2009-09-20 23:36:36
Size: 6514
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 8: Line 8:
|| hosted on GSoC || [http://socghop.appspot.com/student_proposal/show/google/gsoc2009/jjroman/t123807236483 "My app"]|| || hosted on GSoC || [[http://socghop.appspot.com/student_proposal/show/google/gsoc2009/jjroman/t123807236483|"My app"]]||

Google Summer of Code 2009 – Project proposal

Subject ID

own idea


Implement the Publish-Subscribe support in Vysper XMPP server


Jan Jakub Roman



hosted on GSoC

"My app"

Project Description

I would like to add support to publish-subscribe protocol for Vysper project. Server currently have no support for this. Pubsub protocol is described in XEP-0060 and is part of XMPP standard. XMPP is widely known as Jabber(it is exactly subset of standard). My ultimate goal is to create a full implementation of features described in pubsub extension. This will be module of existing XMPP server.

Main benefit for the project will be support of new extension for popular XMPP standard. Vysper will become more complex tool. There is only a few server applications supporting pubsub protocol. This powerful and complex XMPP extension has great abilities of design new services. Those services will be accessible by the XMPP account e.g. users can reuse their Jabber account to subscribe news from some web.

Detailed Description

In past few days i done some research and get many information about my case. I get knowledge about possibilities provided by pubsub service and requirements for implementation of server. I have already clear overall approach about this module implementation and integration to existing server.

Protocol and features i would like to add.

  1. Existing code

There will not many changes in existing code it is very modular and well premeditated. My extension will have to use some of existing modules:

  • Disco for add needed types of stanza to discovery service.
  • Stanza processor for creating 'raw' XMPP communication.
  • Authorization - In current stage this is very poor module. However it is possible to reuse it for working with pubsub. There should be a authorization by specific node implemented.
  • Addressing module support all needed features.
  • Resource Binding it is hard to say at now is it suitable for pubsub but node authorization module will be very depended on this class.
  1. The module

Main aim is to implement all features of publish subscribe XMPP protocol. It is defined in XEP-0060 document. This service is also called pubsub.

All communication server-server and user-server is done using XMPP protocol. It means that users can reuse their jabber accounts for using pubsub services. This provide idea of one account suitable for many services.

The protocol allow to create services where people spread records. Records are organized in nodes. Nodes can be recursive. Each node can be subscribed or published independent. For example you may subscribe all web(as a main node) or only one node (part) of it. There is possibility of creating services like ATOM or RSS but pubsub allow publisher to update once sent records and even delete them.

XEP-0060 Standard describes also some kind of access control. There are 5 level of authorization. My module should provide extension for authorizing mechanism to check users permission on current node. Each node has many configuration options as max capacity or privileges of publishers. That can be also defined what to do if there are no room in node. Of course, It is only a small piece of available options described in standard.

Existing Solutions

There are at least 2 existing solutions for server and one for client of pubsub. I going to use it for testing and debugging. Maybe it will be necessary to get knowledge about architecture of this solutions. They are open source so it will not be a problem.

  1. Tigasse - open source XMPP server which provide pubsub service as a extension.
  2. eJabberd - open source XMPP server with pubsub module
  3. Tkabber - open source pubsub client

Work Organization

First of all I will get good knowledge about necessary documentation. As i just realized they are at lest: RFC 3920, RFC3921, XEP-0060, XEP-0030 maybe also: XEP-0163. This knowledge let me create better schedule of work. So it will be next step. Unfortunately my classes at university ends 30st of June. Before this date I will treat GSoC as a half-time job. But I starts on 1st July I will full focused on working at Vysper and treat it as a full-time job or even more seriously.

Vague Schedule

Week number


minimum working hours per week

Description of work

-5th to 0

April 20 - May 23


I would expand my knowledge of necessary documents at least about: XEP-0060, XEP-0030, RFC3920, RFC3921. Maybe do some work in advance.


May 23 – May 29


I would like to finish: design classes schema, specify requirements and goals, distribute tasks to classes and write description each of them. Update schedule if necessary.

2nd - 5th

May 30 - June 26


Start coding ...

6th - 8th

June 27 - July 10


Interim Period. At this time I wish to finish implementation node management. Finish means all dependencies as access control, store engine etc...

9th - 12th

July 11 - August 7


finish implementation of 'subscribe'

13th and half of 14th

August 8 - August 16


Program ends. Make tests, fix bugs, edit and improve documentation.

Extra goals if there was any time left:

  • To add XEP-0163 Personal Eventing Protocol which is connected with Instant Messenger and pubsub.
  • Add support to pubsub for BasicClient.

Additional Information:

Why I apply to Vysper

  • I am interesting in Internet protocols.
  • Project seems to me to be prospective.
  • I want to improve Java skills.
  • I prefer to create new things instead support old ones, wrote by strangers.

Why you should let me in.

  • I always was interested in Instant messengers so i joined similar open source project. Work with it give me some experience with working as a part of project and also with XMPP protocol.
  • I have quite big experience in XML, XSD, XPATH and similar standards.
  • I am keen on open source.
  • I learn quick.
  • This is my first time in GSoC so I would like to show oneself in the best light.
  • I am a totally Internet geek.

soc2009-pubsub-proposal (last edited 2009-09-20 23:36:36 by localhost)