Difference between revisions of "Summer of Code 2006 Project Ideas"

From XMPP WIKI
Jump to navigation Jump to search
 
(Restored from backup.)
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
Here are the project ideas that were suggested for the [http://code.google.com/soc/ Summer of Code 2006] ...
Here are the project ideas that were suggested for the [http://code.google.com/soc/ Summer of Code 2006] ...


= Client =


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


<div style="border: 1px solid #2F2F2F; color: #000; background-color: #FF8F8F; padding: .4em .9em .4em;">
=== Coccinella: an aquarium for kids ===
</div>
* Mentor: [http://hem.fyristorg.com/matben/ Mats Bengtsson]
* Mentor: [http://hem.fyristorg.com/matben/ Mats Bengtsson]
* Programming language: Tcl/tk
* Programming language: Tcl/tk
* 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://xmpp.org/extensions/xep-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.


Eventual sub-projects:
Eventual sub-projects:
* Creation of educative whiteboard games suitable for kids.
* Creation of educative whiteboard games suitable for kids.
* User Activities (see next section).
* User Activities (see next section).
Line 23: Line 22:
This project will involve mostly new code, and less boring code rewriting.
This project will involve mostly new code, and less boring code rewriting.


==== JEPs you will/can work on ====
=== XEPs you will/can work on ===
*[http://www.jabber.org/jeps/jep-0060.html Publish-Subscribe]
*[http://www.jabber.org/jeps/jep-0107.html User Mood]
*[http://www.jabber.org/jeps/jep-0071.html XHTML-IM]
*[http://www.jabber.org/jeps/jep-0108.html User Activity]


<div style="border: 1px solid #2F2F2F; color: #000; background-color: #FF8F8F; padding: .4em .9em .4em;">
* [http://xmpp.org/extensions/xep-0060.html Publish-Subscribe]
=== Psi ===
* [http://xmpp.org/extensions/xep-0107.html User Mood]
</div>
* [http://xmpp.org/extensions/xep-0071.html XHTML-IM]
* [http://xmpp.org/extensions/xep-0108.html User Activity]


The [http://psi-im.org Psi] client has several possible contributions suitable for an SoC project. (Projects ideas contributed by [http://kismith.co.uk Kevin Smith], [[User: Kevin]])
== Psi ==
==== Jingle Audio ====
Psi was the first Jabber client to release a branch with support for voice calling using the [http://libjingle.sf.net libjingle library] released by Google. The main Psi branch has since migrated to the Qt4 toolkit (the Jingle branch uses Qt3) and libjingle has moved on several versions. A student could merge the psi-jingle branch changes back, and a newer libjingle, into the main branch, and finish work on providing media interfacing on non-linux platforms.
Edit: The Psi developers have since ported and merged the Jingle support into mainline, provided OSX support and are working on Windows support, so an interested student would need to find ways to extend this.


==== Bonjour ====
The [http://psi-im.org Psi] client has several possible contributions suitable for an SoC project. (Projects ideas contributed by [http://kismith.co.uk Kevin Smith], [[User:Kevin|User: Kevin]])
[http://www.jabber.org/jeps/jep-0174.html Link-local messaging] allows clients to communicate directly, without the use of a server. The libraries used by Psi support the LAN discovery part of this, but not the chat protocol which lies on top. An interested student could implement the chat protocol in the library, and then integrate this in the Psi GUI.
 
=== Jingle Audio ===
 
Psi was the first Jabber client to release a branch with support for voice calling using the [http://libjingle.sf.net libjingle library] released by Google. The main Psi branch has since migrated to the Qt4 toolkit (the Jingle branch uses Qt3) and libjingle has moved on several versions. A student could merge the psi-jingle branch changes back, and a newer libjingle, into the main branch, and finish work on providing media interfacing on non-linux platforms. Edit: The Psi developers have since ported and merged the Jingle support into mainline, provided OSX support and are working on Windows support, so an interested student would need to find ways to extend this.
 
=== Bonjour ===
 
[http://xmpp.org/extensions/xep-0174.html Link-local messaging] allows clients to communicate directly, without the use of a server. The libraries used by Psi support the LAN discovery part of this, but not the chat protocol which lies on top. An interested student could implement the chat protocol in the library, and then integrate this in the Psi GUI.
 
=== Jingle Video ===


==== Jingle Video ====
There already, through Jingle-audio, exists a protocol for voice calling over xmpp, which Psi already supports (in a seperate branch, see above); a particularly adventurous student might wish to extend this to video support for video calling. A student interested in this project would have to interface with video hardware and sound hardware (probably re-using the libjingle sound code), and provide streaming capabilities, probably through libjingle. A negotiation protocol would be developed, although assistance would be given with this, and it is not the focus of the project.
There already, through Jingle-audio, exists a protocol for voice calling over xmpp, which Psi already supports (in a seperate branch, see above); a particularly adventurous student might wish to extend this to video support for video calling. A student interested in this project would have to interface with video hardware and sound hardware (probably re-using the libjingle sound code), and provide streaming capabilities, probably through libjingle. A negotiation protocol would be developed, although assistance would be given with this, and it is not the focus of the project.


==== Whiteboarding ====
=== Whiteboarding ===
Several approaches to whiteboarding have recently been proposed for Jabber, revolving around the SVG standard. A student interested in this could prototype a method for encapsulating changing SVG data in the xmpp stream and implement an editor/viewer in Psi. Also linked to the "Sharing Animations" task.
 
Several approaches to whiteboarding have recently been proposed for Jabber, revolving around the SVG standard. A student interested in this could prototype a method for encapsulating changing SVG data in the xmpp stream and implement an editor/viewer in Psi. Also linked to the &quot;Sharing Animations&quot; task.
 
=== Sharing Animations ===


==== Sharing Animations ====
Linked to whiteboarding, but a less gargantuan undertaking, would be implementing a method for sharing progressive SVG animations between Psi instances, and rendering them within Psi. A student interested in whiteboarding would be advised to start here and, indeed, this is a worthwhile project in its own right.
Linked to whiteboarding, but a less gargantuan undertaking, would be implementing a method for sharing progressive SVG animations between Psi instances, and rendering them within Psi. A student interested in whiteboarding would be advised to start here and, indeed, this is a worthwhile project in its own right.


==== Interesting Chat Widgets ====
=== Interesting Chat Widgets ===
 
The chat view in Psi is currently fairly plain, while other clients have far 'whizzier' interfaces. This is an open-ended project to attempt to 'make the chat widget more interesting', starting with finishing xhtml-im support. There are many directions this project could go, one of which, although possibly not the most interesting, would be to support the same theme files used by Adium and Google Talk.
The chat view in Psi is currently fairly plain, while other clients have far 'whizzier' interfaces. This is an open-ended project to attempt to 'make the chat widget more interesting', starting with finishing xhtml-im support. There are many directions this project could go, one of which, although possibly not the most interesting, would be to support the same theme files used by Adium and Google Talk.


==== Plugin Support ====
=== Plugin Support ===
 
Psi has long been in need of a plugin interface. A framework for loading plugins has already been worked on, but the interface itself between Psi and plugins needs to be defined. Such an interface must completely abstract itself away from the internal workings of Psi and Iris, allowing a stable plugin system, even when Psi's code changes. A student could finish the plugin management and implement an interface, bringing plugins to Psi.
Psi has long been in need of a plugin interface. A framework for loading plugins has already been worked on, but the interface itself between Psi and plugins needs to be defined. Such an interface must completely abstract itself away from the internal workings of Psi and Iris, allowing a stable plugin system, even when Psi's code changes. A student could finish the plugin management and implement an interface, bringing plugins to Psi.


==== A Mail-Like History ====
=== A Mail-Like History ===
 
Psi's history behaviour is somewhat basic at present. An interested student could overhaul this interface, providing something more akin to a mail client, with ordering, sorting and searching based upon contact, time, content etc.
Psi's history behaviour is somewhat basic at present. An interested student could overhaul this interface, providing something more akin to a mail client, with ordering, sorting and searching based upon contact, time, content etc.


==== Unit Tests ====
=== Unit Tests ===
 
Psi has in place some unit tests to ensure that changes to the codebase do not introduce errors to the code. A student could extend these tests across the rest of the codebase.
Psi has in place some unit tests to ensure that changes to the codebase do not introduce errors to the code. A student could extend these tests across the rest of the codebase.


==== Any Other Business ====
=== Any Other Business ===
 
There are many other possible projects involving Psi. Any students with their own ideas of things that can be added or improved can discuss their ideas with the developers before applying if they wish.
There are many other possible projects involving Psi. Any students with their own ideas of things that can be added or improved can discuss their ideas with the developers before applying if they wish.


== General Client Enhancements ==
Pick an existing client, and implement a full XEP or improve what's present.(proposed by [[User:Zion|User:Zion]])


<div style="border: 1px solid #2F2F2F; color: #000; background-color: #FF8F8F; padding: .4em .9em .4em;">
Some places to start:
=== General Client Enhancements ===
</div>


Pick an existing client, and implement a full JEP or improve what's present.(proposed by [[User:Zion]])
=== [http://xmpp.org/extensions/xep-0045.html Multi-User Chat] ===


Some places to start:
==== [http://www.jabber.org/jeps/jep-0045.html Multi-User Chat] ====
Few clients support the whole thing.
Few clients support the whole thing.
==== [http://www.jabber.org/jeps/jep-0004.html Data Forms] ====
 
=== [http://xmpp.org/extensions/xep-0004.html Data Forms] ===
 
AKA x:data
AKA x:data
==== [http://www.jabber.org/jeps/jep-0163.html Personal Eventing Protocol] ====
It's experimental, but we currently have a chicken and egg problem with PubSub in general; we need clients to implement it to encourage servers to expose it. Experimental implementations include those in [http://psi-im.org Psi] and a [http://www.dtek.chalmers.se/~henoch/text/ejabberd-pep.html patch for ejabberd].
==== [http://www.jabber.org/jeps/jep-0116.html Encrypted Sessions] ====
It's experimental too, but implementing experimental JEPs might speed up proceedings of those JEPs to get draft or final state.


=== Java Jingle ===  
=== [http://xmpp.org/extensions/xep-0163.html Personal Eventing Protocol] ===


Create a Jingle implementation in Java and JavaSound. Jingle is an XMPP extension that primarily (for now) enables VOIP. A Java implementation would spread the protocol more widely. It's also very useful to have several implementations for testing purposes. (proposed by [[User:MTucker]])
It's experimental, but we currently have a chicken and egg problem with PubSub in general; we need clients to implement it to encourage servers to expose it. Experimental implementations include those in [http://psi-im.org Psi] and a [http://www.dtek.chalmers.se/~henoch/text/ejabberd-pep.html patch for ejabberd].


== Server ==
=== [http://xmpp.org/extensions/xep-0116.html Encrypted Session Negotiation] ===
<div style="border: 1px solid #2F2F2F; color: #000; background-color: #FF8F8F; padding: .4em .9em .4em;">
=== Wildfire ===
</div>


* Add migration scripts from other IM servers to Wildfire. This could include non-XMPP and XMPP servers (proposed by [[User:MTucker]]).
It's experimental too, but implementing experimental XEPs might speed up proceedings of those XEPs to get draft or final state.


* Create a SIP/SIMPLE gateway to make it easier for users to fully transition to XMPP (proposed by [[User:MTucker]]).
== Java Jingle ==


* Perform integration with other telephony systems, like [http://www.jivesoftware.org/asterisk-im Asterisk-IM] does for Asterisk integration (proposed by [[User:MTucker]]).
Create a Jingle implementation in Java and JavaSound. Jingle is an XMPP extension that primarily (for now) enables VOIP. A Java implementation would spread the protocol more widely. It's also very useful to have several implementations for testing purposes. (proposed by [[User:MTucker]])
 
* Contribute to the [http://www.jivesoftware.org/community/forum.jspa?forumID=48 Pampero project], which will bring massive scalability to Wildfire (proposed by [[User:MTucker]]).


* Implement [http://www.jabber.org/jeps/jep-0079.html JEP-0079: Advanced Message Processing] and [http://www.jabber.org/jeps/jep-0133.html JEP-0133: Service Administration]. The server already supports Ad-hoc commands and a few services defined in JEP-133 but there is still a lot of work to do. (proposed by [[User:Gaston]])
= Server =


* Implement [http://www.jabber.org/jeps/jep-0163.html JEP-0163: Personal Eventing Protocol]. Wildfire supports latest version of Pubsub that is a prerequisite of PEP. Moreover, the original design of Pubsub considered that different pubsub profiles could be created. However, there are  still important changes that need to be done to support PEP. (proposed by [[User:Gaston]])
== Wildfire ==


<div style="border: 1px solid #2F2F2F; color: #000; background-color: #FF8F8F; padding: .4em .9em .4em;">
* Add migration scripts from other IM servers to Wildfire. This could include non-XMPP and XMPP servers. (proposed by [[User:MTucker]])
* Create a SIP/SIMPLE gateway to make it easier for users to fully transition to XMPP. (proposed by [[User:MTucker]])
* Perform integration with other telephony systems, like [http://www.jivesoftware.org/asterisk-im Asterisk-IM] does for Asterisk integration. (proposed by [[User:MTucker]])
* Contribute to the [http://www.jivesoftware.org/community/forum.jspa?forumID=48 Pampero project], which will bring massive scalability to Wildfire. (proposed by [[User:MTucker]])
* Implement [http://xmpp.org/extensions/xep-0079.html XEP-0079: Advanced Message Processing] and [http://xmpp.org/extensions/xep-0133.html XEP-0133: Service Administration]. The server already supports Ad-hoc commands and a few services defined in XEP-0133 but there is still a lot of work to do. (proposed by [[User:Gaston]])
* Implement [http://xmpp.org/extensions/xep-0163.html XEP-0163: Personal Eventing Protocol]. Wildfire supports latest version of Pubsub that is a prerequisite of PEP. Moreover, the original design of Pubsub considered that different pubsub profiles could be created. However, there are still important changes that need to be done to support PEP. (proposed by [[User:Gaston]])


=== ejabberd ===
== ejabberd ==
</div>


* It would be great if the [http://ejabberd.jabber.ru/ ejabberd] server (written in Erlang) supported the latest version of [http://www.jabber.org/jeps/jep-0060.html Publish-Subscribe] including the [http://www.jabber.org/jeps/jep-0163.html Personal Eventing] subset. (proposed by [[User:Stpeter]])
* It would be great if the [http://ejabberd.jabber.ru/ ejabberd] server (written in Erlang) supported the latest version of [http://xmpp.org/extensions/xep-0060.html Publish-Subscribe] including the [http://xmpp.org/extensions/xep-0163.html Personal Eventing] subset. (proposed by [[User:Stpeter|User:Stpeter]])


* Support for the [http://www.jabber.org/jeps/jeps-0124.html HTTP Binding] would be great but I think the folks at [http://www.mabber.com/ mabber] have written this and just need to contribute their code. (proposed by [[User:Stpeter]])
* Support for the [http://xmpp.org/extensions/xep-0124.html HTTP Binding] would be great but I think the folks at [http://www.mabber.com/ mabber] have written this and just need to contribute their code. (proposed by [[User:Stpeter|User:Stpeter]])


* File transfer [http://www.jabber.org/jeps/jep-0065.html SOCKS5 proxy] integration. (proposed by [[User:mremond]])
* File transfer [http://xmpp.org/extensions/xep-0065.html SOCKS5 proxy] integration. (proposed by [[User:MRemond]])
: There already is a draft implementation, is it still worth to list this here? See [http://www.jabber.ru/bugzilla/show_bug.cgi?id=25 bug 25].


There already is a draft implementation, is it still worth to list this here? See [http://www.jabber.ru/bugzilla/show_bug.cgi?id=25 bug 25].
* Create a Jabber to Jabber transport as a module for ejabberd. [http://support.process-one.net/doc/display/CONTRIBS/Jabberlang Jabberlang] will be useful.
* Create a Jabber to Jabber transport as a module for ejabberd. [http://support.process-one.net/doc/display/CONTRIBS/Jabberlang Jabberlang] will be useful.


Line 126: Line 130:
** Allows users to change MUC room topic, retrieve information about users (vCard, client version,...), and much more.
** Allows users to change MUC room topic, retrieve information about users (vCard, client version,...), and much more.


<div style="border: 1px solid #2F2F2F; color: #000; background-color: #FF8F8F; padding: .4em .9em .4em;">
== Jabberd14 ==
 
Jabberd14 is a commonly used Jabber server implementation that servers many sites. Thus support of the latest XEPs would be a great feature to it. Examples are:


=== Jabberd14 ===
* the latest version of Publish-Subscribe (XEP-0060)
</div>


Jabberd14 is a commonly used Jabber server implementation that servers many sites. Thus support of the latest JEPs would be a great feature to it.
Examples are:
* the latest version of Publish-Subscribe (JEP-0060)
and
and
* Personal Eventing Protocol (JEP-0163)
For JEP-0060 either a current implementation (e. g. Idavoll2) could be updated or a new implementation be written, depending on what's the best choice. (proposed by [[User:Maxi]])


<div style="border: 1px solid #2F2F2F; color: #000; background-color: #FF8F8F; padding: .4em .9em .4em;">
* Personal Eventing Protocol (XEP-0163)
 
For XEP-0060 either a current implementation (e. g. Idavoll2) could be updated or a new implementation be written, depending on what's the best choice. (proposed by [[User:Maxi|User:Maxi]])


=== Generic Server Work ===
== Generic Server Work ==
</div>


* A lot of servers claim XMPP-compliance, thus following the RFCs strictly. A test suite for interoperability between clients and servers can ratify these claims. (proposed by [[User:Astro]]) Test suite coverage over major XMPP extensions for protocols like MUC, pubsub, etc would be highly useful.
* A lot of servers claim XMPP-compliance, thus following the RFCs strictly. A test suite for interoperability between clients and servers can ratify these claims. (proposed by [[User:Astro|User:Astro]]) Test suite coverage over major XMPP extensions for protocols like MUC, pubsub, etc would be highly useful.
* Contribute to an existing XMPP load testing project or create a new one. A test suite that can easily work across many client machines would be ideal for testing very high load. Suggestion: Java implementation so that it's cross-platform. (proposed by [[User:MTucker]])
* Contribute to an existing XMPP load testing project or create a new one. A test suite that can easily work across many client machines would be ideal for testing very high load. Suggestion: Java implementation so that it's cross-platform. (proposed by [[User:MTucker]])
: Why re-invent the wheel? There already is [http://tsung.erlang-projects.org/ Tsung]:
:* multi-platform and based on an open-source language
:* Jabber benchmarking (amongist others)
:* clustering features of Erlang
: So, I guess it is better to add features to Tsung. I think they have a TODO list... (comment by [[User:Sander]])


== Federation ==
Why re-invent the wheel? There already is [http://tsung.erlang-projects.org/ Tsung]:
* multi-platform and based on an open-source language
* Jabber benchmarking (amongist others)
* clustering features of Erlang


<div style="border: 1px solid #2F2F2F; color: #000; background-color: #FF8F8F; padding: .4em .9em .4em;">
So, I guess it is better to add features to Tsung. I think they have a TODO list... (comment by [[User:Sander|User:Sander]])
=== Distributed monitoring of the Jabber network ===
</div>
(proposed by Lucas Nussbaum - xmpp:lucas@nussbaum.fr)


The Jabber network isn't really known for its reliability, and administrators don't always have the necessary tools to monitor their server correctly. The data provided by http://public.jabbernet.dk/mrtg/ is not enough. The goal of this project is to build a testing framework to be able to monitor the public servers and answer those questions :
= Federation =
* do client connections using SASL, TLS or SSL currently work on server S1 ? (not only checking if the TCP port is open, but full login)
* do server-to-server works between server S1 and S2 (by exchanging ping messages on XMPP) ?
This would allow to build a more detailed status of the Jabber network. Additionally, it would be nice to be able to add a contact email, so the administrator can get informed of his server's problems.


(addendum by [[User:Stpeter]])
== Distributed monitoring of the Jabber network ==


Integrating this into the [http://www.xmpp.net/ XMPP Federation] database and website would be super.
(proposed by Lucas Nussbaum - xmpp:lucas@nussbaum.fr)


== Transports / Gateways ==
The Jabber network isn't really known for its reliability, and administrators don't always have the necessary tools to monitor their server correctly. The data provided by http://public.jabbernet.dk/mrtg/ is not enough. The goal of this project is to build a testing framework to be able to monitor the public servers and answer those questions :


== Development Tools ==
* do client connections using SASL, TLS or SSL currently work on server S1 ? (not only checking if the TCP port is open, but full login)
* do server-to-server works between server S1 and S2 (by exchanging ping messages on XMPP) ?


== Jabber Enhancement Protocols ==
This would allow to build a more detailed status of the Jabber network. Additionally, it would be nice to be able to add a contact email, so the administrator can get informed of his server's problems.


== Non-IM Applications ==
(addendum by [[User:Stpeter|User:Stpeter]])


<div style="border: 1px solid #2F2F2F; color: #000; background-color: #FF8F8F; padding: .4em .9em .4em;">
Integrating this into the [http://www.xmpp.net/ XMPP Federation] database and website would be super.
=== Jabber authentication to CMS and blogs ===
</div>
(proposed by [[User:Halr9000]])


See my [http://halr9000.com/ideas/xmpp-and-cms/ XMPP and CMS] post on the topic.
= Transports / Gateways =


<div style="border: 1px solid #2F2F2F; color: #000; background-color: #FF8F8F; padding: .4em .9em .4em;">
= Development Tools =
=== [[Wikipedia:User:Henna/VF/Feature_requests#XMPP_and_Especially_Publish-Subscribe|Create a Vandal Fighter for Wikipedia based on XMPP]] ===
</div>
(proposed by [[Wikipedia:User:Henna]])


= Jabber Enhancement Protocols =


<div style="border: 1px solid #2F2F2F; color: #000; background-color: #FF8F8F; padding: .4em .9em .4em;">
= Non-IM Applications =
=== Jabber Remote Control of VLC Media Player ===
</div>
Write a plugin modul for [http://www.videolan.org VLC Media Player] which simply acts like the HTTP remote control interface. Use [http://www.jabber.org/jeps/jep-0050.html JEP-0050] for providing functions like play, next, previous, etc. so you are able to control VLC Media Player via Jabber.


(proposed by [[User:Tobiasfar]])
== Jabber authentication to CMS and blogs ==


(proposed by [[User:Halr9000|User:Halr9000]])


== Jabber Related Projects of Other Mentoring Organizations ==
See my [http://halr9000.com/ideas/xmpp-and-cms/ XMPP and CMS] post on the topic.


*[http://trac.adiumx.com/wiki/SummerOfCode Adium X] "Improve Jabber support by integrating (and possibly improving) a Jabber library. Possibilities include telepathy, libjingle, Smack, and improving LibGaim."
== [http://en.wikipedia.org/wiki/User:Henna/VF/Feature_requests#XMPP_and_Especially_Publish-Subscribe Create a Vandal Fighter for Wikipedia based on XMPP] ==


*[http://www.handhelds.org/moin/moin.cgi/SummerOfCode Handhelds.org] "IM Client for Opie/GPE integrated with phone and PIM"
(proposed by [http://en.wikipedia.org/wiki/User:Henna Wikipedia:User:Henna])


*[http://hackage.haskell.org/trac/summer-of-code/query?status=new&status=assigned&status=reopened&group=topic&type=proposed-project&order=priority Haskell.org] "XMPP (aka Jabber) bindings for Haskell"
== Jabber Remote Control of VLC Media Player ==


*[http://wiki.kde.org/tiki-index.php?page=KDE%20Google%20SoC%202006%20ideas KDE] "Improve Jingle video/audio support and Audio/Video device configuration", "Jabber full MUC support.", and "Whiteboard support for jabber."
Write a plugin modul for [http://www.videolan.org VLC Media Player] which simply acts like the HTTP remote control interface. Use [http://xmpp.org/extensions/xep-0050.html XEP-0050] for providing functions like play, next, previous, etc. so you are able to control VLC Media Player via Jabber.


*[http://lispnyc.org/soc.clp LispNYC] "Implement a Google Talk (Jabber) chat client for McCLIM."
(proposed by [[User:Tobiasfar|User:Tobiasfar]])


*[http://wiki.osafoundation.org/bin/view/Projects/GoogleSummerOfCode2006 Open Source Applications Foundation] "Jabber in Chandler"
= Jabber Related Projects of Other Mentoring Organizations =


*[http://www.worldwindcentral.com/wiki/Summer_of_Code The Free Earth Foundation] "Student-Teacher Interaction System"
* [http://trac.adiumx.com/wiki/SummerOfCode Adium X] &quot;Improve Jabber support by integrating (and possibly improving) a Jabber library. Possibilities include telepathy, libjingle, Smack, and improving LibGaim.&quot;
* [http://www.handhelds.org/moin/moin.cgi/SummerOfCode Handhelds.org] &quot;IM Client for Opie/GPE integrated with phone and PIM&quot;
* [http://hackage.haskell.org/trac/summer-of-code/query?status=new&status=assigned&status=reopened&group=topic&type=proposed-project&order=priority Haskell.org] &quot;XMPP (aka Jabber) bindings for Haskell&quot;
* [http://wiki.kde.org/tiki-index.php?page=KDE%20Google%20SoC%202006%20ideas KDE] &quot;Improve Jingle video/audio support and Audio/Video device configuration&quot;, &quot;Jabber full MUC support.&quot;, and &quot;Whiteboard support for jabber.&quot;
* [http://lispnyc.org/soc.clp LispNYC] &quot;Implement a Google Talk (Jabber) chat client for McCLIM.&quot;
* [http://wiki.osafoundation.org/bin/view/Projects/GoogleSummerOfCode2006 Open Source Applications Foundation] &quot;Jabber in Chandler&quot;
* [http://www.worldwindcentral.com/wiki/Summer_of_Code The Free Earth Foundation] &quot;Student-Teacher Interaction System&quot;

Latest revision as of 09:13, 23 June 2017

Here are the project ideas that were suggested for the Summer of Code 2006 ...

Client

Coccinella: an aquarium for kids

  • Mentor: Mats Bengtsson
  • Programming language: Tcl/tk
  • Coolness factor: high

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 ralphm's Jabber Aquarium). The fishes need to be be animated with 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.

Eventual sub-projects:

  • Creation of educative whiteboard games suitable for kids.
  • User Activities (see next section).
  • Message mark-up (XMPP-IM).
  • Creation of flashy emoticons like MSN.

This project will involve mostly new code, and less boring code rewriting.

XEPs you will/can work on

Psi

The Psi client has several possible contributions suitable for an SoC project. (Projects ideas contributed by Kevin Smith, User: Kevin)

Jingle Audio

Psi was the first Jabber client to release a branch with support for voice calling using the libjingle library released by Google. The main Psi branch has since migrated to the Qt4 toolkit (the Jingle branch uses Qt3) and libjingle has moved on several versions. A student could merge the psi-jingle branch changes back, and a newer libjingle, into the main branch, and finish work on providing media interfacing on non-linux platforms. Edit: The Psi developers have since ported and merged the Jingle support into mainline, provided OSX support and are working on Windows support, so an interested student would need to find ways to extend this.

Bonjour

Link-local messaging allows clients to communicate directly, without the use of a server. The libraries used by Psi support the LAN discovery part of this, but not the chat protocol which lies on top. An interested student could implement the chat protocol in the library, and then integrate this in the Psi GUI.

Jingle Video

There already, through Jingle-audio, exists a protocol for voice calling over xmpp, which Psi already supports (in a seperate branch, see above); a particularly adventurous student might wish to extend this to video support for video calling. A student interested in this project would have to interface with video hardware and sound hardware (probably re-using the libjingle sound code), and provide streaming capabilities, probably through libjingle. A negotiation protocol would be developed, although assistance would be given with this, and it is not the focus of the project.

Whiteboarding

Several approaches to whiteboarding have recently been proposed for Jabber, revolving around the SVG standard. A student interested in this could prototype a method for encapsulating changing SVG data in the xmpp stream and implement an editor/viewer in Psi. Also linked to the "Sharing Animations" task.

Sharing Animations

Linked to whiteboarding, but a less gargantuan undertaking, would be implementing a method for sharing progressive SVG animations between Psi instances, and rendering them within Psi. A student interested in whiteboarding would be advised to start here and, indeed, this is a worthwhile project in its own right.

Interesting Chat Widgets

The chat view in Psi is currently fairly plain, while other clients have far 'whizzier' interfaces. This is an open-ended project to attempt to 'make the chat widget more interesting', starting with finishing xhtml-im support. There are many directions this project could go, one of which, although possibly not the most interesting, would be to support the same theme files used by Adium and Google Talk.

Plugin Support

Psi has long been in need of a plugin interface. A framework for loading plugins has already been worked on, but the interface itself between Psi and plugins needs to be defined. Such an interface must completely abstract itself away from the internal workings of Psi and Iris, allowing a stable plugin system, even when Psi's code changes. A student could finish the plugin management and implement an interface, bringing plugins to Psi.

A Mail-Like History

Psi's history behaviour is somewhat basic at present. An interested student could overhaul this interface, providing something more akin to a mail client, with ordering, sorting and searching based upon contact, time, content etc.

Unit Tests

Psi has in place some unit tests to ensure that changes to the codebase do not introduce errors to the code. A student could extend these tests across the rest of the codebase.

Any Other Business

There are many other possible projects involving Psi. Any students with their own ideas of things that can be added or improved can discuss their ideas with the developers before applying if they wish.

General Client Enhancements

Pick an existing client, and implement a full XEP or improve what's present.(proposed by User:Zion)

Some places to start:

Multi-User Chat

Few clients support the whole thing.

Data Forms

AKA x:data

Personal Eventing Protocol

It's experimental, but we currently have a chicken and egg problem with PubSub in general; we need clients to implement it to encourage servers to expose it. Experimental implementations include those in Psi and a patch for ejabberd.

Encrypted Session Negotiation

It's experimental too, but implementing experimental XEPs might speed up proceedings of those XEPs to get draft or final state.

Java Jingle

Create a Jingle implementation in Java and JavaSound. Jingle is an XMPP extension that primarily (for now) enables VOIP. A Java implementation would spread the protocol more widely. It's also very useful to have several implementations for testing purposes. (proposed by User:MTucker)

Server

Wildfire

  • Add migration scripts from other IM servers to Wildfire. This could include non-XMPP and XMPP servers. (proposed by User:MTucker)
  • Create a SIP/SIMPLE gateway to make it easier for users to fully transition to XMPP. (proposed by User:MTucker)
  • Perform integration with other telephony systems, like Asterisk-IM does for Asterisk integration. (proposed by User:MTucker)
  • Contribute to the Pampero project, which will bring massive scalability to Wildfire. (proposed by User:MTucker)
  • Implement XEP-0079: Advanced Message Processing and XEP-0133: Service Administration. The server already supports Ad-hoc commands and a few services defined in XEP-0133 but there is still a lot of work to do. (proposed by User:Gaston)
  • Implement XEP-0163: Personal Eventing Protocol. Wildfire supports latest version of Pubsub that is a prerequisite of PEP. Moreover, the original design of Pubsub considered that different pubsub profiles could be created. However, there are still important changes that need to be done to support PEP. (proposed by User:Gaston)

ejabberd

  • Support for the HTTP Binding would be great but I think the folks at mabber have written this and just need to contribute their code. (proposed by User:Stpeter)

There already is a draft implementation, is it still worth to list this here? See bug 25.

  • Create a Jabber to Jabber transport as a module for ejabberd. Jabberlang will be useful.
  • Create a system to allow people to migrate easily from Microsoft Office Live Communications Server (LCS) to ejabberd. LCS lacks many important features amongst XMPP support and very high scalability which makes this migration tool very useful. It would be great if migration from LCS to ejabberd is so easy and perfect that it outperforms the installation process of LCS. In other words: migrating to ejabberd should be more easy than installing LCS.
  • ejabberd already supports client connections via XMPP and via HTTP, it would be nice if IRC is also supported. So, create a connection module that:
    • Allows users to connect to ejabberd with their favorite IRC client, just like ejabberd is a normal IRC server.
    • Allows users to enter Multi-User Chat rooms and enter IRC channels on another server via the IRC transport that ejabberd already has.
    • By default restricts access to users that connect via IRC in a similar way as SASL Anonymous.
    • Allows users to register their IRC nickname, this will automatically create a Jabber ID and will eventually enable a less restrictive environment.
    • Allows users to change MUC room topic, retrieve information about users (vCard, client version,...), and much more.

Jabberd14

Jabberd14 is a commonly used Jabber server implementation that servers many sites. Thus support of the latest XEPs would be a great feature to it. Examples are:

  • the latest version of Publish-Subscribe (XEP-0060)

and

  • Personal Eventing Protocol (XEP-0163)

For XEP-0060 either a current implementation (e. g. Idavoll2) could be updated or a new implementation be written, depending on what's the best choice. (proposed by User:Maxi)

Generic Server Work

  • A lot of servers claim XMPP-compliance, thus following the RFCs strictly. A test suite for interoperability between clients and servers can ratify these claims. (proposed by User:Astro) Test suite coverage over major XMPP extensions for protocols like MUC, pubsub, etc would be highly useful.
  • Contribute to an existing XMPP load testing project or create a new one. A test suite that can easily work across many client machines would be ideal for testing very high load. Suggestion: Java implementation so that it's cross-platform. (proposed by User:MTucker)

Why re-invent the wheel? There already is Tsung:

  • multi-platform and based on an open-source language
  • Jabber benchmarking (amongist others)
  • clustering features of Erlang

So, I guess it is better to add features to Tsung. I think they have a TODO list... (comment by User:Sander)

Federation

Distributed monitoring of the Jabber network

(proposed by Lucas Nussbaum - xmpp:lucas@nussbaum.fr)

The Jabber network isn't really known for its reliability, and administrators don't always have the necessary tools to monitor their server correctly. The data provided by http://public.jabbernet.dk/mrtg/ is not enough. The goal of this project is to build a testing framework to be able to monitor the public servers and answer those questions :

  • do client connections using SASL, TLS or SSL currently work on server S1 ? (not only checking if the TCP port is open, but full login)
  • do server-to-server works between server S1 and S2 (by exchanging ping messages on XMPP) ?

This would allow to build a more detailed status of the Jabber network. Additionally, it would be nice to be able to add a contact email, so the administrator can get informed of his server's problems.

(addendum by User:Stpeter)

Integrating this into the XMPP Federation database and website would be super.

Transports / Gateways

Development Tools

Jabber Enhancement Protocols

Non-IM Applications

Jabber authentication to CMS and blogs

(proposed by User:Halr9000)

See my XMPP and CMS post on the topic.

Create a Vandal Fighter for Wikipedia based on XMPP

(proposed by Wikipedia:User:Henna)

Jabber Remote Control of VLC Media Player

Write a plugin modul for VLC Media Player which simply acts like the HTTP remote control interface. Use XEP-0050 for providing functions like play, next, previous, etc. so you are able to control VLC Media Player via Jabber.

(proposed by User:Tobiasfar)

Jabber Related Projects of Other Mentoring Organizations

  • Adium X "Improve Jabber support by integrating (and possibly improving) a Jabber library. Possibilities include telepathy, libjingle, Smack, and improving LibGaim."
  • Handhelds.org "IM Client for Opie/GPE integrated with phone and PIM"
  • Haskell.org "XMPP (aka Jabber) bindings for Haskell"
  • KDE "Improve Jingle video/audio support and Audio/Video device configuration", "Jabber full MUC support.", and "Whiteboard support for jabber."
  • LispNYC "Implement a Google Talk (Jabber) chat client for McCLIM."
  • Open Source Applications Foundation "Jabber in Chandler"
  • The Free Earth Foundation "Student-Teacher Interaction System"