KDE PIM/Akonadi Next/Current Akonadi
< KDE PIM | Akonadi Next
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