GSoC08 Message History

From PsiWiki

Jump to: navigation, search

This page does not describe Psi's code. I'm Aleksey Palazchenko and these are just notes for writing a Google's Summer of Code 2008 project. You can find my code at github, and little more details at my blog and Flyspray.

Contents

[edit] Milestones

[edit] Milestone zero

  • Setup a blog, wiki-page, e-mail filters, feeds, send documents to Google, etc.
  • Preliminary implementation of storage engine for collect real-life logs.
  • Understanding structure of Psi's code.

[edit] local-1

  • Discuss engine's structure with Kevin and Remko.
  • Design and discuss UI with Remko and Kevin.

[edit] local-2

  • Implementation of storage engine — code.

[edit] local-3

  • UI – models.
  • UI — views, main window.

[edit] remote-1

  • Reading and understanding of XEP-136.
  • Understanding Iris' API.
  • Find or install jabber-server with support of XEP-136; experiments with it and XML-console.

[edit] remote-2

  • RSM
  • XEP-82
  • archive task

[edit] remote-3

  • integration with model and GUI

[edit] integraion

  • UI — options window.
  • Integration with Psi — private messages, MUC.

...

[edit] Back-end

There are two main types of objects: collections and entries.

Collection is... well... a collection of entries. :) It have several attributes: buddy's JID, creation time, subject, thread.

Entries have several types: private message to/from user, MUC user and system message.

Also there are bookmarks – references to entries, collections or several other bookmarks.

[edit] Database design

Image:History database design.png

[edit] Main principles

  • It's impossible to create an entry without a collection; entries may be created only by collection, or by copying another valid entry.
  • All information stored in db without delay; for example, creating entry by collection will call INSERT statement.

[edit] UI

[edit] Trillian

Image:Gsoc08_history_trillian.jpg

Nice, but activity graph is useless.

[edit] Miranda

Image:Gsoc08_history_miranda.png

Very nice! Integration list of collections with calendar into tree is really useful feature.

[edit] Jaiku :)

Image:Psi-jaiku.png

More info.

[edit] Proposed for Psi

Image:Historydlg_v2.png Blog post.

[edit] Options and parameters

  • One database is used for all accounts – it's useful for search and must not be performance problem.
  • User may switch off logging for particular JID, group or account.
  • Whole database must be encrypted. (to discuss how)

[edit] Notes

[edit] TODO (someday)

  • done - Backend redesign:
    • done - prepared queries ( bindValue )
    • done - columns by name ( query.record().indexOf("colname") )
    • done - arg()'s are evil: QString("%1 : %2").arg("%1X").arg("foo")
    • done - to save more data
  • database encryption!
  • special interface for "normal" messages (may be like e-mail?)
  • store PEPs?
  • autoexport to plain text (for textshell)

[edit] Google Talk

http://code.google.com/apis/talk/jep_extensions/otr.html

http://code.google.com/apis/talk/jep_extensions/usersettings.html

GTalk's disco info contains "http://jabber.org/protocol/archive#otr" and "http://jabber.org/protocol/archive#save" features, which are old namespaces for XEP-136. This means you can save or not to save your messages, but you can't retrieve them. ( version 0.6? that is the last one edited by Jon Perlow from Google )

[edit] Servers with support of XEP-136

Feature
Open Archive 1.04
mod_archive
Namespace http://www.xmpp.org/extensions/xep-0136.html#ns
2. Archiving Preferences not implemented at all
2.3 Determining Preferences feature-not-implemented
2.4 Setting Default Modes feature-not-implemented
2.5 Setting Modes for a Contact
2.6 Setting Archiving Method Preferences
5. Manual Archiving not implemented at all
5.2 Uploading Messages to a Collection feature-not-implemented
5.3 Changing the Subject of a Collection
5.4 Offline Messages
5.5 Groupchat Messages
6. Automatic Archiving unable to enable/disable by user request
7. Archive Management
7.1 Retrieving a List of Collections works
7.2 Retrieving a Collection works
7.3 Removing a Collection feature-not-implemented
8. Replication feature-not-implemented
9. Determining Server Support (disco) no

[edit] Files to be changed

Integration:

  • psicon.* – d->edb stuff ( constructor, destructor, edb() )
  • psiaccount.* – logEvent(), edb_finished()

--AlekSi 10:43, 14 August 2008 (EDT)

Personal tools