Tuesday, August 24, 2010

Final Report For My GSoC Project

I hope this report is not too late.

In the last 3 months, I implemented XEP-0136 for Prosody. This experience is really awesome: great mentor(Matthew Wild), active communities(Prosody, Gajim) and the wonderful organization(XSF), they've helped me a lot on this project. Many thanks to them! And, thanks to Google, who makes all of these possible, :)

What have been done

XEP-0136 is almost completely implemented:
Not perfect, but workable.

The 3rd part of XEP-0136, Off The Record, is too complicated, and not practical I think. So MattJ and I decided not to implement this feature, and implement another "XEP" instead -- XEP-xxxx: Message Archive Management, which is a much simpler version of XEP-0136.

What to be done

I'll continue maintaining mod_archive and mod_archive_muc. There are still some little issues, and I'll fix them in the future.


All the code is available at prosody-modules. Any suggestions are welcome. :) Please report issues here, or contact me at shinysky1986 (A T) gmail dot com.

Monday, August 09, 2010

Week #11: mod_archive_muc

This week I implemented a new module: mod_archive_muc, a simple version of mod_archive, which is the implementation of XEP-0136.

In mod_archive_muc, we simply archive every message regardless of the collection. And retrieve them later with any combination of three filtering attributes - 'with', 'start' and 'end'. This is much simpler than mod_archive.

The Next Step:
* Go on finalizing the code.
* Do testings.
* Prepare for the final evaluation.

Wednesday, August 04, 2010

Week #10: Efficiency Improvement

Last week, I mainly focused on efficiency improvement, testing and bug fixing. Up to now, most of them are finished.

Improvements and Bug-fixing:
* Keep collections stored in REVERSE chronological order.
* Make sure result set are in chronological order(as specified in XEP-0136).
* Use binary search to improve collection inserting speed.
* Use util.jid.compare to do JID matching.
* Fix a bug about time stamp.
* Some other minor fixes.

The Next Step:
* Go on finalizing the code.
* Do some testings.