KDE PIM/Akonadi Next/Current Akonadi

From KDE Community Wiki

Original Akonadi Design

Reasons for akonadi:

  • commond database for applications (interaction)
  • separation from service access to data-access (shared backends between applications)
  • framework to run backround synchronization processes
  • editable offline cache

Forces for original design:

  • stability through separation of processes
  • IMAP compatibility (deprecated)
  • Backwards compatibility through ASAP protocol (database separation)
  • Handling of external payloads (necessary in SQL), with ASAP protocol (no direct db access)
  • Dynamic requests of payload parts from backend (online imap, parts system)
  • separate writer process to make absolutely sure there is no corruption in the storage layer

Existing Akonadi Features

  • Server-Side searches via resource
  • Referenced collections as a temporary subscription (causing immediate syncronization of remote data), with automatic cache expiry once the last application session closes.

Domain Objects

Item:

  • uid
  • revision
  • rid
  • remoteRevision
  • gid
  • parts
  • mimetype
  • datetime
  • atime
  • dirty
  • size
  • flags
  • tags
  • parentCollection
  • storageCollection

Collection:

  • uid
  • remoteId
  • remoteRevision
  • name
  • parent
  • resource
  • cachePolicy
    • inherit
    • check interval
    • cache timeout
    • sync on demand
    • local parts
  • queryString
  • isVirtual
  • queryAttributes
  • queryCollections
  • enabled
  • syncPref
  • displayPref
  • indexPref
  • referenced
  • content mimetypes
  • attributes
    • display name/color/
    • access rights
  • statistics

Tag:

  • uid
  • gid
  • parent
  • type

Relation:

  • left
  • right
  • type

Commands

Item:

  • AKAPPEND
  • APPEND
  • COPY
  • FETCH
  • LINK
  • MERGE
  • MOVE
  • REMOVE
  • STORE

Collections:

  • CAPABILITY
  • COLCOPY
  • COLMOVE
  • CREATE
  • DELETE
  • EXPUNGE
  • LIST
  • MODFIY
  • STATUS

Misc:

  • LOGIN
  • SELECT
  • SUBSCRIBE
  • TRANSACTION

Search:

  • SEARCH
  • SEARCHPERSISTENT

Resource:

  • RESOURCESELECT

Relations:

  • RELATIONFETCH
  • RELATIONREMOVE
  • RELATIONSTORE

Tags:

  • TAGAPPEND
  • TAGREMOVE
  • TAGFETCH
  • TAGSTORE