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

Jump to navigation Jump to search
m (Invite student ideas too.)
(5 intermediate revisions by the same user not shown)
Line 40: Line 40:
Skills: GIS functions, database scaling techniques, XMPP component design
Skills: GIS functions, database scaling techniques, XMPP component design


===Realtime search service ===
=== iOS XMPP client with pub-sub support ===
"Collecta for channels"
 
'''An open-source XMPP client for iPhones and iPads with support for open social networking. AKA, get standards compliant XMPP based social networking into the hands of of the masses.'''
 
Difficulty: ''Medium - Hard''
 
To be successful, this project will deliver and XMPP client that is easy to use, and standards compliant. It should handle roster synchronisation and use XEP-0198 to ensure reliable message delivery on an unreliable mobile network. The iOS client should also provide integrated social networking functions that can challenge the closed Twitter and Facebook hegemony.
 
It should provide the following social features:
* location updating and sharing with XEP-0080 and XEP-0255
* do channel posting and updating using pub-sub
* handle mood setting
* pay particular attention to ease of use and good UI design principles
 
The client will need to be well integrated with the iOS core features to ensure long battery life while running in the background.
 
Skills: Good XMPP knowledge. XMPPFramework skills.
 
===Realtime search service for pub-sub nodes ===
 
"Build a library that makes it easy to search for content in pub-sub nodes"


Difficulty: ''Medium - Hard''
Difficulty: ''Medium - Hard''


While buddycloud users follow individual channels like beerlove@budvar.cz or james@peach.com, there is a need to be able to follow keywords (#hashtags in twitter-speak).
Pub-sub servers shipped with XMPP servers are gaining increased use. Additionally pub-sub like "code-on-a-node" projects are gaining traction.  
 
The aim of this project is to develop a library to help search through indexed pub-sub node content.


Each buddycloud channel server provides a firehose feed to remote firehose servers.
The library should be easily re-usable in other applications to enable searching and notifications based on content or specific changes to that content.


This is picked up by aggregators like [http://superfeedr.com superfeedr].  This project would provide a filtered feed similar to http://superfeedr.com/documentation#track back to users of open social networks, and expose the filtered firehose to them as a channel. This would make it simple to follow hashtags.
This would let users perform queries like "Show me all pub-sub updates that contain #FOSDEM" or "Show me all changes to nodes already containing #FOSDEM"


For example: I am interested in FOSDEM-related posts.  I would follow the channel: FOSDEM@firehose-service.com. Your code will be deployed by anyone running an XMPP server who wants to offer firehose-like searching to buddycloud-compatible clients.  
Ideally this content could even be redistributed using pub-sub.


Skills: pub-sub, node.js (or similar async languages)
Skills: pub-sub, node.js (or similar async languages)
Line 109: Line 130:
* '''Summary''': Implement support for XMPP protocols that are targeted towards (resource-)constrained environments
* '''Summary''': Implement support for XMPP protocols that are targeted towards (resource-)constrained environments
* '''Difficulty''': Medium
* '''Difficulty''': Medium
* '''Details''': XMPP provides protocols for dealing with 'constrained' environments: session resumption and incremental roster retrieval for bandwidth-constrained situations, BOSH for places where keeping a long-lived connection is hard, SIFT for limiting the amount of incoming traffic, ... Support for these protocols is not only interesting when XMPP software is used in these particular situations, it also makes the client faster and more reliable in general. In this project, you will study the protocols that can improve Swift in these situations (Session Management, BOSH, SIFT, ...), and extend Swift (and the underlying Swiften XMPP library) to support these use cases.
* '''Details''': XMPP provides protocols for dealing with 'constrained' environments: session resumption and incremental roster retrieval for bandwidth-constrained situations, BOSH for places where keeping a long-lived connection is hard, SIFT for limiting the amount of incoming traffic, Link-local for serverless locations, ... Support for these protocols is not only interesting when XMPP software is used in these particular situations, it also makes the client faster and more reliable in general. In this project, you will study the protocols that can improve Swift in these situations (Session Management, BOSH, SIFT, Link-local, ...), and extend Swift (and the underlying Swiften XMPP library) to support these use cases.


=== Multi-account Support ===
=== Multi-account Support ===
20

edits

Navigation menu