Thursday, November 15, 2012

Yet another file sharing xep proposal

Thanks to Matthew for uploading it and converting it to html:

A prototype implementation of this is located in Gajim's plugin repository.

Saturday, October 6, 2012

Progress Report

My plan was the following:

  1. Have Jingle File Transfer stable in Gajim
  2. Implement Jingle File request in Gajim
  3. Write a Gajim plugin which implements a new XEP to share information of file and allow them to be requested by using Jingle File Request
  4. Send the new XEP to the XSF so that it can become a standard

Almost everything is done. 1 and 2 are 99% finished  and the plugin is almost usable.

It can share the directory tree structure to another peer who has the permissions to view your shared files. But it can't download them, I'm still working on that.

No pictures to share (the interface is a prototype anyways). But you can download the source from

Thursday, April 12, 2012

JingleFT in main branch

Jingle file transfer has finally been merged into Gajim's default branch. Feel free to check it out, and report any bugs you find.

EDIT: Actually it is not yet merged right now, give it one week.

Saturday, February 11, 2012


I'm still working on jingleFT for Gajim (not much progress there). The changes for xep-135 (no progress at all there). A secret project involving i2p (I don't talk about projects before having done a beta. No much progress there either).

The jingleFT branch of Gajim does need some refactoring. I made a state diagram of the file transfer, and it looks awful.

Clearly there are unnecessary states like transport info and proxy activated. The events are somewhat ambiguous, and the states accepted and initialized should be merged into one.

I'll fix it. See if I can shake off being so stalled.

Monday, January 16, 2012

Getting into I2P

For a long time I have heard of I2P and I thought it was a good idea, but never actually tried to install it. Today I installed I2P and I have to say that I'm amazed by it. I was expecting a barely functioning app, very slow response times and crappy ported apps running on top of it. I was wrong.

The I2P router console is simply great. It include many apps, such as its own web, email and BitTorrent servers. I'm not very good at describing stuff, and reading about it's probably too dry. I would recommend anybody to try it first if they are interested. It is like discovering a new internet inside of the internet.

It is true that it lacks a lot of services, and that's why I want to know more about developing apps for I2P.

Saturday, December 31, 2011

Jingle Bells, Jingle all the way

What have I been doing? I used the holidays to finally get some work done in the jingle_FT branch of gajim. It's progressing just fine. I would hope that before my vacations ends it will be stable enough to be merged into the main branch.

It would be a really good help if you check out the branch and report some bugs.

It is easy to do just follow these steps:

1- Check out the latest jingleFT branch

hg clone gajim

cd gajim

hg update jingleFT

2- Report any bugs you find.

Go to

Sunday, November 27, 2011

Proposed changes to XEP-0135

Hi, I been working on some changes to XEP-0135.

* Replacing SI file transfer with jingle FT

* Replacing section 6, with a link pointing to section 5 of XEP-0234,
which already covers the same function.

* Adding support for pubsub, only for finding files using the method I
introduce bellow. It doesn't make much sense to traverse the directory
of every user subscribed to a pubsub, but it will make a lot of sense
searching for specific files. (XEP-0137 does not suffice for this)

For example:

A user is subscribed to the books pubsub channel. It sends a query,
looking for a book "Romeo and Juliet - By Shakespeare". The
subscribers reply if they get a match with information about their
files. The initiator requests the file from whoever has what he wants
and file transfer starts.

* A new section should be added to cover finding files by providing a
criteria, instead of just asking for all the files.

For example:

5.5 Finding Specific Files

Finding files by asking for a file list is not very practical if there
are too many files being shared. It is very resource intensive and it
is understood that the user may not be interested in all of the files,
but rather he or she would be interested in finding one specific file
or one specific kind of file (text, image or videos).

In order to do this, the identity stanza is used to match files by one
or more fields i.e. 'name', 'date', 'size', etc...

Example XX. Finding Specific Files

<iq type='get'

    from='hag66 at shakespeare.lit/pda'

    to='darkcave at shakespeare.lit'


<query xmlns=''


<identity category='filesys' type='file' name='file1' />



The fields in the identity stanza, are optional, but at least one
field MUST be provided. In this example, the responders will match its
files looking for the file names that contain 'file1' and are of the
size 1024..

Example XX. Returning with Matched Files

<iq type='result'

    from='darkcave at macbeth.shakespeare.lit'

    to='hag66 at shakespeare.lit/pda'


<query xmlns=''


<identity category='filesys' type='file' name='file1'




A responding entity MUST include the name and the hash of the file.
Since more than one responder may respond with the same file, it is
strongly suggested that the initiator makes use of ranged file
transfers (as defined in XEP-0234), to speed up the file transfer.

Example XX. Finding files using Regular Expressions

Regular expressions may be use to find files that match the
expression. One or more fields can be used. The label attribute is

<iq type='get'

from='hag66 at shakespeare.lit/pda'

    to='darkcave at shakespeare.lit'


<query xmlns=''


<identity category='filesys' type='file' name='file1'/>

<x xmlns='jabber:x:data' type='get'>

<field var='ssn' type='text-single' label='Social Security Number'>





The XML character data of this element is the pattern to apply. The
syntax of this content MUST be that defined for POSIX extended regular
expressions, including support for Unicode.

The element MUST contain character data only (i.e., not
contain any child elements) and MUST NOT possess any attributes.

Any feedback would be greatly appreciated, I just want to know if I am
on the right track here.