Projects/PIM/RSS framework for Akonadi

< Projects‎ | PIM
Revision as of 12:49, 11 August 2008 by Vonami (Talk | contribs)

Jump to: navigation, search


Needs research

  • What are possible settings for the resource?
  • Read up on OPML/RSS/Atom spec (+ on the itunes podcast extension so we can set appropriate attributes; other extensions?)
  • Possible Nepomuk RSS ontology (I found one on the web, not sure if it's correct)

Long-term project goals

  • Finish the basic framework (the goal of this SoC project)
  • Port Akregator to it/rewrite Akregator from scratch
  • Improve virtual/search feeds (Nepomuk/Strigi/Akonadi virtual collections?)
  • Create a generic RSS Akonadi resource that allows to easily add other types of RSS sources (RSS feeds from an Openchange server, online feed readers)
  • Implement an RSS resource for the online reader
  • Get KDE4/Akonadi/this RSS framework up and running on my N800 so I can *finally* read feeds everywhere and sync them via

Bugs to track down

  • aboutToQuit() is not called when manually removing the resource via akonadiconsole (tracked down). aboutToQuit() is called from within AgentBase::quit() so it's invoked only in the second case:
    • When removing a resource via akonadiconsole the calling sequence is:
      • AgentManager::removeInstance(instance)
      • org::freedesktop::Akonadi::AgentManager::removeAgentInstance(id) - via D-Bus
      • org::freedesktop::Akonadi::Agent::Control::cleanup() - via D-Bus
    • When removing a resource at 'akonadictl stop' the calling sequence is:
      • org::freedesktop::Akonadi::AgentManager::~AgentManager() - from akonadictl
      • org::freedesktop::Akonadi::AgentManager::AgentManager::cleanup()
      • org::freedesktop::Akonadi::Agent::Control::quit() - via D-Bus for every agent

Akonadi wishlist

  • Batch jobs for modifying/deleting collections/items: it would be great to have jobs which perform operations on several entities in one sitting (a use-case: I want to modify a set of items to reset the \Seen flag).
  • Batch job to retrieve a set of items from Akonadi. Those items don't belong to the same collection, rather they are located in different collections [must have]
  • CollectionFetchJob/ItemFetchJob should be able to retrieve entities:
    • by flags [must have]: I want to retrieve all items with the \Seen flag set.
    • by remote ids [must have]: I'm not sure whether that would improve the performance of ItemSync but at least I'll be able to implement a fast sync algorithm for RSS items
  • ResourceBase::collectionsRetrievalDone is missing. I'm working around by calling collectionsRetrievedIncremental() with empty collection lists
  • Monitor::itemChanged() and Monitor::itemRemoved() don't say which collection the changed/removed item belongs to. If the item resides in several collections (normal + virtual collections) then emit those signals for each collection. [must have]. I'm working around by keeping a mapping 'item => its collection'
  • Provide a new command 'LINK': Akonadi resources should be able to link items to virtual/search collections [must have]. Since the RSS resource is going to be the first user of this feature, I can take a stab at this (after SoC).
  • No parallel execution of jobs within an Akonadi::ResourceBase. I'm using a custom D-Bus interface to start parallel jobs.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal