Difference between revisions of "Summer of Code 2007"

Jump to navigation Jump to search
430 bytes added ,  18:04, 19 March 2007
no edit summary
Line 123: Line 123:


Most of the roadmap project ideas described above can be done in any of these libraries, so combine a project idea with a codebase and send in a proposal.
Most of the roadmap project ideas described above can be done in any of these libraries, so combine a project idea with a codebase and send in a proposal.
= Cross-Pollination Projects =
There are many opportunities for integrating real-time features like user availability ("presence") and instant messaging into other GSoC projects. Some of these may be more appropriate for other mentoring organizations. Here are some ideas:
* [http://code.google.com/soc/ooo/about.html OpenOffice.org] -- Add presence icons to ODT documents so that you can see the availability of document authors and click to chat


= Other Project Ideas =
= Other Project Ideas =


=== Coccinella: Jingle file transfer ===
== Coccinella: Jingle file transfer ==


* Mentor: [http://hem.fyristorg.com/matben/ Mats Bengtsson]
* Mentor: [http://hem.fyristorg.com/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 pur 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 pur 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 141: Line 147:
Jingle contains several parts but the actual jingle xmpp protocol stack is already running and used for voip. A limited STUN client has also been implemented in pure Tcl, but some support for the ICE protocol will likely be necessary.
Jingle contains several parts but the actual jingle xmpp protocol stack is already running and used for voip. A limited STUN client has also been implemented in pure Tcl, but some support for the ICE protocol will likely be necessary.


==== Relevant XEPs ====
=== Relevant XEPs ===


*[http://www.xmpp.org/extensions/xep-0166.html Jingle]
*[http://www.xmpp.org/extensions/xep-0166.html Jingle]
Line 149: Line 155:
There seems to be a XEP in the works that actually describes the topmost file transfer protocol.
There seems to be a XEP in the works that actually describes the topmost file transfer protocol.


=== Coccinella: an aquarium for kids ===
== Coccinella: an aquarium for kids ==


* Mentor: [http://hem.fyristorg.com/matben/ Mats Bengtsson]
* Mentor: [http://hem.fyristorg.com/matben/ Mats Bengtsson]
Line 155: Line 161:
* Coolness factor: high
* Coolness factor: high


==== 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 163: Line 169:
This project will involve mostly new code, and less boring code rewriting.
This project will involve mostly new code, and less boring code rewriting.


==== Relevant XEPs ====
=== Relevant XEPs ===


*[http://www.xmpp.org/extensions/xep-0107.html User Mood]
*[http://www.xmpp.org/extensions/xep-0107.html User Mood]
Line 169: Line 175:
*[http://www.xmpp.org/extensions/xep-0163.html Personal Eventing via Pubsub]
*[http://www.xmpp.org/extensions/xep-0163.html Personal Eventing via Pubsub]


=== Gajim: Jingle VOIP ===
== Gajim: Jingle VOIP ==


* Mentor: Yann Le Boulanger
* Mentor: Yann Le Boulanger


==== Project description ====
=== Project description ===


The goal of this project would be to add to Gajim the ability to do VOIP. The famous Jingle XEP is needed. So first step is to analize all possibilities for using it, and then implement one. Gajim is written in python, with PyGTK interface. It uses a modified version of xmpppy as lowlevel library.
The goal of this project would be to add to Gajim the ability to do VOIP. The famous Jingle XEP is needed. So first step is to analize all possibilities for using it, and then implement one. Gajim is written in python, with PyGTK interface. It uses a modified version of xmpppy as lowlevel library.


==== Relevant XEPs ====
=== Relevant XEPs ===


*[http://www.xmpp.org/extensions/xep-0166.html Jingle]
*[http://www.xmpp.org/extensions/xep-0166.html Jingle]
*[http://www.xmpp.org/extensions/xep-0167.html Jingle Audio Content Description Format]
*[http://www.xmpp.org/extensions/xep-0167.html Jingle Audio Content Description Format]


=== xmpp4moz: Shared-over-XMPP Web Applications ===
== xmpp4moz: Shared-over-XMPP Web Applications ==


* Mentor: [http://dev.hyperstruct.net/xmpp4moz/wiki/UserBard Massimiliano Mirra]
* Mentor: [http://dev.hyperstruct.net/xmpp4moz/wiki/UserBard Massimiliano Mirra]
* Programming language: Javascript, XML (XHTML, XUL or SVG)
* Programming language: Javascript, XML (XHTML, XUL or SVG)


==== Project motivation ====
=== Project motivation ===


On the web, people interact with web applications; in instant messaging, they interact with other people.  By bringing XMPP to the browser we can mix the two scenarios and allow people to interact with other people ''on'' web applications.  The result is richer forms of interaction (e.g. shared editors, games, whiteboards, ...) that can be deployed to everyone with the ease of web applications, i.e. by just uploading pages to a server and giving away a URL.
On the web, people interact with web applications; in instant messaging, they interact with other people.  By bringing XMPP to the browser we can mix the two scenarios and allow people to interact with other people ''on'' web applications.  The result is richer forms of interaction (e.g. shared editors, games, whiteboards, ...) that can be deployed to everyone with the ease of web applications, i.e. by just uploading pages to a server and giving away a URL.


==== Implementation ====
=== Implementation ===


This area is little explored, so you'll need creativity just as much as (if not more than) technical skills, and (of course) should have no fear of pushing the perceived limits of today's web.
This area is little explored, so you'll need creativity just as much as (if not more than) technical skills, and (of course) should have no fear of pushing the perceived limits of today's web.
Line 197: Line 203:
The project involves creating a [http://dev.hyperstruct.net/xmpp4moz/wiki/RemoteApplications shared web application] of your choice (a collaborative editor, a game, etc.), preferably in a way that allows later extraction of generic, reusable code (maybe along the lines of [http://blog.hyperstruct.net/2007/2/24/xml-sync-islands-let-the-web-sharing-begin XSI]), as well as of good practices for future development in the area.
The project involves creating a [http://dev.hyperstruct.net/xmpp4moz/wiki/RemoteApplications shared web application] of your choice (a collaborative editor, a game, etc.), preferably in a way that allows later extraction of generic, reusable code (maybe along the lines of [http://blog.hyperstruct.net/2007/2/24/xml-sync-islands-let-the-web-sharing-begin XSI]), as well as of good practices for future development in the area.


==== Relevant documentation ====
=== Relevant documentation ===


* [http://dev.hyperstruct.net/xmpp4moz/wiki/DocDevelopment xmpp4moz developer documentation]
* [http://dev.hyperstruct.net/xmpp4moz/wiki/DocDevelopment xmpp4moz developer documentation]


=== Tunneling (asynchronous) Web Services for Bioinformatics application over XMPP by supporting Ad-Hoc Commands (XEP-0050) and IO-Object Forms ===
== Extended addressing support ==
The student's challenge is to write server components and/or client implementations that export/import Web Services for Bioinformatics by making use of [http://www.xmpp.org/extensions/xep-0050.html XEP-0050 - Ad-Hoc Commands] and the yet to be council-voted [http://www.xmpp.org/extensions/inbox/io-object-forms.html IO-Object Forms]. Client implmementations could be developed as Plug-In for the [http://bioclipse.net/ Bioclipse] Bioinformatics IDE that was recently introduced in [http://www.biomedcentral.com/1471-2105/8/59/abstract BMC Bioinformatics]. Web Services for Bioinformatics may base on existing databases or algorithms, for example by routing [http://en.wikipedia.org/wiki/GenBank GenBank entries] through XMPP.
[http://www.xmpp.org/extensions/xep-0033.html XEP-0033] is a XMPP extension which can save a lot S2S (Server to Server) traffic and let you easily send messages to more than one contact, even with cc and bcc recipients you used to know from electronic mail. The XEP hasn't changed since 2004 but there are only some implementations at the moment. So your project could be to add support for XEP-0033 to your open source server of choice. If that isn't enough some servers, e.g. eJabberd, have own components for PubSub and MUC so if adding XEP-0033 support to those servers it should be easy for you to add support to the included components too.
 
Mentor: Johannes Wagener


=== XEP-0033 support ===
== Data Forms Framework ===
[http://www.xmpp.org/extensions/xep-0033.html XEP-0033] is a XMPP extension which can save a lot S2S (Server to Server) traffic and let you easily send messages to more than one contact, even with cc and bcc recipients you used to know from electronic mail. The XEP hasn't changed since 2004 but there are only some implementations at the moment. So your project could be to add support for XEP-0033 to your open source server of choice. If that isn't enough some servers, e.g. eJabberd, have own components for PubSub and MUC so if adding XEP-0033 support to those servers it should be easy for you to add support to the included components too.


=== X-Data framework ===
Build a [http://www.xmpp.org/extensions/xep-0004.html X-Data] framework consisting of:
build a [http://www.xmpp.org/extensions/xep-0004.html X-Data] framework consisting of:
* Visual X-Data forms editor
* Visual X-Data forms editor
* application to send forms to entities, analyze and store the submitted results
* application to send forms to entities, analyze and store the submitted results
* replace memberbot with this application.
* replace memberbot with this application.


=== Publish-Subscribe Based Package Management System for an Open-Source Operating System ===
== Publish-Subscribe Based Package Management System for an Open-Source Operating System ==


This is how it should work on the client side:
This is how it should work on the client side:
Line 245: Line 247:
* secure: PGP, SASL, TLS,...
* secure: PGP, SASL, TLS,...


=== Feedback System for Open Source Packagers ===
== Feedback System for Open Source Packagers ==


Note: This can be a follow-up project of the previous project, eventually two students can work on those projects.
Note: This can be a follow-up project of the previous project, eventually two students can work on those projects.
Line 262: Line 264:
* security
* security
* nice and easy to use user interface, preferably extending an existing interface
* nice and easy to use user interface, preferably extending an existing interface
== Tunneling (asynchronous) Web Services for Bioinformatics application over XMPP by supporting Ad-Hoc Commands (XEP-0050) and IO-Object Forms ==
The student's challenge is to write server components and/or client implementations that export/import Web Services for Bioinformatics by making use of [http://www.xmpp.org/extensions/xep-0050.html XEP-0050 - Ad-Hoc Commands] and the yet to be council-voted [http://www.xmpp.org/extensions/inbox/io-object-forms.html IO-Object Forms]. Client implmementations could be developed as Plug-In for the [http://bioclipse.net/ Bioclipse] Bioinformatics IDE that was recently introduced in [http://www.biomedcentral.com/1471-2105/8/59/abstract BMC Bioinformatics]. Web Services for Bioinformatics may base on existing databases or algorithms, for example by routing [http://en.wikipedia.org/wiki/GenBank GenBank entries] through XMPP.
Mentor: Johannes Wagener
80

edits

Navigation menu