Changes

Jump to navigation Jump to search
122 bytes added ,  23:53, 27 January 2010
m
no edit summary
Line 1: Line 1: −
The [http://www.xmpp.org/ XMPP Standards Foundation] has once again been accepted to participate in the [http://code.google.com/soc/2008/ Google Summer of Code] for 2008. We're using this page, the [http://mail.jabber.org/mailman/listinfo/jdev JDEV discussion list], and the [xmpp:jdev@conference.jabber.org?join jdev chatroom] to talk about potential Summer of Code ideas. Also free free to chat with developers working on particular codebases.
+
The [http://xmpp.org/ XMPP Standards Foundation] has once again been accepted to participate in the [http://code.google.com/soc/2008/ Google Summer of Code] for 2008. We're using this page, the [http://mail.jabber.org/mailman/listinfo/jdev JDEV discussion list], and the [xmpp:jdev@conference.jabber.org?join jdev chatroom] to talk about potential Summer of Code ideas. Also free free to chat with developers working on particular codebases.
    
= Introduction =
 
= Introduction =
   
XMPP is the Extensible Messaging and Presence Protocol, an XML wire protocol for real-time communication that emerged from the [http://www.jabber.org/ Jabber] open-source community. Our community is not a traditional open-source project because it is not focused on a single codebase. Instead, our community is centered around open standards and open protocols. However, even though there are closed-source implementations of XMPP, we still have a strong commitment to open code and there are many free and open-source projects in our community.
 
XMPP is the Extensible Messaging and Presence Protocol, an XML wire protocol for real-time communication that emerged from the [http://www.jabber.org/ Jabber] open-source community. Our community is not a traditional open-source project because it is not focused on a single codebase. Instead, our community is centered around open standards and open protocols. However, even though there are closed-source implementations of XMPP, we still have a strong commitment to open code and there are many free and open-source projects in our community.
    
We have participated in the Summer of Code since its inception and have learned many lessons, among them:
 
We have participated in the Summer of Code since its inception and have learned many lessons, among them:
   
* We try to choose half a dozen excellent projects and really focus on them.
 
* We try to choose half a dozen excellent projects and really focus on them.
 
* It is difficult to choose excellent projects, so the more helpful information you can provide, the better.
 
* It is difficult to choose excellent projects, so the more helpful information you can provide, the better.
Line 13: Line 11:  
* We take the Summer of Code very seriously and we expect our students to treat it like a full-time job.
 
* We take the Summer of Code very seriously and we expect our students to treat it like a full-time job.
   −
This page lists some potential project ideas that students can work on. This is similar to a "Request for Proposal" process for your summer job. The mentors and other project members have defined these RFPs as a way to help structure the summer work. Many of these projects are are relevant to our overall community [http://www.xmpp.org/xsf/roadmap.shtml roadmap]. A select team of longtime XMPP developers and former mentors will review all the student proposals and "interview" many of the students so that we can make the best possible choices.
+
This page lists some potential project ideas that students can work on. This is similar to a "Request for Proposal" process for your summer job. The mentors and other project members have defined these RFPs as a way to help structure the summer work. Many of these projects are are relevant to our overall community [http://xmpp.org/xsf/roadmap.shtml roadmap]. A select team of longtime XMPP developers and former mentors will review all the student proposals and "interview" many of the students so that we can make the best possible choices.
    
If you have any questions about the XSF's involvement with the Google Summer of Code, please contact [https://stpeter.im/?page_id=1968 Peter Saint-Andre] via email or (preferably) IM.
 
If you have any questions about the XSF's involvement with the Google Summer of Code, please contact [https://stpeter.im/?page_id=1968 Peter Saint-Andre] via email or (preferably) IM.
Line 20: Line 18:     
=How to Apply=
 
=How to Apply=
   
Application instructions are available at the main GSoC site -- see [http://groups.google.com/group/google-summer-of-code-announce/web/guide-to-the-gsoc-web-app-for-student-applicants here].
 
Application instructions are available at the main GSoC site -- see [http://groups.google.com/group/google-summer-of-code-announce/web/guide-to-the-gsoc-web-app-for-student-applicants here].
    
Here is what you should include:
 
Here is what you should include:
   
* Some details about you (what code languages you like, what programming courses you've taken, etc.)
 
* Some details about you (what code languages you like, what programming courses you've taken, etc.)
   
* Results of your preliminary research into the protocols and codebases you might work on
 
* Results of your preliminary research into the protocols and codebases you might work on
   
* Your ideas about how to approach the project, including an outline of what work you think is required, a rough timeline of the work, etc.
 
* Your ideas about how to approach the project, including an outline of what work you think is required, a rough timeline of the work, etc.
   
* Possible problems you think you may face
 
* Possible problems you think you may face
   Line 38: Line 31:  
== Coccinella ==
 
== Coccinella ==
 
=== Jingle video using iaxclient ===
 
=== Jingle video using iaxclient ===
   
* Proposed Mentor: [http://coccinella.im/matben Mats Bengtsson]
 
* Proposed Mentor: [http://coccinella.im/matben Mats Bengtsson]
 
* Programming language: C (knowledge of Tcl/Tk is a plus but '''not''' required!)
 
* Programming language: C (knowledge of Tcl/Tk is a plus but '''not''' required!)
    
==== Project description ====
 
==== Project description ====
   
The goal is to integrate and implement the video part from the [http://iaxclient.sf.net/ iaxclient] project with [http://coccinella.im/ Coccinella].
 
The goal is to integrate and implement the video part from the [http://iaxclient.sf.net/ iaxclient] project with [http://coccinella.im/ Coccinella].
    
This project involves two distinct tasks:
 
This project involves two distinct tasks:
   
# Write a Tcl/Tk widget integrating video from the iaxclient package. There already is a Tcl package available in Coccinella for iaxclient audio that can be reused.
 
# Write a Tcl/Tk widget integrating video from the iaxclient package. There already is a Tcl package available in Coccinella for iaxclient audio that can be reused.
 
# Include this video widget into Coccinella. A Tcl package supporting the Jingle protocol exists and is being used by the audio package.
 
# Include this video widget into Coccinella. A Tcl package supporting the Jingle protocol exists and is being used by the audio package.
Line 54: Line 44:     
=== Jingle file transfer ===
 
=== Jingle file transfer ===
   
* Proposed Mentor: [http://coccinella.im/matben Mats Bengtsson]
 
* Proposed Mentor: [http://coccinella.im/matben Mats Bengtsson]
 
* Programming language: C/C++ and/or Tcl
 
* Programming language: C/C++ and/or Tcl
    
==== Project motivation ====
 
==== Project motivation ====
   
Transporting files from one user to another is plagued by NATs and firewalls. In ancient times a standard Tcp connection was all that was needed. Instead various application level protocols have been implemented on top of Udp which handles NATs much better. This "reinventing the wheel" by having to reimplement a kind of pseudo Tcp stack on top of Udp is a very unfortunate situation which lacks standardization.
 
Transporting files from one user to another is plagued by NATs and firewalls. In ancient times a standard Tcp connection was all that was needed. Instead various application level protocols have been implemented on top of Udp which handles NATs much better. This "reinventing the wheel" by having to reimplement a kind of pseudo Tcp stack on top of Udp is a very unfortunate situation which lacks standardization.
    
==== Implementation ====
 
==== Implementation ====
   
This projects aims to use Google gTalks Jingle implementation as a starting point. Ufortunately it is written in C++ and deeply tied into the application notifier system and therefore not reusable as is. Instead the task will be to use the Tcl Udp C code implementation, and essentially use gTalks PseudoTcp class as a wrapper. There are two possible options here: either do a pure Tcl script implementation of the tricks used in PseudoTcp, which I'm not sure is possible, or just translate the C++ class into C code and wrap up the tcludp package to a pseudo tcp (ptcp) command. This should work just like the standard Tcl socket command and should be able to use it transparently.
 
This projects aims to use Google gTalks Jingle implementation as a starting point. Ufortunately it is written in C++ and deeply tied into the application notifier system and therefore not reusable as is. Instead the task will be to use the Tcl Udp C code implementation, and essentially use gTalks PseudoTcp class as a wrapper. There are two possible options here: either do a pure Tcl script implementation of the tricks used in PseudoTcp, which I'm not sure is possible, or just translate the C++ class into C code and wrap up the tcludp package to a pseudo tcp (ptcp) command. This should work just like the standard Tcl socket command and should be able to use it transparently.
   Line 69: Line 56:     
==== Relevant XEP ====
 
==== Relevant XEP ====
 
+
* [http://xmpp.org/extensions/xep-0234.html Jingle File Transfer]
*[http://www.xmpp.org/extensions/xep-0234.html Jingle File Transfer]
      
=== Aquarium for kids ===
 
=== Aquarium for kids ===
   
* Proposed Mentor: [http://coccinella.im/matben Mats Bengtsson]
 
* Proposed Mentor: [http://coccinella.im/matben Mats Bengtsson]
 
* Programming language: Tcl/Tk
 
* Programming language: Tcl/Tk
    
==== Project description ====
 
==== Project description ====
   
This project involves the creation of an interface for kids to Coccinella. You need to create a new roster style, the fishy roster style, with an aquarium containing fishes that represents the contacts (like [http://ralphm.net/ ralphm's Jabber Aquarium]). The fishes need to be be animated with [http://www.jabber.org/jeps/jep-0107.html User Mood]. For example, when a contact is happy, the fish will swim quickly in the aquarium with a smile on his face. The graphics will be done in 2D, but when time allows, they can be made in 3D.
 
This project involves the creation of an interface for kids to Coccinella. You need to create a new roster style, the fishy roster style, with an aquarium containing fishes that represents the contacts (like [http://ralphm.net/ ralphm's Jabber Aquarium]). The fishes need to be be animated with [http://www.jabber.org/jeps/jep-0107.html User Mood]. For example, when a contact is happy, the fish will swim quickly in the aquarium with a smile on his face. The graphics will be done in 2D, but when time allows, they can be made in 3D.
   Line 84: Line 68:     
This project will involve mostly new code, and few boring code rewriting.
 
This project will involve mostly new code, and few boring code rewriting.
      
== Psi ==
 
== Psi ==
   
=== Message history ===
 
=== Message history ===
 
* Proposed Mentor: [http://kismith.co.uk Kevin Smith]
 
* Proposed Mentor: [http://kismith.co.uk Kevin Smith]
Line 99: Line 81:     
In this project, the student will create a themable, WebKit-based chat dialog. Additionally, the chat dialog should be themable with the distributed Adium themes, in order to be able to enjoy a wide set of themes out of the box. Another property of this chat dialog is that it would be decoupled from Psi itself, which would ease initial development, testing, and allow easy porting to other Qt-based IM clients.
 
In this project, the student will create a themable, WebKit-based chat dialog. Additionally, the chat dialog should be themable with the distributed Adium themes, in order to be able to enjoy a wide set of themes out of the box. Another property of this chat dialog is that it would be decoupled from Psi itself, which would ease initial development, testing, and allow easy porting to other Qt-based IM clients.
      
== Gajim ==
 
== Gajim ==
   
=== Plugin system ===
 
=== Plugin system ===
 
* Proposed Mentor: Yann Leboulanger
 
* Proposed Mentor: Yann Leboulanger
Line 111: Line 91:  
* Proposed Mentor: Yann Leboulanger
 
* Proposed Mentor: Yann Leboulanger
 
* Programming language: Python
 
* Programming language: Python
Title tells all. Bosh is an authentification methode based on HTTP. It's described in [http://www.xmpp.org/extensions/xep-0124.html XEP-0124]. It has to be implemented in our fork of xmpppy library.
+
Title tells all. Bosh is an authentification methode based on HTTP. It's described in [http://xmpp.org/extensions/xep-0124.html XEP-0124]. It has to be implemented in our fork of xmpppy library.
    
== New Clients ==
 
== New Clients ==
   
=== Modern Web-based Jabber/XMPP Client ===
 
=== Modern Web-based Jabber/XMPP Client ===
 
* Proposed Mentor: [http://el-tramo.be Remko]
 
* Proposed Mentor: [http://el-tramo.be Remko]
Line 120: Line 99:     
In order to achieve the goal, the student should try to re-use as much of the existing libraries and frameworks, in order to be able to focus on the goal of the project. For the server-side backend, there is a good choice of frameworks in many different languages, including Ruby and Python. For the frontend, existing frameworks exist to build good looking javascript based user interfaces without much trouble (e.g. [http://extjs.com/ ExtJS]).  
 
In order to achieve the goal, the student should try to re-use as much of the existing libraries and frameworks, in order to be able to focus on the goal of the project. For the server-side backend, there is a good choice of frameworks in many different languages, including Ruby and Python. For the frontend, existing frameworks exist to build good looking javascript based user interfaces without much trouble (e.g. [http://extjs.com/ ExtJS]).  
The student will have to investigate which frameworks suit the project (and the student) best, implement the missing parts on the server-side if necessary (e.g, [http://www.xmpp.org/extensions/xep-0206.html BOSH]), and build a user interface using the building blocks provided by the web UI libraries.
+
The student will have to investigate which frameworks suit the project (and the student) best, implement the missing parts on the server-side if necessary (e.g, [http://xmpp.org/extensions/xep-0206.html BOSH]), and build a user interface using the building blocks provided by the web UI libraries.
    
stpeter saith: You mean like [http://soashable.com/ Soashable]? :-)
 
stpeter saith: You mean like [http://soashable.com/ Soashable]? :-)
    
== xmpp4moz/SamePlace ==
 
== xmpp4moz/SamePlace ==
   
=== PubSub ATOM aggregator ===
 
=== PubSub ATOM aggregator ===
 
This is an idea to develop a XUL [http://dev.hyperstruct.net/xmpp4moz xmpp4moz]-based PubSub ATOM aggregator.
 
This is an idea to develop a XUL [http://dev.hyperstruct.net/xmpp4moz xmpp4moz]-based PubSub ATOM aggregator.
The aggregator would support [http://www.xmpp.org/extensions/xep-0060.html XEP-0060 PubSub], [http://tools.ietf.org/html/draft-saintandre-atompub-notify ATOM-over-PubSub] and [http://www.xmpp.org/extensions/xep-0136.html XEP-0136 Message archiving] so that feeds could be synched across multiple computers and their state saved. It could be possible to download all feeds for offline/disconnected mode. The aggregator could be developed as a stand-alone application and as an extension for Firefox and Thunderbird, or/and integrated in [http://sameplace.cc/ SamePlace]. -- [[User:Kael|Kael]]
+
The aggregator would support [http://xmpp.org/extensions/xep-0060.html XEP-0060 PubSub], [http://tools.ietf.org/html/draft-saintandre-atompub-notify ATOM-over-PubSub] and [http://xmpp.org/extensions/xep-0136.html XEP-0136 Message archiving] so that feeds could be synched across multiple computers and their state saved. It could be possible to download all feeds for offline/disconnected mode. The aggregator could be developed as a stand-alone application and as an extension for Firefox and Thunderbird, or/and integrated in [http://sameplace.cc/ SamePlace]. -- [[User:Kael|Kael]]
    
I would be willing to (help) mentor this project -- -- [[User:Itay|Itay]]
 
I would be willing to (help) mentor this project -- -- [[User:Itay|Itay]]
    
=== Mozilla PubSub application configuration extension ===
 
=== Mozilla PubSub application configuration extension ===
This is an idea to develop an extension for [http://dev.hyperstruct.net/xmpp4moz xmpp4moz]/[http://sameplace.cc/ SamePlace] to save [http://preferential.mozdev.org/preferences.html Firefox and Thunderbird settings] remotely, following the ''PubSub persistent storage model'' defined by  [http://www.xmpp.org/extensions/xep-0223.html XEP-0223], similarly to [http://en.wikipedia.org/wiki/Application_Configuration_Access_Protocol ACAP] (cf. [http://tools.ietf.org/html/rfc2244 RFC2244] and [https://datatracker.ietf.org/drafts/wg/acap/ ACAP Internet-Drafts]).
+
This is an idea to develop an extension for [http://dev.hyperstruct.net/xmpp4moz xmpp4moz]/[http://sameplace.cc/ SamePlace] to save [http://preferential.mozdev.org/preferences.html Firefox and Thunderbird settings] remotely, following the ''PubSub persistent storage model'' defined by  [http://xmpp.org/extensions/xep-0223.html XEP-0223], similarly to [http://en.wikipedia.org/wiki/Application_Configuration_Access_Protocol ACAP] (cf. [http://tools.ietf.org/html/rfc2244 RFC2244] and [https://datatracker.ietf.org/drafts/wg/acap/ ACAP Internet-Drafts]).
    
This extension would allow to save Firefox browser settings, bookmarks, history, cookies, Sherlock and OpenSearch search engine plugins ; and Thunderbird email, newsgroups and feeds accounts, and configuration settings on an XMPP server. -- [[User:Kael|Kael]]
 
This extension would allow to save Firefox browser settings, bookmarks, history, cookies, Sherlock and OpenSearch search engine plugins ; and Thunderbird email, newsgroups and feeds accounts, and configuration settings on an XMPP server. -- [[User:Kael|Kael]]
Line 139: Line 117:  
= Servers =
 
= Servers =
 
== ejabberd ==
 
== ejabberd ==
 
+
Mentor: Mickaël Rémond (email: [mailto:mremond@process-one.net mremond@process-one.net] / jid: [xmpp:mremond@process-one.net mremond@process-one.net]).
Mentor: Mickaël Rémond (email: mremond@process-one.net / jid: mremond@process-one.net)
      
Those proposals for GSOC projects could be implemented in any Jabber server and programming language. However, they are specially easy to implement in ejabberd for several reasons:
 
Those proposals for GSOC projects could be implemented in any Jabber server and programming language. However, they are specially easy to implement in ejabberd for several reasons:
Line 150: Line 127:     
=== Page for Account Registration & Password Recovery ===
 
=== Page for Account Registration & Password Recovery ===
   
Develop a module for ejabberd that provides a page to create account, change password and recover lost password.
 
Develop a module for ejabberd that provides a page to create account, change password and recover lost password.
    
'''Motivation'''
 
'''Motivation'''
   
There are two different problems that are of great importance for public servers and the XMPP federation as Jabber gets increasing popularity:
 
There are two different problems that are of great importance for public servers and the XMPP federation as Jabber gets increasing popularity:
   
* In-band account registration of Jabber accounts (XEP-0077) can be abused easily by spammers. For example, a spammer could create a million of accounts in jabber.org easily, and then put 100 zombie machines to login to those accounts and send spam to everywhere in the XMPP Federation.
 
* In-band account registration of Jabber accounts (XEP-0077) can be abused easily by spammers. For example, a spammer could create a million of accounts in jabber.org easily, and then put 100 zombie machines to login to those accounts and send spam to everywhere in the XMPP Federation.
   
* There isn't a generalized way to recover a forgotten password of a Jabber account. Since In-band account registration (XEP-0077) is the standard way to create Jabber accounts since 1999 until now, Jabber accounts do not have email accounts associated. Hence, it isn't possible to recover a forgotten password automatically. The solution right now is to contact an admin in the Jabber server, which will change the password manually and send an email with the new password.
 
* There isn't a generalized way to recover a forgotten password of a Jabber account. Since In-band account registration (XEP-0077) is the standard way to create Jabber accounts since 1999 until now, Jabber accounts do not have email accounts associated. Hence, it isn't possible to recover a forgotten password automatically. The solution right now is to contact an admin in the Jabber server, which will change the password manually and send an email with the new password.
    
'''Details'''
 
'''Details'''
   
This proposal attempts to fix both problems. It consits in three related tasks:
 
This proposal attempts to fix both problems. It consits in three related tasks:
   
* Provide a registration page. The page requests: username, password, repeat-password, email address. When filled the form, it registers the account in the local ejabbed server. The email address is NOT stored in the user's vcard; it is stored in a secure a private way, just like the password. Optional elements:
 
* Provide a registration page. The page requests: username, password, repeat-password, email address. When filled the form, it registers the account in the local ejabbed server. The email address is NOT stored in the user's vcard; it is stored in a secure a private way, just like the password. Optional elements:
 
# The page could also include a captcha to require registration
 
# The page could also include a captcha to require registration
 
# The page could send an email instead of registering the account. If the email is responded correctly, then the account is created
 
# The page could send an email instead of registering the account. If the email is responded correctly, then the account is created
   
* Provide a page to change the password and email addresProvide also. Of course, this page will require the valid username and password in order to change the information.
 
* Provide a page to change the password and email addresProvide also. Of course, this page will require the valid username and password in order to change the information.
   
* Provide a page to recover the forgotten password. The page only requires a valid username. Then it sends an email to the address stored for that account. If the email is answered correctly, the password is changed and the new one is sent by email.
 
* Provide a page to recover the forgotten password. The page only requires a valid username. Then it sends an email to the address stored for that account. If the email is answered correctly, the password is changed and the new one is sent by email.
   Line 180: Line 149:     
=== Time Tracker ===
 
=== Time Tracker ===
   
Implement an ejabberd module that tracks how much time a Jabber account is online in each presence type. Reports can be check by the user and/or admin.
 
Implement an ejabberd module that tracks how much time a Jabber account is online in each presence type. Reports can be check by the user and/or admin.
   Line 186: Line 154:     
'''Example Track'''
 
'''Example Track'''
   
* When I start my work in the morning, I start my Jabber client and login to my working account. Then set presence 'busy' with status message 'Doing GSOC: write cases for test suite'. The Time Tracker captures that and stores the meaningful information.  
 
* When I start my work in the morning, I start my Jabber client and login to my working account. Then set presence 'busy' with status message 'Doing GSOC: write cases for test suite'. The Time Tracker captures that and stores the meaningful information.  
   
* At midday I change to 'xa' with text 'Launch time'.  
 
* At midday I change to 'xa' with text 'Launch time'.  
   
* During the afternoon I set to 'busy' again, but status message 'Doing study: homework'.  
 
* During the afternoon I set to 'busy' again, but status message 'Doing study: homework'.  
   
* When I am interrupted for more than 5 minutes, my Jabber client sets to 'autoaway', and the Time Tracker will also notice that.  
 
* When I am interrupted for more than 5 minutes, my Jabber client sets to 'autoaway', and the Time Tracker will also notice that.  
    
'''Example Report'''
 
'''Example Report'''
   
At the end of the day, I can access the Time Tracker interface (web, adhoc or whatever) and ask the report. For example, it can report:
 
At the end of the day, I can access the Time Tracker interface (web, adhoc or whatever) and ask the report. For example, it can report:
   Line 214: Line 177:  
* ejabberd 2.0.0 provides the feature request_handlers in the service ejabberd_http, so it's easy to provide web pages. Example: mod_http_bind, mod_http_fileserver, mod_webpresence.
 
* ejabberd 2.0.0 provides the feature request_handlers in the service ejabberd_http, so it's easy to provide web pages. Example: mod_http_bind, mod_http_fileserver, mod_webpresence.
 
* There are contributed modules that track presence changes and can be used as examples: mod_logxml, mod_statsdx, ...
 
* There are contributed modules that track presence changes and can be used as examples: mod_logxml, mod_statsdx, ...
      
=== XMPP to XMPP gateway ===
 
=== XMPP to XMPP gateway ===
   
With the release of exmpp, writing an XMPP client is now easy. Writing a gateway that allow user of a given ejabberd server to reuse their other or old XMPP/Jabber account it a useful project.
 
With the release of exmpp, writing an XMPP client is now easy. Writing a gateway that allow user of a given ejabberd server to reuse their other or old XMPP/Jabber account it a useful project.
   Line 224: Line 185:  
== Openfire ==
 
== Openfire ==
 
Here are some nice features that would be nice to have in Openfire. We are still working on the list which should be ready for early next week (March 25th). If you have other ideas not listed here feel free to send us an email to discuss it or post it [http://www.igniterealtime.org/community/community/developers/gsoc08?view=discussions here].
 
Here are some nice features that would be nice to have in Openfire. We are still working on the list which should be ready for early next week (March 25th). If you have other ideas not listed here feel free to send us an email to discuss it or post it [http://www.igniterealtime.org/community/community/developers/gsoc08?view=discussions here].
   
   * File Repository and Sharing (including WebDAV)
 
   * File Repository and Sharing (including WebDAV)
 
   * File transfers for gateways
 
   * File transfers for gateways
Line 234: Line 194:     
===Contacts===
 
===Contacts===
Mentor: Gaston Dombiak (email: gaston@jivesoftware.com / jid: gato@jivesoftware.com).
+
Mentor: Gaston Dombiak (email: [mailto:gaston@jivesoftware.com gaston@jivesoftware.com] / jid: [xmpp:gato@jivesoftware.com gato@jivesoftware.com]).
    
== PJS ==
 
== PJS ==
 
The PJS project aims to create a reliable, correct and highly scalable XMPP server framework in Python, not unlike what ejabberd is to Erlang. It was started as an undergrad project at the University of Toronto in February 2008. By the start of GSOC, the server should have the following components:
 
The PJS project aims to create a reliable, correct and highly scalable XMPP server framework in Python, not unlike what ejabberd is to Erlang. It was started as an undergrad project at the University of Toronto in February 2008. By the start of GSOC, the server should have the following components:
   
* basic connection handling
 
* basic connection handling
 
* internal message routing (with chained handlers)
 
* internal message routing (with chained handlers)
Line 246: Line 205:     
The server will not be production quality by the end of the semester, though it will have substantial progress toward this goal. Some of the things that may need to be written:
 
The server will not be production quality by the end of the semester, though it will have substantial progress toward this goal. Some of the things that may need to be written:
   
* S2S handling (already has parts of it)
 
* S2S handling (already has parts of it)
 
* Privacy lists (may have parts of it by May)
 
* Privacy lists (may have parts of it by May)
Line 261: Line 219:     
===Contacts===
 
===Contacts===
Mentor: David Janes (email: davidjanes@blogmatrix.com / jid: davidjanes@gmail.com) . Current developer: Dmitri Vassilenko (email: tro@glyphy.com / jid: troworld@gmail.com)
+
Mentor: David Janes (email: [mailto:davidjanes@blogmatrix.com davidjanes@blogmatrix.com] / jid: [xmpp:davidjanes@gmail.com davidjanes@gmail.com]). Current developer: Dmitri Vassilenko (email: [mailto:tro@glyphy.com tro@glyphy.com] / jid: [xmpp:troworld@gmail.com troworld@gmail.com]).
    
Also see [http://wiki.python.org/moin/SummerOfCode Python's SOC page] (under Dr.Project)
 
Also see [http://wiki.python.org/moin/SummerOfCode Python's SOC page] (under Dr.Project)
Line 277: Line 235:  
==== Project Description ====
 
==== Project Description ====
 
Write a XMPP transport/gateway which enables to use other jabber accounts through only one. It should cover things like transporting presence, messages, roster groups, PEP events and if there is time left even more. Transports like that will make migration XMPP accounts easier.
 
Write a XMPP transport/gateway which enables to use other jabber accounts through only one. It should cover things like transporting presence, messages, roster groups, PEP events and if there is time left even more. Transports like that will make migration XMPP accounts easier.
      
=== Sync mode for clients ===
 
=== Sync mode for clients ===
Line 287: Line 244:  
=== JMS-to-XMPP bridge ===
 
=== JMS-to-XMPP bridge ===
 
==== Project Description ====
 
==== Project Description ====
Java Message Service (JMS) provides enterprise messaging features that are similar to both [http://www.xmpp.org/extensions/xep-0060.html XMPP pubsub] and standard XMPP messaging with http://www.xmpp.org/extensions/xep-0184.html receipts]. This project would involve writing a bridge between JMS and XMPP so that messages could be shared across systems. This bridge might take the form of a server-side component or a common API. For more details, see [http://mail.jabber.org/pipermail/jdev/2008-March/026380.html here] and [http://mail.jabber.org/pipermail/jdev/2008-March/026386.html]. Possible mentor: Fabio Forno.
+
Java Message Service (JMS) provides enterprise messaging features that are similar to both [http://xmpp.org/extensions/xep-0060.html XMPP pubsub] and standard XMPP messaging with http://xmpp.org/extensions/xep-0184.html receipts]. This project would involve writing a bridge between JMS and XMPP so that messages could be shared across systems. This bridge might take the form of a server-side component or a common API. For more details, see [http://mail.jabber.org/pipermail/jdev/2008-March/026380.html here] and [http://mail.jabber.org/pipermail/jdev/2008-March/026386.html]. Possible mentor: Fabio Forno.
    
=== Universal Transport via libpurple ===
 
=== Universal Transport via libpurple ===
Line 305: Line 262:  
Write up a platform independent implementation of XEP-0174 for gloox. Platforms supported should be *NIX (including Mac OS X), linux and windows.
 
Write up a platform independent implementation of XEP-0174 for gloox. Platforms supported should be *NIX (including Mac OS X), linux and windows.
   −
http://www.xmpp.org/extensions/xep-0174.html
+
http://xmpp.org/extensions/xep-0174.html
    
= Other =
 
= Other =
   
== ISS (Instant Syndicating Standards) ==
 
== ISS (Instant Syndicating Standards) ==
   
=== Project description ===
 
=== Project description ===
Further develop [http://iss.im/ ISS (Instant Syndicating Standards)], built on top of [http://www.xmpp.org/extensions/xep-0163.html PEP (Personal Eventing via PubSub)].
+
Further develop [http://iss.im/ ISS (Instant Syndicating Standards)], built on top of [http://xmpp.org/extensions/xep-0163.html PEP (Personal Eventing via PubSub)].
 
Please see website or contact [http://wiki.jabber.org/index.php/User:NickVidal Nick Vidal] for more details.
 
Please see website or contact [http://wiki.jabber.org/index.php/User:NickVidal Nick Vidal] for more details.
      
== PubSub Wordpress and Drupal plugins ==
 
== PubSub Wordpress and Drupal plugins ==
Line 322: Line 276:     
Blogs could support an autodiscovery element like :
 
Blogs could support an autodiscovery element like :
   
<pre>
 
<pre>
 
<link rel='alternate' type='xxxx' href='xmpp:romeo@jabber.org?;node=blog'/>
 
<link rel='alternate' type='xxxx' href='xmpp:romeo@jabber.org?;node=blog'/>
Line 339: Line 292:  
Drupal implements a [http://drupal.org/node/312 Distributed Authentication System] which allows to use Jabber credentials to log onto every Drupal sites (e.g. [http://www.ejabberd.im/user/help#jabber the Ejabberd site]). But it requires to pass the password to third-party sites often without encryption.
 
Drupal implements a [http://drupal.org/node/312 Distributed Authentication System] which allows to use Jabber credentials to log onto every Drupal sites (e.g. [http://www.ejabberd.im/user/help#jabber the Ejabberd site]). But it requires to pass the password to third-party sites often without encryption.
   −
Inspired from [http://openid.xmpp.za.net/ The South African XMPP Federation OpenID Server], the Drupal Jabber authentication module could support [http://www.xmpp.org/extensions/xep-0070.html XEP-0070: Verifying HTTP Requests via XMPP] so that users could authenticate to Drupal sites with their JID in a secured manner thanks to a confirmation ticket.
+
Inspired from [http://openid.xmpp.za.net/ The South African XMPP Federation OpenID Server], the Drupal Jabber authentication module could support [http://xmpp.org/extensions/xep-0070.html XEP-0070: Verifying HTTP Requests via XMPP] so that users could authenticate to Drupal sites with their JID in a secured manner thanks to a confirmation ticket.
 
      
== SSH authentication validation with XEP-0070 ==
 
== SSH authentication validation with XEP-0070 ==
 
=== Project description ===
 
=== Project description ===
The idea is to implement an additional security layer for SSH authentication with [http://www.xmpp.org/extensions/xep-0070.html XEP-0070: Verifying HTTP Requests via XMPP].
+
The idea is to implement an additional security layer for SSH authentication with [http://xmpp.org/extensions/xep-0070.html XEP-0070: Verifying HTTP Requests via XMPP].
    
When authenticating to the SSH server by password or by key, the user would receive an XMPP confirmation message which would need to be validated to achieve authentication. In this manner, even if the SSH password or the key were compromised they still could not be used.
 
When authenticating to the SSH server by password or by key, the user would receive an XMPP confirmation message which would need to be validated to achieve authentication. In this manner, even if the SSH password or the key were compromised they still could not be used.
    
It has the drawback of requiring to have an XMPP server always running and may not be suitable for some cases.
 
It has the drawback of requiring to have an XMPP server always running and may not be suitable for some cases.
      
== XMPP Webmin interface ==
 
== XMPP Webmin interface ==
 
=== Project description ===
 
=== Project description ===
 
This is an idea to implement an XMPP interface for
 
This is an idea to implement an XMPP interface for
[http://www.webmin.com/ Webmin], a web-based interface for system administration for Unix. Inspired by the example of [http://www.xmpp.org/extensions/xep-0050.html XEP-0050: Ad-Hoc Commands], this software would allow system administrators to remotely manage and configure their server through data-forms.
+
[http://www.webmin.com/ Webmin], a web-based interface for system administration for Unix. Inspired by the example of [http://xmpp.org/extensions/xep-0050.html XEP-0050: Ad-Hoc Commands], this software would allow system administrators to remotely manage and configure their server through data-forms.
    
It would also allow to select events to be notified of (via messages or PubSub), and processes to monitor (via presence or PubSub), perhaps in conjunction with SNMP.
 
It would also allow to select events to be notified of (via messages or PubSub), and processes to monitor (via presence or PubSub), perhaps in conjunction with SNMP.
Line 368: Line 319:  
=== Links ===
 
=== Links ===
 
[http://flyspray.org Flyspray]
 
[http://flyspray.org Flyspray]
[http://www.xmpp.org/extensions/xep-0050.html Ad-Hoc Commands]
+
[http://xmpp.org/extensions/xep-0050.html Ad-Hoc Commands]
      Line 381: Line 332:     
== Client-Independent D-Bus Service for Jingle Audio ==
 
== Client-Independent D-Bus Service for Jingle Audio ==
   
Many Jabber clients will want to implement the Jingle Audio protocol (and eventually other Jingle protocols as well), but may lack the technical possibility to keep an internal implementation.  (or just the will to reinvent the wheel ☺)  [http://emacs-jabber.cvs.sourceforge.net/emacs-jabber/tox/ Tox] (Talk Over XMPP) is a D-Bus service meant to provide Jingle functionality to a Jabber client able to communicate over D-Bus.  It uses the Farsight library.
 
Many Jabber clients will want to implement the Jingle Audio protocol (and eventually other Jingle protocols as well), but may lack the technical possibility to keep an internal implementation.  (or just the will to reinvent the wheel ☺)  [http://emacs-jabber.cvs.sourceforge.net/emacs-jabber/tox/ Tox] (Talk Over XMPP) is a D-Bus service meant to provide Jingle functionality to a Jabber client able to communicate over D-Bus.  It uses the Farsight library.
    
The goals of this project are:
 
The goals of this project are:
   
* Beat Tox into good enough shape to perform audio conversations
 
* Beat Tox into good enough shape to perform audio conversations
 
* Make at least one Jabber client implement the Jingle protocol through Tox (possibly jabber.el, which is the current development platform)
 
* Make at least one Jabber client implement the Jingle protocol through Tox (possibly jabber.el, which is the current development platform)
190

edits

Navigation menu