Difference between revisions of "Projects/PIM/RSS framework for Akonadi"

< Projects‎ | PIM
Jump to: navigation, search
(add TODO)
(mark as done)
 
(14 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Needs research ==
+
== Akonadi sprint notes ==
  
 +
* Roadmap?
 +
* Multiple resources
 +
* Profiling krss using real data and optimization
 +
* How to represent tagged items in the UI?
 +
* Can we share model code with Stephen's new (item) models?
 +
* Feed* -> Feed::Id? ''' - Dmitry, almost done'''
 +
* Flattening the Feed class Hierarchy? ''' - done'''
 +
* Expiry
 +
* Trash?
 +
* Filtering
 +
* Icons (see below)
 +
 +
Akonadi wishlist:
 +
 +
* Batch jobs
 +
* Search
 +
 +
== Needs research ==
 +
 
* What are possible settings for the resource?
 
* 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?)
 
* Read up on OPML/RSS/Atom spec (+ on the itunes podcast extension so we can set appropriate attributes; other extensions?)
Line 7: Line 26:
 
== TODO ==
 
== TODO ==
  
* Akonadi (default) tag provider (Dmitry, in process)
+
* Akonadi (default) tag provider (Dmitry, in process) - '''done'''
* Use Tag class everywhere (Dmitry, in process)
+
* Use Tag class everywhere (Dmitry, in process) - '''done'''
* 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)
+
* Refactor the chain: KRss::Item should hold Akonadi::Item which in turn should hold KRss::ItemPayload (as payload) and make the RSS serializer plugin work with KRss::ItemPayload instead of KRss::Item (Dmitry) - '''done'''
* 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)
 
* 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)
 +
* Use stl algorithms instead of Q_FOREACH (Dmitry)
 +
* Split the item into 2 parts: Headers and Content (Dmitry) - '''done'''
 +
* If the resource was not configured by the user (for example when migrating the feedlist from Akregator) create a new OPML file in the default location (somewhere in .kde/share/apps/) - '''done'''
 +
* BUG: when configuring the resource, tags are not imported from the OPML document (maybe it makes sense to have an option 'Import categories and folders as tags')
 +
* Make TreeNode public and pass it around by shared_ptr and kill AbstractFeed* classes - '''done'''
 +
* Don't use Akonadi IDs in the public interfaces - '''done'''
 +
* Replace Akonadi::ItemFetchScope with our own ItemFetchScope
 +
* BUG: Make the Akonadi RSS (de)serializer plugin more reliable wrt empty items - '''done'''
 +
* BUG: content of the item gets erased when attaching a tag to it
 +
* Fine-tune monitoring as it affects the performance of the library a lot
 +
* Add FetchFeedJob test
 +
* Add ExportOpmlJob test
 +
* ItemDeleteJob should only mark items as deleted and probably hardlink them into 'Trash' virtual collection
  
 
== Long-term project goals ==
 
== Long-term project goals ==
Line 19: Line 52:
 
* Implement an RSS resource for the Newsgator.com online reader
 
* Implement an RSS resource for the Newsgator.com 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 NG.com
 
* Get KDE4/Akonadi/this RSS framework up and running on my N800 so I can *finally* read feeds everywhere and sync them via NG.com
 
== 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 ==
 
== Akonadi wishlist ==
 +
  
 
Now at the core [[Projects/PIM/Akonadi#Core|TODO-List]]
 
Now at the core [[Projects/PIM/Akonadi#Core|TODO-List]]
  
 
[[Category:PIM]]
 
[[Category:PIM]]

Latest revision as of 14:49, 9 July 2009

Contents

[edit] Akonadi sprint notes

  • Roadmap?
  • Multiple resources
  • Profiling krss using real data and optimization
  • How to represent tagged items in the UI?
  • Can we share model code with Stephen's new (item) models?
  • Feed* -> Feed::Id? - Dmitry, almost done
  • Flattening the Feed class Hierarchy? - done
  • Expiry
  • Trash?
  • Filtering
  • Icons (see below)

Akonadi wishlist:

  • Batch jobs
  • Search

[edit] 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)

[edit] TODO

  • Akonadi (default) tag provider (Dmitry, in process) - done
  • Use Tag class everywhere (Dmitry, in process) - done
  • Refactor the chain: KRss::Item should hold Akonadi::Item which in turn should hold KRss::ItemPayload (as payload) and make the RSS serializer plugin work with KRss::ItemPayload instead of KRss::Item (Dmitry) - done
  • 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)
  • Use stl algorithms instead of Q_FOREACH (Dmitry)
  • Split the item into 2 parts: Headers and Content (Dmitry) - done
  • If the resource was not configured by the user (for example when migrating the feedlist from Akregator) create a new OPML file in the default location (somewhere in .kde/share/apps/) - done
  • BUG: when configuring the resource, tags are not imported from the OPML document (maybe it makes sense to have an option 'Import categories and folders as tags')
  • Make TreeNode public and pass it around by shared_ptr and kill AbstractFeed* classes - done
  • Don't use Akonadi IDs in the public interfaces - done
  • Replace Akonadi::ItemFetchScope with our own ItemFetchScope
  • BUG: Make the Akonadi RSS (de)serializer plugin more reliable wrt empty items - done
  • BUG: content of the item gets erased when attaching a tag to it
  • Fine-tune monitoring as it affects the performance of the library a lot
  • Add FetchFeedJob test
  • Add ExportOpmlJob test
  • ItemDeleteJob should only mark items as deleted and probably hardlink them into 'Trash' virtual collection

[edit] 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 Newsgator.com 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 NG.com

[edit] Akonadi wishlist

Now at the core TODO-List


This page was last modified on 9 July 2009, at 14:49. This page has been accessed 8,071 times. Content is available under Creative Commons License SA 3.0 as well as the GNU Free Documentation License 1.2.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal