| Title | Improving Adium's XMPP Support |
|---|---|
| Student | Andreas Monitzer |
| Mentor | Robert August Fackler |
| Abstract | |
|
Since my project last year was scrapped after the fact due to the deprecation and simultaneous breaking of the Java Bridge by Apple, I'd like to re-implement most of the features it had into Adium again, since Adium's XMPP support is still very bare-bone.
Due to vivid discussions with the Adium and libpurple developers, I've concluded that going with libpurple-based XMPP is the way to go. I reviewed the Pidgin 2.0 application and found it to have many features that are absent in Adium. These will have to be integrated into the user interface. Further, some missing features are known to be incompatible with Pidgin's philosophy. Sean agreed that we're allowed to add features to XMPP/libpurple, even when they don't benefit Pidgin itself. Features that are implemented in Pidgin I'd like to add to Adium are: * Full MUC support (roles, nick registration, nick change, channel setup, channel subject) -- this will probably require co-operation with whoever will work on the improved groupchat support * Forms support (required for many features) -- this is going to be complicated due to the nib-centrism of Cocoa * Console for directly sending stanzas and logging all XMPP communication Features that I'd like to implement in libpurple and add to Adium are: * Gateway support (registration, log on/off) * PEP (http://www.xmpp.org/extensions/xep-0163.html) -- This will be a bit complicated to implement, since there is no support for this in any server yet. However, there's an experimental patch to ejabberd for it, so maybe I can use that one for testing. * Based on PEP, implement some protocols that require this, like user tune (http://www.xmpp.org/extensions/xep-0118.html), user avatar (http://www.xmpp.org/extensions/xep-0084.html) and user nickname (http://www.xmpp.org/extensions/xep-0172.html) * fix OTR-support (http://trac.adiumx.com/ticket/5558) * http://trac.adiumx.com/ticket/4695 * Discovery Browsing. This will probably need some previously unthought of user interface (the main reason why Pidgin refuses to implement it is the weird interface usually used for it). This would enable MUC channel listings, ad-hoc commands (http://www.xmpp.org/extensions/xep-0050.html), looking up gateways and other nice features. * Maybe Invisible Command, depending on whether this can be implemented using libpurple (it requires being silent to certain requests). |
|