GSoC08 Message History
From PsiWiki
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
[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
Nice, but activity graph is useless.
[edit] Miranda
Very nice! Integration list of collections with calendar into tree is really useful feature.
[edit] Jaiku :)
[edit] Proposed for Psi
[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
- OpenFire with Open Archive by Stefan Reuter. (bug-tracker)
- ejabberd(2?) with mod_archive(_odbc)
| 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)






