Difference between revisions of "Summer of Code 2008"

Jump to navigation Jump to search
7,482 bytes added ,  06:46, 18 March 2008
→‎Clients: - adding a Psi project.
(→‎Clients: - adding a Psi project.)
(11 intermediate revisions by the same user not shown)
Line 23: Line 23:
=== Jingle video using iaxclient ===
=== Jingle video using iaxclient ===


* 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!)


Line 39: Line 39:
=== Jingle file transfer ===
=== Jingle file transfer ===


* 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


Line 56: Line 56:
*[http://www.xmpp.org/extensions/xep-0234.html Jingle File Transfer]
*[http://www.xmpp.org/extensions/xep-0234.html Jingle File Transfer]


=== an aquarium for kids ===
=== Aquarium for kids ===


* Mentor: [http://coccinella.im/matben Mats Bengtsson]
* Proposed Mentor: [http://coccinella.im/matben Mats Bengtsson]
* Programming language: Tcl/Tk
* Programming language: Tcl/Tk


Line 67: Line 67:
The programming tools will be Tcl/Tk and the tkpath graphics extension package [http://tclbitprint.sf.net/] which provides high quality graphics on all platforms. There exists an albeit primitive SVG importer so the actual graphics elements can be obtained from a SVG drawing tool.
The programming tools will be Tcl/Tk and the tkpath graphics extension package [http://tclbitprint.sf.net/] which provides high quality graphics on all platforms. There exists an albeit primitive SVG importer so the actual graphics elements can be obtained from a SVG drawing tool.


This project will involve mostly new code, and less boring code rewriting.
This project will involve mostly new code, and few boring code rewriting.
 
== Psi ==
 
* Proposed Mentor: [http://kismith.co.uk Kevin Smith]
* Programming language: C++ / Qt toolkit
 
=== Message history ===
Psi's current history system is not very usable - this project would involve a student replacing it with a more usable UI, implementing history for groupchat, and using server-side history. Since Psi is a widely-used client, this project would be of particular benefit to a large number of the Jabber/XMPP community.


= Servers =
= Servers =
== 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:
* basic connection handling
* internal message routing (with chained handlers)
* a way to run blocking handlers in threads
* presence, subscriptions, roster get/set, message
* sqlite backend for user, roster and offline messages storage
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)
* Privacy lists (may have parts of it by May)
* Clustering. This could use something like pylinda or PyRO to distribute jobs among machines.
* Pick any XEP you'd like to implement. Dialback (XEP-0220) may be already implemented by May.
Because the project is a part of a course, its code cannot be released until the course is over (around May 1, 2008). The project will be licensed under the PFL (same license as that for Python).
The architecture is as follows:
* asynchronous event handling using asyncore (low per-connection memory overhead)
* chained handlers in pairs (handler + error handler), where each can be run either in-process or in a threadpool.
* everything is a plugin (which is just a handler class)
* everything can be redefined at run-time (little protection, but lots of power)
===Contacts===
Mentor: David Janes (email: davidjanes@blogmatrix.com / jid: davidjanes@gmail.com) . Current developer: Dmitri Vassilenko (email: tro@glyphy.com / jid: troworld@gmail.com)
Also see [http://wiki.python.org/moin/SummerOfCode Python's SOC page] (under Dr.Project)


= Components =
= Components =
== New ==
=== IRC-to-MUC bridge ===
==== Project Description ====
This idea is about writing a XMPP Component which acts as a bridge between a IRC network and open and federated XMPP servers. For an IRC network it looks like another server in the network which is connected via one of the custom IRC server-to-server protocols. The component should be written extensible so it's easy to make it work with the different servers like Hyperion or UnrealIRCD. For the XMPP world the component is connected to a XMPP server und some domain like myirc.example.com. When a user from XMPP world joins the Multi User Chat hello@myirc.example.com, the component will map this as a login to #hello on some IRC network.
Since most IRC servers are written in C or C++ it seems to be best that this component is written in C or C++ as well.
Libraries you can use are found under http://jabber.org.
=== XMPP Transport/Gateway ===
==== 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.


= Libraries =
= Libraries =


= Other =
= Other =
=== ISS (Instant Syndicating Standards) ===
==== 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)].
Please see website or contact [http://wiki.jabber.org/index.php/User:NickVidal Nick Vidal] for more details.
=== PubSub Wordpress and Drupal plugins ===
==== Project description ====
This is an idea to develop a PubSub plugin for WordPress and Drupal with [http://tools.ietf.org/html/draft-saintandre-atompub-notify ATOM notifications]
The goal is to ease the publication with PubSub and to create an XMPP PubSub eco-system.
Blogs could support an autodiscovery element like :
<pre>
<link rel='alternate' type='xxxx' href='xmpp:romeo@jabber.org?;node=blog'/>
</pre>
Each new post could generate a new leaf node which would contain the post per se and the comments. In this manner, users could subscribe to the thread of their choice directly from the blog by clicking on an RSS-like button.
There already exists the [http://idavoll.ik.nu/ Idavoll] [http://idavoll.ik.nu/wiki/HTTP_Interface HTTP-XMPP PubSub gateway] and [http://idlecrew.de:2380/svn/public/ping_pubsub_plugin/ Class.Jabber.PHP with ATOM over XMPP Pubsub]. There is also the [http://diso.googlecode.com/svn/wordpress/wp-xmpp/ DiSo XMPP WordPress plugin] in development.
=== XEP-0070 for the Drupal Jabber authentication module ===
==== Project description ====
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.
=== SSH authentication validation with XEP-0070 ===
==== 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].
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.
=== XMPP Webmin interface ===
==== Project description ====
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.
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.
This would require a high-level of security, especially end-to-end encryption.
Additionally, it could allow to use Jabber chat windows as shell consoles.
=== Flyspray Bot ===
==== Project description ====
It would be really nice to have a bot for the Flyspray bug tracking system which allows to add, delete and edit bugs via ad-hoc commands and chat messages. Additionally it could send out the XMPP notifications which is currently done by a php script.
==== Links ====
[http://flyspray.org Flyspray]
[http://www.xmpp.org/extensions/xep-0050.html Ad-Hoc Commands]

Navigation menu