[Gajim-devel] gsoc: file transfer over jinge

Zhenchao Li cockneykevin at gmail.com
Sat Mar 13 18:40:36 CET 2010

Hello everyone!

  I am a graduate student in China and I am very interested in implementing
file transfer over jingle for gajim. For the last month I've been exploring
gajim's source code, reading documentations about gajim's architecture,
reading xmpp's specifications on jingle and file
transfer(XEP-0096, XEP-0234, XEP-0166) and getting some hands-on experience
by trying to write a patch for a bug(#5614<http://trac.gajim.org/ticket/5614>).
So I want to share with you my thoughts here.

  Gajim already has the ability to handle jingle singaling thanks to gsoc
2007 student Tomasz Melcer. But over the last 2 years jingle itself has also
evolved. I will first check to see if our implementation of jingle has any
major incompatibility with the current jingle protocol.(I don't foresee a
lot of it because according to jingle's revision history many of them were
just clarifications). This shoudl take about 1 week.

  Next I will implement the actual file transfer feature using the jingle
infrastructure. The actual transfer will consist of several methods: socks5
bytestream, in-band bytestream and possibly ICE-TCP if time allows). I don't
think these are extremely difficult to implement once one of those transfer
methods is implemented. However I do foresee some issues concerning pausing,
canceling file transfer etc. But the basic functionality should be completed
in reasonable amount of time.(1  week for reading and understanding what I
must know, 2 - 3 weeks for coding) Once they are completed, through tests
should be conducted.

  I also want to add some additional features that might help to enhance
user experience:

  First: file transfer status in chat window. This has already been
discussed in #1205 <http://trac.gajim.org/ticket/1205>. Some for it some
against it. I think it's good to give users an option anyway, and it's
really a simple and useful way to track which file comes from which guy,
when you are receiving files from several friends. I do not intend to
implement a progress bar in chat window. A notice about the start, end of
the file transfer should be enough. Also the end of FT notice should contain
a link to the file. This feature will be optional, users against this will
be able to disable it. FT from users you are not chatting with does not open
a chat window. What about the current pop-up notice? Well, I think it just
feels better when you can focus your eyes around the chat window and know
everything that's happening between you and the guy you're talking to.
Suggestions welcomed about this!

  Second: drag and drop currently works perfectly, but sending of multiple
files are not supported. Users would typically archive the files or manually
send them one by one. This is not quite user friendly. I want to support
dragging a directory into gajim and letting gajim do the archiving stuff.
Also the description field will be populated with a list of files(possibly
incomplete due to the length of it). This idea is due to
I want to clarify that this is a user experience enhancement, so the user
should be noted that what the receiver gets is an archive of the directory
that he/she sends.

  If time allows I also want to add file encryption feature, which might be
as simple as key exchange and encryption using DES or AES. But I don't know
how to standardize this feature so it understood by all xmpp clients. I
appreciate any advice on this.

  A bit more about myself:
  I'm pursuing a master of science degree in Fudan University, Shanghai. I'm
comfortable with C, C++, perl. And I love Python and lisp! I have some basic
experience with the linux kernel, netsurf(a small web browser, I once
implemented "read page" feature for fun). I am a heavy user of all kinds of
open source softwares, I used to write webapps using django and wrote some
fun stuff in it, like sending SMS via my homepage(click and send sms to me)
etc. I primarily use python to solve all problems that I meet. It's my
language of choice.

  My name is Li Zhenchao .My jabber account is fantasticsid at jabber.com. I
have a blog: www.fantasticsid.com/blog (it's in Chinese but I will write in
English if I'm lucky enough to write reports on this year's gsoc project
later). You can contact me at cockneykevin at gmail.com or
fantasticsid at fantasticsid.com.

  Any advices, thoughts, suggestions, questions are welcomed!

  PS: After discussing my idea here, should I also present it to the XSF
mailing list?

Homepage:   www.fantasticsid.com
EMAIL:         fantasticsid at fantasticsid.com
IRC:             fantasticsid
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.lagaule.org/pipermail/gajim-devel/attachments/20100314/6baf9b1a/attachment.htm>

More information about the Gajim-devel mailing list