Difference between revisions of "Psi JFT"

From XMPP WIKI
Jump to navigation Jump to search
m (s/Trasnfer/Transfer)
 
m
 
(40 intermediate revisions by the same user not shown)
Line 3: Line 3:
== Overview ==
== Overview ==


[http://www.jabber.org/jeps/jep-0166.html Jingle] File Transfer is a [http://www.google.com Google] [http://code.google.com/soc Summer of Code 2006] project for [http://www.jabber.org Jabber] and [http://www.psi-im.org Psi] been developed by [[User:Murilo|Murilo Belluzzo]]. You can access other students' projects [[Summer of Code 2006|here]].
[https://xmpp.org/extensions/xep-0166.html Jingle] File Transfer is a [http://www.google.com Google] [http://code.google.com/soc Summer of Code 2006] project for [https://xmpp.org XMPP] and [http://www.psi-im.org Psi] been developed by [[User:Murilo|Murilo Belluzzo]]. You can access other students' projects [[Summer of Code 2006|here]].


The objective is to implement the File Transfer system as a media session for Jingle since the manner in which p2p connections are established (even with [http://en.wikipedia.org/wiki/Firewall_(networking) Firewalls] and [http://en.wikipedia.org/wiki/Network_address_translation NAT devices] involved) is one of the main reasons for its success and also makes it relatively easy to implement any kind of media session.
The objective is to implement the File Transfer system as a media session for Jingle since the manner in which p2p connections are established (even with [http://en.wikipedia.org/wiki/Firewall_(networking) Firewalls] and [http://en.wikipedia.org/wiki/Network_address_translation NAT devices] involved) is one of the main reasons for its success and also makes it relatively easy to implement any kind of media session.
Line 10: Line 10:


== Releases ==
== Releases ==
Darcs patchs:


== Progress ==
[http://www.fee.unicamp.br/~belluzzo/20060821035414-71e84-933897e2869c7471e5454a5a6492c67d27176e87.gz New files]
''I copied this from [[User:Kevin|Kevin]]''


=== Week 1 and 2 ===
[http://www.fee.unicamp.br/~belluzzo/20060821042041-71e84-8a1eee2bdcd1f5595292d342e0c037ba8eb54e64.gz Psi Adaptation]


====(24th - 31st May)====
Project on Google Hosting:


This week was dificult because of google delays and a big exam that I had. I also had some problems with qca-beta2 but Kevin help me. I began to study the code of the libs involved and Psi between one exam and other. I still have to check somethings with more calm but isn't much.
[http://code.google.com/p/psi-jft/ Psi-JFT]
 
* Install Darcs - done;
 
* Contact the other Jabber students - done;
 
* Contact Psi project leader (Kevin) - done;
 
* Checkout ejabberd and start a server - postponed;
 
* Checkout Psi - done;
 
* Install necessary libs (ortp, speex, qt-4.1.2 and qca) - done;
 
* How to make a good use of darcs - done (but do not put in practice yet :( );
 
* Psi code conventions - done;
 
* Contact my mentor - done;
 
* Google Burocracy days;
 
====(1st - 3th June)====
 
At this point I have a real overview of the project in my mind. I hope to put this in a diagram or something like this if I to conclude its necessary just to help me through the project and start write the code (Yeah I'm late but isn't fair to compair us to Kevin! He know the hole project with closed eyes !! :P ).
 
* 1sh - Google Last Burocracy day;
 
* To study LibJingle - 40%;
 
* To study Psi source - 50%;
 
* To study JEP-0166 - 50%;
 
* Design fase begin - 10%;
 
* Start to do some code finally ! I was getting bored! - 0%;
 
* To study JEP-0176, 0177 and 0179 just to clarify somethings - 0%;
 
=== Week 3 (4 - 10 June)===


== Original Project Proposal ==
== Original Project Proposal ==
Line 68: Line 28:
'''Synopsis'''
'''Synopsis'''


The objective of this project is to help the Jabber team in finishing a JEP that defines a media description format for Jingle File Transfer sessions and, as soon as this JEP is released, write a module that implements this functionality for the Psi client.
The objective of this project is to help the XMPP team in finishing a XEP that defines a media description format for Jingle File Transfer sessions and, as soon as this XEP is released, write a module that implements this functionality for the Psi client.


As the manner of establishing p2p connections is one of the main reasons for Jingle's success, having a File Transfer system based in it would have a much better result in comparison with the methods used nowadays.
As the manner of establishing p2p connections is one of the main reasons for Jingle's success, having a File Transfer system based in it would have a much better result in comparison with the methods used nowadays.
Line 75: Line 35:
'''Benefits to Community:'''
'''Benefits to Community:'''


* Define a good and modern standard for file transfer sessions will allow for all Jabber users to get use of this service from any IM Client they choose;
* Define a good and modern standard for file transfer sessions will allow for all XMPP users to get use of this service from any IM Client they choose;


* Improvement of the file transfer system of Jabber protocol;
* Improvement of the file transfer system of XMPP protocol;


* Bitrate improvements on file transfers for users behind NAT/Firewall, because they will be able to transfer data through direct connections instead of connections intermediated by a server;
* Bitrate improvements on file transfers for users behind NAT/Firewall, because they will be able to transfer data through direct connections instead of connections intermediated by a server;
Line 86: Line 46:
'''Deliverables:'''
'''Deliverables:'''


* A JEP that defines a media description format for Jingle File Transfer sessions;
* A XEP that defines a media description format for Jingle File Transfer sessions;


* A module implementing the Jingle File Transfer functionality for Psi;
* A module implementing the Jingle File Transfer functionality for Psi;
Line 95: Line 55:
'''Project Details:'''
'''Project Details:'''


Currently, the defined methods for file transfers in the Jabber protocol weren't widely-adopted by Jabber/XMPP clients. Each one has either their own implementation or no implementation at all, which made file transfer very dependent on the client used on both sides.
Currently, the defined methods for file transfers in the XMPP protocol weren't widely-adopted by XMPP clients. Each one has either their own implementation or no implementation at all, which made file transfer very dependent on the client used on both sides.


With Jingle offering a standard for initiating and managing peer-to-peer sessions, in order to serve as a base for all bytestream-based services, nothing more logical than using it to define File Transfers in the same way that is being done with Audio and Video, making it easier to implement by other clients.
With Jingle offering a standard for initiating and managing peer-to-peer sessions, in order to serve as a base for all bytestream-based services, nothing more logical than using it to define File Transfers in the same way that is being done with Audio and Video, making it easier to implement by other clients.


The JEP that defines this has already been started by the Jabber team, so I would be working with them to help finish it (with a prototype implementation to help with testing) and afterwards implement a reference module for Psi.
The XEP that defines this has already been started by the XMPP team, so I would be working with them to help finish it (with a prototype implementation to help with testing) and afterwards implement a reference module for Psi.


My motivation for this project is quite strong : I'm behind a NAT/Firewall and I can't make efficient file transfers on any IM clients, so I would be really glad to solve this problem.
My motivation for this project is quite strong : I'm behind a NAT/Firewall and I can't make efficient file transfers on any IM clients, so I would be really glad to solve this problem.
Line 112: Line 72:


- 0.0.1 - Work in the protocol:
- 0.0.1 - Work in the protocol:
- Start working at the protocol definition with the responsible group at Jabber;
- Start working at the protocol definition with the responsible group at XMPP;
- Implement a prototype to help with the validation of the JEP;
- Implement a prototype to help with the validation of the XEP;


- 0.0.2 - Implement the Protocol:
- 0.0.2 - Implement the Protocol:
(As soon as the JEP concerning to the Jingle File Transfer is released)
(As soon as the XEP concerning to the Jingle File Transfer is released)
- Start the definitive implementation using Psi;
- Start the definitive implementation using Psi;


Line 138: Line 98:
[http://psi-im.org/ Psi]
[http://psi-im.org/ Psi]


[http://www.jabber.org/jeps/jep-0166.html JEP-0166 (Jingle)]
[http://xmpp.org/extensions/xep-0166.html XEP-0166: Jingle]


[http://code.google.com/apis/talk/index.html LibJingle]
[http://code.google.com/apis/talk/libjingle/ libjingle]


[http://ejabberd.jabber.ru/ Ejabberd]
[http://ejabberd.jabber.ru/ ejabberd]


[http://www.students.ic.unicamp.br/~ra016971/application-jft-jabber.txt My application]
[http://www.students.ic.unicamp.br/~ra016971/application-jft-jabber.txt My application]
[[Category:Summer of Code 2006]]

Latest revision as of 02:00, 17 December 2020

Jingle File Transfer for Psi

Overview

Jingle File Transfer is a Google Summer of Code 2006 project for XMPP and Psi been developed by Murilo Belluzzo. You can access other students' projects here.

The objective is to implement the File Transfer system as a media session for Jingle since the manner in which p2p connections are established (even with Firewalls and NAT devices involved) is one of the main reasons for its success and also makes it relatively easy to implement any kind of media session.

Expecting to achieve an efficient file transfer system, mainly for users behind Firewall/NAT that currently transfer files through a server which causes low transfer rates.

Releases

Darcs patchs:

New files

Psi Adaptation

Project on Google Hosting:

Psi-JFT

Original Project Proposal

Summer of Code 2006 Project Proposal for Jabber Software Foundation

(Personal info removed)


Synopsis

The objective of this project is to help the XMPP team in finishing a XEP that defines a media description format for Jingle File Transfer sessions and, as soon as this XEP is released, write a module that implements this functionality for the Psi client.

As the manner of establishing p2p connections is one of the main reasons for Jingle's success, having a File Transfer system based in it would have a much better result in comparison with the methods used nowadays.


Benefits to Community:

  • Define a good and modern standard for file transfer sessions will allow for all XMPP users to get use of this service from any IM Client they choose;
  • Improvement of the file transfer system of XMPP protocol;
  • Bitrate improvements on file transfers for users behind NAT/Firewall, because they will be able to transfer data through direct connections instead of connections intermediated by a server;
  • The increased number of successful p2p connections will reduce server's overload.


Deliverables:

  • A XEP that defines a media description format for Jingle File Transfer sessions;
  • A module implementing the Jingle File Transfer functionality for Psi;
  • Documentation for future maintenance and improvement the code;


Project Details:

Currently, the defined methods for file transfers in the XMPP protocol weren't widely-adopted by XMPP clients. Each one has either their own implementation or no implementation at all, which made file transfer very dependent on the client used on both sides.

With Jingle offering a standard for initiating and managing peer-to-peer sessions, in order to serve as a base for all bytestream-based services, nothing more logical than using it to define File Transfers in the same way that is being done with Audio and Video, making it easier to implement by other clients.

The XEP that defines this has already been started by the XMPP team, so I would be working with them to help finish it (with a prototype implementation to help with testing) and afterwards implement a reference module for Psi.

My motivation for this project is quite strong : I'm behind a NAT/Firewall and I can't make efficient file transfers on any IM clients, so I would be really glad to solve this problem.

In order to achieve this, the following milestones are set up:

- 0.0.0 - Preparation: - Get in contact with Peter-StPeter of Jabber Software Foundation; - Get in contact with the Psi responsible; - Gather all the available documentation; - Update all my knowledge about the current status of the work;

- 0.0.1 - Work in the protocol: - Start working at the protocol definition with the responsible group at XMPP; - Implement a prototype to help with the validation of the XEP;

- 0.0.2 - Implement the Protocol: (As soon as the XEP concerning to the Jingle File Transfer is released) - Start the definitive implementation using Psi;

- 0.1.0 - First Prototype: - Write the module that implements the Jingle File Transfer functionality for Psi; - Design Test Cases;

- 0.1.1 - Test Phase: - Test the module as much as possible; - Fix all bugs founded;

- 0.2.0 - Beta Release: - Module with a good maturity level and ready to be tested by the community; - Fix all remaining bugs;

- 1.0.0 - Finished: - Jingle File transfer module ready to be merged with the Psi main tree; - End of the summer of code project;

References

Psi

XEP-0166: Jingle

libjingle

ejabberd

My application