Projects/PIM/RSS framework for Akonadi

< Projects‎ | PIM
Revision as of 13:20, 22 January 2009 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)


  • Akonadi (default) tag provider (Dmitry, in process)
  • Use Tag class everywhere (Dmitry, in process)
  • Refactor the chain: KRss::Item should hold Akonadi::Item which in turn should hold shared_ptr<KRss::ItemPayload> (as payload) and make the RSS serializer plugin work with KRss::ItemPayload instead of KRss::Item (Dmitry)
  • Proper initialization of the RSS resource (Dmitry. Finally I figured out what was wrong)
  • Finish the virtual RSS resource for managing virtual/search RSS feeds (Dmitry. The code floats around somewhere on my disk. There were two blockers on the Akonadi side - the DBus deadlocks and support for link/unlink jobs - which are finally resolved)
  • Proper handling of icons in feed/item/tag classes (Dmitry)
  • Replace the hard-coded values with consts (application/rss+xml and so on) (Dmitry)

Long-term project goals

  • Port Akregator to this framework
  • 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

Now at the core TODO-List

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