Difference between revisions of "Summer of Code 2015"

Jump to navigation Jump to search
781 bytes added ,  17:23, 20 February 2015
no edit summary
Line 24: Line 24:
* '''Software VCS URL:''' http://swift.im/git/swift/
* '''Software VCS URL:''' http://swift.im/git/swift/
* '''Software Description:''' Swift is a desktop XMPP chat client. It aims to prioritise usability and usefulness to users in preference to an extensive niche feature list.
* '''Software Description:''' Swift is a desktop XMPP chat client. It aims to prioritise usability and usefulness to users in preference to an extensive niche feature list.
* '''Brief explanation:''' Swiften, the XMPP library driving Swift, supports pubsub (http://xmpp.org/extensions/xep-0060.html) and PEP (http://xmpp.org/extensions/xep-0163.html), but nothing in Swift itself uses these yet. In this project a user would implement User Location (http://xmpp.org/extensions/xep-0080.html) in Swiften, and use this in Swift to expose the user's location to their contacts, allow them to see the location of their contacts, and to somehow monitor which contacts are near to the user.
* '''Brief explanation:''' Swiften, the XMPP library driving Swift, supports pubsub (http://xmpp.org/extensions/xep-0060.html) and PEP (http://xmpp.org/extensions/xep-0163.html), which are mechanisms whereby people can publish data and other people can subscribe to receive notifications about changes in these data, but nothing in Swift itself uses these yet. In this project a user would implement User Location (http://xmpp.org/extensions/xep-0080.html) on top of these in Swiften, and use this in Swift to expose the user's location to their contacts, allow them to see the location of their contacts, and to somehow monitor which contacts are near to the user. If the student has other ideas of interesting ways in which location data can be useful to Swift's users, they can accordingly enhance this project.
* '''Expected results:'''
* '''Expected results:'''
** User Location protocol support in Swiften
** User Location protocol support in Swiften
Line 52: Line 52:
* '''Software VCS URL:''' https://github.com/igniterealtime/Openfire
* '''Software VCS URL:''' https://github.com/igniterealtime/Openfire
* '''Software Description:''' Openfire is an XMPP server. It is configured through a web-based admin interface and used in enterprise, military, and government environments.
* '''Software Description:''' Openfire is an XMPP server. It is configured through a web-based admin interface and used in enterprise, military, and government environments.
* '''Brief explanation:''' Server-side message archiving allows a user's client to query the server for their previous messages. Openfire has supported the older, and more complex, XEP-0136 Archiving for many years, but more modern clients have tended to use XEP-0313, also known as MAM. MAM is a small subset of functionality from XEP-0136, and as such the storage etc should be largely handled already.
* '''Brief explanation:''' Server-side message archiving allows a user's client to query the server for their previous messages. Openfire has supported the older, and more complex, XEP-0136 standard for Archiving for many years, but more modern clients have tended to use XEP-0313, also known as MAM. MAM is a small subset of functionality from XEP-0136, and as such the storage etc should be largely handled already.
* '''Expected results:''' XEP-0313 support as pull request on github.
* '''Expected results:''' XEP-0313 support as pull request on github.
* '''Knowledge Prerequisite:''' Reasonable knowledge of Git, Java and XMPP. Communicating with the team and the XSF Standards SIG will be essential.
* '''Knowledge Prerequisite:''' Reasonable knowledge of Git, Java and XMPP. Communicating with the team and the XSF Standards SIG will be essential.
Line 66: Line 66:
* '''Software VCS URL:''' https://github.com/igniterealtime/Openfire
* '''Software VCS URL:''' https://github.com/igniterealtime/Openfire
* '''Software Description:''' Openfire is an XMPP server. It is configured through a web-based admin interface and used in enterprise, military, and government environments.
* '''Software Description:''' Openfire is an XMPP server. It is configured through a web-based admin interface and used in enterprise, military, and government environments.
* '''Brief explanation:''' Openfire has supported the older, and more complex, XEP-0016 Block Lists for many years, but more modern clients have tended to use XEP-0191. This is a small subset of functionality from XEP-0016, and as such the existing code may be reusable.
* '''Brief explanation:''' Openfire has supported the older, and more complex, XEP-0016 Block Lists protocol for blocking contacts for many years, but more modern clients have tended to use the protocol defined in XEP-0191. This is a small subset of functionality from XEP-0016, and as such the existing code may be reusable.
* '''Expected results:''' XEP-0191 support as pull request on github.
* '''Expected results:''' XEP-0191 support as pull request on github.
* '''Knowledge Prerequisite:''' Reasonable knowledge of Git, Java and XMPP. Communicating with the team and the XSF Standards SIG will be essential.
* '''Knowledge Prerequisite:''' Reasonable knowledge of Git, Java and XMPP. Communicating with the team and the XSF Standards SIG will be essential.
Line 79: Line 79:
* '''Software URL:''' https://freenode.net/seven.shtml
* '''Software URL:''' https://freenode.net/seven.shtml
* '''Software VCS URL:''' https://github.com/freenode/ircd-seven
* '''Software VCS URL:''' https://github.com/freenode/ircd-seven
* '''Software Description:''' freenode's ircd-seven is the server code behind freenode's IRC network, that provides discussion facilities for a  variety of Free and Open Source Software communities, not-for-profit organizations, and related communities.
* '''Software Description:''' freenode's ircd-seven is the server code behind freenode's IRC network, which provides discussion facilities for a  variety of Free and Open Source Software communities, not-for-profit organizations, and related communities.
* '''Brief explanation:''' The goal of this project is to add the possibility to interact with all of freenode's channels using the XMPP Multi-User Chat protocol as described in XEP-0045. This should be done as a service gateway that's an extension into the particular ircd implementation used by the freenode network: ircd-seven. It would accept XMPP server-to-server connections and present each channel as a MUC room transparently and bidirectional.
* '''Brief explanation:''' The goal of this project is to add the possibility to interact with all of freenode's channels using the XMPP Multi-User Chat protocol as described in XEP-0045. This should be done as a service gateway that's an extension into the particular ircd implementation used by the freenode network: ircd-seven. It would accept XMPP server-to-server connections and present each channel as a MUC room transparently and bidirectional.
* '''Expected results:''' An XMPP extension to ircd-seven
* '''Expected results:'''
** XMPP federation (Server to Server / S2S) support
** Basic XEP-0045 user join protocol support
** Mapping of further XEP-0045 features to IRC, such as nickname registration.
* '''Knowledge Prerequisite:''' Any knowledge of IRC or XMPP will be beneficial but can be learned during the summer. Otherwise C fluency is required.
* '''Knowledge Prerequisite:''' Any knowledge of IRC or XMPP will be beneficial but can be learned during the summer. Otherwise C fluency is required.
* '''Difficulty:''' Moderate
* '''Difficulty:''' Moderate
Line 95: Line 98:
* '''Software Description:''' This is completely new project aiming to compare performance of most popular XMPP servers MongooseIM, ejabberd, Prosody, OpenFire, Tigase and what not
* '''Software Description:''' This is completely new project aiming to compare performance of most popular XMPP servers MongooseIM, ejabberd, Prosody, OpenFire, Tigase and what not
* '''Brief explanation:''' The main goal of this project is to specify some common load test scenarios and automate the process of load testing various XMPP servers. This tool should automate server deployments based on publicly available scripts and generate specified load.   
* '''Brief explanation:''' The main goal of this project is to specify some common load test scenarios and automate the process of load testing various XMPP servers. This tool should automate server deployments based on publicly available scripts and generate specified load.   
* '''Expected results:''' A tool running load tests against specified XMPP servers and producing comparison.
* '''Expected results:'''
** A tool running load tests against specified XMPP servers and producing comparisons for multiple use patterns.
** A profile for pubsub use
** A profile for large chatroom use
** A profile for many chat users
** A profile for machine to machine use
* '''Knowledge Prerequisite:''' Erlang, Python, load testing, docker
* '''Knowledge Prerequisite:''' Erlang, Python, load testing, docker
* '''Difficulty:''' Hard
* '''Difficulty:''' Hard
Line 176: Line 184:
* '''Software Description:''' Buddycloud helps developers build social communication apps.
* '''Software Description:''' Buddycloud helps developers build social communication apps.
* '''Brief explanation:''' The MUC<->buddycloud translat-o-matic brings a MUC-based frontend to Buddycloud channels. Users can use their favourite MUC client to post, comment and follow a buddycloud channel. Media should be displayed as a HTML links.  
* '''Brief explanation:''' The MUC<->buddycloud translat-o-matic brings a MUC-based frontend to Buddycloud channels. Users can use their favourite MUC client to post, comment and follow a buddycloud channel. Media should be displayed as a HTML links.  
* '''Expected results:''' As many MUC features should be possible (posting to a MUC room, fetching posts and more.)
* '''Expected results:''' As many MUC features as possible should be mapped, including:
* '''Knowledge Prerequisite:''' extensive C++ knowledge, TLS implementations
** Joining a room
** Faking occupant presence in a room
** Receiving messages from a room
** Posting messages to a room
* '''Knowledge Prerequisite:'''
** Python or Javascript required
** XMPP desirable
* '''Difficulty:''' Moderate
* '''Difficulty:''' Moderate
* '''Implementation Languages:''' Python or Javascript.  
* '''Implementation Languages:''' Python or Javascript.  

Navigation menu