<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://techbase.kde.org/skins/common/feed.css?0.2"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://techbase.kde.org/api.php?action=feedcontributions&amp;user=Cmollekopf&amp;feedformat=atom</id>
		<title>KDE TechBase - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://techbase.kde.org/api.php?action=feedcontributions&amp;user=Cmollekopf&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Special:Contributions/Cmollekopf"/>
		<updated>2013-05-24T19:26:26Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan</id>
		<title>Schedules/KDE4/4.11 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan"/>
				<updated>2013-05-22T09:04:22Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: /* kdepim */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.11 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.11 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.10 Feature Plan]] (previous major release)&lt;br /&gt;
*[[Schedules/KDE4/4.12 Feature Plan]] (next major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*to do =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureInProgress|nepomuk filemetadatawidget|Nepomuk Metadata Widget|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukcontroller-qml|QML version of the current Nepomuk controller. |joerg.ehrichs@gmx.de|Jörg Ehrichs}}&lt;br /&gt;
{{FeatureDone|Web Shortcuts|Update old shortcuts.|de.meyer.maarten@gmail.com|Maarten De Meyer}}&lt;br /&gt;
{{FeatureDone|Web Shortcuts|Use https where possible. ({{bug |308029}})|de.meyer.maarten@gmail.com|Maarten De Meyer}}&lt;br /&gt;
{{FeatureDone|Web Shortcuts|Look for url on clipboard when creating new shortcut. ({{bug |146880}})|de.meyer.maarten@gmail.com|Maarten De Meyer}}&lt;br /&gt;
{{FeatureInProgress|Web Shortcuts|Insert query placeholder button. ({{bug |146879}})|de.meyer.maarten@gmail.com|Maarten De Meyer}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Medium focus stealing prevention should also prevent focus stealing when the timestamp on the active window is uncertain ({{bug |304746}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Integration with KScreen ({{bug |319994}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Support for buffer age extensions ({{bug |319995}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Egl backend using Wayland Surfaces ({{bug |319996}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|KWin keybindings is missing a shortcut for move window to previous screen ({{bug |303083}})|thomas.luebking@gmail.com}}&lt;br /&gt;
{{FeatureTodo|kwin|There should be a shortcut to close window group ({{bug |238233}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|JJ: Use a bit of Wobbly effect while closing a window also. ({{bug |250856}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Highlight/shadow of application on screen 1 displayed on screen 0 ({{bug |278697}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Allow Effects to Temporarily Grab All Screen Edges ({{bug |283397}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Translucency Effect needs to be rewritten on top of AnimationEffect ({{bug |294856}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make ShaderManager act as a real stack ({{bug |300349}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display content of resizing/moving windows: KDE-Help shows obsolete instructions ({{bug |305297}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Broken Desktop Switch On-Screen Display Animation ({{bug |316372}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Windows with no border (decoration) are visible on all activities ({{bug |274931}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|&amp;quot;Thumbnail Aside&amp;quot; effect visible when screen is locked -- privacy issue ({{bug |255712}}, Review 108670)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Quick Tile shortcuts should be toggle buttons ({{bug |263755}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Shaded windows are not considered in ::checkWorkspacePosition ({{bug |268660}}, Review 109679)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|build fails - getdomainname ({{bug |270586}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Window Specific Settings for Disabling Screen Edges ({{bug |271607}}, Review 108513)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add fade in/fade out for outline effect ({{bug |274474}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Compositing not possible on each screen with multi head ({{bug |282677}}, Review 107853)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Remove &amp;quot;Move TBLR&amp;quot; from Zoom or at least pass the shortcuts reasonable names ({{bug |288903}}, Review 108290)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Hot Screen Corners do not work properly in multiscreen setup with different resolutions ({{bug |290887}}, Review 108513)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|When &amp;quot;dim inactive&amp;quot; is used, and &amp;quot;apply effect to groups&amp;quot; is disabled, blocky shadows appear everywhere ({{bug |293236}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|kwin does not honor disableMultihead true and causes window focus problems ({{bug |293734}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|DesktopThumbnailItem for QML ({{bug |296067}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Packages for Desktop Switching Layouts ({{bug |296068}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Walk Through Desktop layout rendering desktop previews ({{bug |296069}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Move ThumbnailBar from BoxSwitch to CoverSwitch ({{bug |296070}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Drop BoxSwitch effect ({{bug |296071}}, Review 104454)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}}, Review 109572)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|New Window Decoration for Thin Clients ({{bug |299143}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Get rid of  &amp;quot;Display borders on maximized windows&amp;quot; setting ({{bug |299245}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Cube animation on border approach should not be used unless the electric borders are actually in use and the config should be disabled, align or hint the electric border configuration ({{bug |299901}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|clientPopup: &amp;quot;'More actions' and &amp;quot;Attach as tab to&amp;quot;  lack mnemonics ({{bug |302833}}, Review 110402)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Make KWin compile with C++11 ({{bug |303313}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Maximized windows should be moved and maximized to second screen if they are moved with shortcut ({{bug |304506}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Window shortcut containing space: &amp;quot;Launch Mail&amp;quot; doesn't work ({{bug |305434}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Windows list icon does not show up in &amp;quot;Walk Through Desktop List&amp;quot; ({{bug |306187}}, Review 108445)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|The &amp;quot;walk through desktop&amp;quot; shortcuts don't show up in the desktop kcm ({{bug |306404}}, Review 108287)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Game mode ({{bug |306448}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Usability issue: &amp;quot;Attach as tab to&amp;quot; menu can be empty ({{bug |306451}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Upper part of windows tears when moving it left/right ONLY in upper part of display ({{bug |307965}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|KWin uses getdomainname() to obtain the hostname, should use getaddrinfo() ({{bug |308391}}, Review 108235)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Use Resize Area in Aurorae ({{bug |308992}}, Review 107936)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Configurable quick tile area config GUI ({{bug |308993}}, Review 109683)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Crash in KWin::Screenedge::unreserve on deactivating Actos script ({{bug |309695}}, Review 108513)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|[JJ] GHNS button displays icon, even if disabled in style settings ({{bug |309724}}, Review 108286)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|ScreenEdge::raisePanelProxies() is slow due to sync XLib communication ({{bug |311592}}, Review 108513)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|add rule to disobey configure requests ({{bug |311720}}, Review 109691)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Drop explosion effect ({{bug |312176}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Windows wider/taller than screen are cut off/partially mirrored when doing a screenshot of them using ksnapshot ({{bug |312851}}, Review 108258)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Desktop Effects - Zoom: Mouse Tracking &amp;quot;Push&amp;quot; laggy, inprecise and/or not working ({{bug |312956}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|&amp;quot;Login&amp;quot; effect does not fade in on secondary monitor(s) with a multi screen setup ({{bug |313061}}, Review 108362)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Overlap factor of keepAbove windows in placeSmart should be infinite ({{bug |313379}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|XReconfigureWMWindow fails to stack (lower) a window using an Above CWSibling combination ({{bug |313909}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Position rule conflicts with maximization rule ({{bug |314392}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|String representation of KWin::Client should include caption, not name. ({{bug |314402}}, Review 108959)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Please explain the meaning of vsync in the config gui ({{bug |314998}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|KWin crashes when switching windows ({{bug |315528}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|kwin crash when clicking kickoff widget (&amp;quot;K menu&amp;quot;) ({{bug |315951}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Dual screen issue caused by d6b3f6983efebc42abd6028ece9c3ec7facea2d0 ({{bug |316040}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Description text for the Slide Back effect is incorrect ({{bug |316877}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Java Swing Apps do not receive Deiconify event if window is shaded ({{bug |317025}}, Review 109593)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Snapping: Can no longer move window to occupy full screen width ({{bug |317845}}, Review 109864)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|when using flip switch to switch virtual desktop, activating hot corner trigger becomes difficult ({{bug |318294}}, Review 110013)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Mouse action support for sending window to different activity ({{bug |305758}})|rickstockton@reno-computerhelp.com}}&lt;br /&gt;
{{FeatureDone|kwin|'Slide back' effect should react on stacking order changes ({{bug |294490}})|thomas.luebking@gmail.com}}&lt;br /&gt;
{{FeatureDone|kwin|Track mouse effect generates graphics artifacts ({{bug |304435}})|thomas.luebking@gmail.com}}&lt;br /&gt;
{{FeatureDone|kwin|vertical maximization doesn't work as expected ({{bug |91703}}, Review 103948)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Slide Back: Sometimes the Inactive window pops to the font for apprx. one frame when it is activated. ({{bug |294865}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureTodo|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex specification|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Partial port to xcb|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|New launch feedback effect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|activities|Encrypted activities|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Improve profile error handling (DPMS)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Social Feed|mklapetek@kde.org|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Order and group tasks by activity|fid@gpul.org|José Millán Soto}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Ability to sort entries in the sub-menus ({{bug |108419}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Add move up/down buttons ({{bug |61537}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureDone|plasma notifications|Add button to notifications that allow configuring them|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureDone|plasma batterymonitor|Improve situtation with multiple batteries (show battery names, dont just sum up _all_ the percentages etc)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Implement notifications for non-internal batteries (aka &amp;quot;Your mouse is running low&amp;quot;)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|plasma batterymonitor|UI overhaul for battery monitor|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Remember action settings when action is disabled|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|klipper|Allow to keep items in clipboard history|fid@gpul.org|José Millán Soto}}&lt;br /&gt;
{{FeatureTodo|plasma weather data engine|Add search query (based on code from libplasmaweather)|emdeck@gmail.com|Michał Dutkiewicz}}&lt;br /&gt;
{{FeatureTodo|plasma weather data engine|Allow to sort search results by relevance score|emdeck@gmail.com|Michał Dutkiewicz}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Clean up Places panel context menus|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|Search-plugin: Add &amp;quot;Current file mode&amp;quot;|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|Search-plugin: As-you-type search in current file|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|Search-plugin: Multi line search &amp;amp; replace|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|Search-plugin: Replace &amp;quot;\&amp;lt;number&amp;gt;&amp;quot; with corresponding regexp-captures in the replace string|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|gdb-plugin: Unify the stack trace and local variables to one ToolView|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|gdb-plugin: Do not update stack/locals view if not visible|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Vim Mode Macro support|kdedevel@etothepiplusone.com|Simon St James}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté plugin now supports Python2 or Python3 as a build-time option|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté GID plugin now supports autocompletion based on the contents of the ID file|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Many generic functions and generic classes, likely the more outstanding are the autocompletations. Now you can create a code completion model with very few lines from Python&lt;br /&gt;
|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté python utils plugin. Utils to Python: Checker Parse, Checker Pep8, Checker Pyflakes, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté javascript utils plugin. Utils to JavaScript: Autocomplete, Autocomplete jQuery, Checker JSLint, Pretty JSON, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté XML pretty plugin. A simple XML pretty printer. XML formatter which a good indents|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Django utils plugin. Utils to Django: Snippets, and template utils|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Python autocomplete plugin.|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|[http://kate-editor.org/2013/04/23/a-rich-python-console-and-more-in-kate-editor/ Integration of the python_autocomplete and python_console_ipython plugins with the project plugin] .|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Improve the search filter bar|francesco.cecconi@gmail.com|Francesco Cecconi}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Add the --separate cmdline option for running in new process|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
{{FeatureTodo|Konsole|Make the d&amp;amp;d popup menu optional|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konqueror|Settings for WebKit Part|sandfeld@kde.org|Allan Sandfeld}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureDone|Marble|OSM vector rendering (GSOC branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Dock Widgets|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Stars Constellations|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|KML I/O Improvements|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Basic KML Editor|tgridel@free.fr|Thibaut Gridel}}&lt;br /&gt;
{{FeatureDone|Marble|WebKit Powered Info Dialog|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|License Information Info Box|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|Navigation Tool Redesign|rahn@kde.org|Torsten Rahn, Mohammed Nafees}}&lt;br /&gt;
{{FeatureTodo|Marble|Zoom to content of geo file after loading (at least on start-up)|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files thumbnailer|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files metadata extractor|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Marble|GHNS Map Installation In Marble Qt|earthwings@gentoo.org|Dennis Nienhüser}}{{FeatureInProgress|Marble|Support GPX-tracks in elevationProfile|roman.karlstetter@googlemail.com|Roman Karlstetter}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|In-Program documentation for scripting API|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Scripting API cleanup|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Statistics module: scripts may add statistics data during algorithm executions|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Text-only interface for Rocs aka Cantor backend|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Worksheet Integration|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Python backend|filipe@kde.org|Filipe Saraiva}}&lt;br /&gt;
{{FeatureInProgress|Kig|Geogebra Support|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|Kig|CAS Backend|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Matrix support|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|KTouch|Right-to-Left Training|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureInProgress|KTouch|Support for Custom Lessons|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|KStars|User data and Custom Catalog SQLite Databases|ra.rishab@gmail.com|Rishab Arora}}&lt;br /&gt;
{{FeatureDone|KStars|What's Interesting Tool|samikshan@gmail.com|Samikshan Bairagya}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|KJumpingCube|Make computer think-times shorter and responses faster|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Provide five skill levels (previously three)|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Provide board size up to 15x15 (previously 10x10)|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add multi-move undo and redo (previously one move only)|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Improve the algorithm for computer opponent Newton|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Make a new toolbar layout with a general-purpose stop-start button|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add optional pauses after computer moves or animation steps, to help new players understand how the game works|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Major internal restructure and rewrite: involving separation of model, view, control and AI classes, new classes for Game and AI_Box and executing AI code on a separate thread|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|kolourpaint|WebP image format plugin|kollix@aon.at|Martin Koller}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|okular|Configurable review tools {{bug |159601}}|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
{{FeatureInProgress|okular|Undo/Redo support in PDF forms {{bug |177501}}|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureInProgress|Juk|Support excluding directories from a recursive search [https://git.reviewboard.kde.org/r/110273/ Review Request 110273]|biergaizi2009@gmail.com|Tom Li}}&lt;br /&gt;
{{FeatureDone|Juk|Add support for [http://www.opus-codec.org/ Ogg Opus audio editing/playback] (requires TagLib and Phonon also support)|mpyne@kde.org|Michael Pyne}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KGet|Metalink/HTTP Support|dahalaishraj@gmail.com|Aish Raj Dahal}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureTodo|kcalcore|Support for ical UID property in kdepim (kcalcore and gui)|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureTodo|Akonadi Client Libraries|GID Fetch Support|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureInProgress|KABC|use uid's for references in ContactGroups|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|SendLaterAgent|Agent for allow to send later mails|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|PimActivity|Create a library to support activity in pim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureDone|headerthemeeditor|Program to edit kmail header theme based on Grantlee|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|Sieve|Add support for autogenerate sieve script|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|Blogilo|Use new widget component based on qtwebkit for html editor|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|ImportWizard|Allow to import settings/data for trojita and improve all others importer|montel@kde.org|Montel Laurent}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add tagged unions to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add array indices to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Umbrello| widget resize and diagram auto resize feature |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureTodo|Umbrello|add spline based association lines to avoid autolayout widget/line overlapping (needs volunteers)|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|KWallet|UI Refactoring|kde@rusu.info|Valentin Rusu}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdetoys =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|KTeaTime|Bring back the system tray progress indicator known from KTeaTime 4.6.5 and earlier ({{bug |279222}})|kde@hilefoks.org|Stefan Böhmann}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan</id>
		<title>Schedules/KDE4/4.11 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan"/>
				<updated>2013-05-22T09:01:00Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: /* kdepim */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.11 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.11 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.10 Feature Plan]] (previous major release)&lt;br /&gt;
*[[Schedules/KDE4/4.12 Feature Plan]] (next major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*to do =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureInProgress|nepomuk filemetadatawidget|Nepomuk Metadata Widget|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukcontroller-qml|QML version of the current Nepomuk controller. |joerg.ehrichs@gmx.de|Jörg Ehrichs}}&lt;br /&gt;
{{FeatureDone|Web Shortcuts|Update old shortcuts.|de.meyer.maarten@gmail.com|Maarten De Meyer}}&lt;br /&gt;
{{FeatureDone|Web Shortcuts|Use https where possible. ({{bug |308029}})|de.meyer.maarten@gmail.com|Maarten De Meyer}}&lt;br /&gt;
{{FeatureDone|Web Shortcuts|Look for url on clipboard when creating new shortcut. ({{bug |146880}})|de.meyer.maarten@gmail.com|Maarten De Meyer}}&lt;br /&gt;
{{FeatureInProgress|Web Shortcuts|Insert query placeholder button. ({{bug |146879}})|de.meyer.maarten@gmail.com|Maarten De Meyer}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Medium focus stealing prevention should also prevent focus stealing when the timestamp on the active window is uncertain ({{bug |304746}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Integration with KScreen ({{bug |319994}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Support for buffer age extensions ({{bug |319995}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Egl backend using Wayland Surfaces ({{bug |319996}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|KWin keybindings is missing a shortcut for move window to previous screen ({{bug |303083}})|thomas.luebking@gmail.com}}&lt;br /&gt;
{{FeatureTodo|kwin|There should be a shortcut to close window group ({{bug |238233}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|JJ: Use a bit of Wobbly effect while closing a window also. ({{bug |250856}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Highlight/shadow of application on screen 1 displayed on screen 0 ({{bug |278697}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Allow Effects to Temporarily Grab All Screen Edges ({{bug |283397}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Translucency Effect needs to be rewritten on top of AnimationEffect ({{bug |294856}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make ShaderManager act as a real stack ({{bug |300349}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display content of resizing/moving windows: KDE-Help shows obsolete instructions ({{bug |305297}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Broken Desktop Switch On-Screen Display Animation ({{bug |316372}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Windows with no border (decoration) are visible on all activities ({{bug |274931}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|&amp;quot;Thumbnail Aside&amp;quot; effect visible when screen is locked -- privacy issue ({{bug |255712}}, Review 108670)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Quick Tile shortcuts should be toggle buttons ({{bug |263755}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Shaded windows are not considered in ::checkWorkspacePosition ({{bug |268660}}, Review 109679)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|build fails - getdomainname ({{bug |270586}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Window Specific Settings for Disabling Screen Edges ({{bug |271607}}, Review 108513)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add fade in/fade out for outline effect ({{bug |274474}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Compositing not possible on each screen with multi head ({{bug |282677}}, Review 107853)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Remove &amp;quot;Move TBLR&amp;quot; from Zoom or at least pass the shortcuts reasonable names ({{bug |288903}}, Review 108290)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Hot Screen Corners do not work properly in multiscreen setup with different resolutions ({{bug |290887}}, Review 108513)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|When &amp;quot;dim inactive&amp;quot; is used, and &amp;quot;apply effect to groups&amp;quot; is disabled, blocky shadows appear everywhere ({{bug |293236}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|kwin does not honor disableMultihead true and causes window focus problems ({{bug |293734}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|DesktopThumbnailItem for QML ({{bug |296067}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Packages for Desktop Switching Layouts ({{bug |296068}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Walk Through Desktop layout rendering desktop previews ({{bug |296069}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Move ThumbnailBar from BoxSwitch to CoverSwitch ({{bug |296070}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Drop BoxSwitch effect ({{bug |296071}}, Review 104454)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}}, Review 109572)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|New Window Decoration for Thin Clients ({{bug |299143}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Get rid of  &amp;quot;Display borders on maximized windows&amp;quot; setting ({{bug |299245}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Cube animation on border approach should not be used unless the electric borders are actually in use and the config should be disabled, align or hint the electric border configuration ({{bug |299901}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|clientPopup: &amp;quot;'More actions' and &amp;quot;Attach as tab to&amp;quot;  lack mnemonics ({{bug |302833}}, Review 110402)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Make KWin compile with C++11 ({{bug |303313}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Maximized windows should be moved and maximized to second screen if they are moved with shortcut ({{bug |304506}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Window shortcut containing space: &amp;quot;Launch Mail&amp;quot; doesn't work ({{bug |305434}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Windows list icon does not show up in &amp;quot;Walk Through Desktop List&amp;quot; ({{bug |306187}}, Review 108445)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|The &amp;quot;walk through desktop&amp;quot; shortcuts don't show up in the desktop kcm ({{bug |306404}}, Review 108287)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Game mode ({{bug |306448}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Usability issue: &amp;quot;Attach as tab to&amp;quot; menu can be empty ({{bug |306451}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Upper part of windows tears when moving it left/right ONLY in upper part of display ({{bug |307965}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|KWin uses getdomainname() to obtain the hostname, should use getaddrinfo() ({{bug |308391}}, Review 108235)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Use Resize Area in Aurorae ({{bug |308992}}, Review 107936)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Configurable quick tile area config GUI ({{bug |308993}}, Review 109683)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Crash in KWin::Screenedge::unreserve on deactivating Actos script ({{bug |309695}}, Review 108513)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|[JJ] GHNS button displays icon, even if disabled in style settings ({{bug |309724}}, Review 108286)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|ScreenEdge::raisePanelProxies() is slow due to sync XLib communication ({{bug |311592}}, Review 108513)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|add rule to disobey configure requests ({{bug |311720}}, Review 109691)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Drop explosion effect ({{bug |312176}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Windows wider/taller than screen are cut off/partially mirrored when doing a screenshot of them using ksnapshot ({{bug |312851}}, Review 108258)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Desktop Effects - Zoom: Mouse Tracking &amp;quot;Push&amp;quot; laggy, inprecise and/or not working ({{bug |312956}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|&amp;quot;Login&amp;quot; effect does not fade in on secondary monitor(s) with a multi screen setup ({{bug |313061}}, Review 108362)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Overlap factor of keepAbove windows in placeSmart should be infinite ({{bug |313379}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|XReconfigureWMWindow fails to stack (lower) a window using an Above CWSibling combination ({{bug |313909}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Position rule conflicts with maximization rule ({{bug |314392}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|String representation of KWin::Client should include caption, not name. ({{bug |314402}}, Review 108959)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Please explain the meaning of vsync in the config gui ({{bug |314998}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|KWin crashes when switching windows ({{bug |315528}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|kwin crash when clicking kickoff widget (&amp;quot;K menu&amp;quot;) ({{bug |315951}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Dual screen issue caused by d6b3f6983efebc42abd6028ece9c3ec7facea2d0 ({{bug |316040}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Description text for the Slide Back effect is incorrect ({{bug |316877}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Java Swing Apps do not receive Deiconify event if window is shaded ({{bug |317025}}, Review 109593)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Snapping: Can no longer move window to occupy full screen width ({{bug |317845}}, Review 109864)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|when using flip switch to switch virtual desktop, activating hot corner trigger becomes difficult ({{bug |318294}}, Review 110013)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Mouse action support for sending window to different activity ({{bug |305758}})|rickstockton@reno-computerhelp.com}}&lt;br /&gt;
{{FeatureDone|kwin|'Slide back' effect should react on stacking order changes ({{bug |294490}})|thomas.luebking@gmail.com}}&lt;br /&gt;
{{FeatureDone|kwin|Track mouse effect generates graphics artifacts ({{bug |304435}})|thomas.luebking@gmail.com}}&lt;br /&gt;
{{FeatureDone|kwin|vertical maximization doesn't work as expected ({{bug |91703}}, Review 103948)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Slide Back: Sometimes the Inactive window pops to the font for apprx. one frame when it is activated. ({{bug |294865}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureTodo|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex specification|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Partial port to xcb|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|New launch feedback effect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|activities|Encrypted activities|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Improve profile error handling (DPMS)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Social Feed|mklapetek@kde.org|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Order and group tasks by activity|fid@gpul.org|José Millán Soto}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Ability to sort entries in the sub-menus ({{bug |108419}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Add move up/down buttons ({{bug |61537}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureDone|plasma notifications|Add button to notifications that allow configuring them|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureDone|plasma batterymonitor|Improve situtation with multiple batteries (show battery names, dont just sum up _all_ the percentages etc)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Implement notifications for non-internal batteries (aka &amp;quot;Your mouse is running low&amp;quot;)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|plasma batterymonitor|UI overhaul for battery monitor|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Remember action settings when action is disabled|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|klipper|Allow to keep items in clipboard history|fid@gpul.org|José Millán Soto}}&lt;br /&gt;
{{FeatureTodo|plasma weather data engine|Add search query (based on code from libplasmaweather)|emdeck@gmail.com|Michał Dutkiewicz}}&lt;br /&gt;
{{FeatureTodo|plasma weather data engine|Allow to sort search results by relevance score|emdeck@gmail.com|Michał Dutkiewicz}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Clean up Places panel context menus|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|Search-plugin: Add &amp;quot;Current file mode&amp;quot;|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|Search-plugin: As-you-type search in current file|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|Search-plugin: Multi line search &amp;amp; replace|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|Search-plugin: Replace &amp;quot;\&amp;lt;number&amp;gt;&amp;quot; with corresponding regexp-captures in the replace string|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|gdb-plugin: Unify the stack trace and local variables to one ToolView|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|gdb-plugin: Do not update stack/locals view if not visible|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Vim Mode Macro support|kdedevel@etothepiplusone.com|Simon St James}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté plugin now supports Python2 or Python3 as a build-time option|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté GID plugin now supports autocompletion based on the contents of the ID file|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Many generic functions and generic classes, likely the more outstanding are the autocompletations. Now you can create a code completion model with very few lines from Python&lt;br /&gt;
|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté python utils plugin. Utils to Python: Checker Parse, Checker Pep8, Checker Pyflakes, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté javascript utils plugin. Utils to JavaScript: Autocomplete, Autocomplete jQuery, Checker JSLint, Pretty JSON, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté XML pretty plugin. A simple XML pretty printer. XML formatter which a good indents|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Django utils plugin. Utils to Django: Snippets, and template utils|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Python autocomplete plugin.|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|[http://kate-editor.org/2013/04/23/a-rich-python-console-and-more-in-kate-editor/ Integration of the python_autocomplete and python_console_ipython plugins with the project plugin] .|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Improve the search filter bar|francesco.cecconi@gmail.com|Francesco Cecconi}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Add the --separate cmdline option for running in new process|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
{{FeatureTodo|Konsole|Make the d&amp;amp;d popup menu optional|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konqueror|Settings for WebKit Part|sandfeld@kde.org|Allan Sandfeld}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureDone|Marble|OSM vector rendering (GSOC branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Dock Widgets|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Stars Constellations|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|KML I/O Improvements|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Basic KML Editor|tgridel@free.fr|Thibaut Gridel}}&lt;br /&gt;
{{FeatureDone|Marble|WebKit Powered Info Dialog|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|License Information Info Box|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|Navigation Tool Redesign|rahn@kde.org|Torsten Rahn, Mohammed Nafees}}&lt;br /&gt;
{{FeatureTodo|Marble|Zoom to content of geo file after loading (at least on start-up)|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files thumbnailer|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files metadata extractor|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Marble|GHNS Map Installation In Marble Qt|earthwings@gentoo.org|Dennis Nienhüser}}{{FeatureInProgress|Marble|Support GPX-tracks in elevationProfile|roman.karlstetter@googlemail.com|Roman Karlstetter}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|In-Program documentation for scripting API|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Scripting API cleanup|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Statistics module: scripts may add statistics data during algorithm executions|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Text-only interface for Rocs aka Cantor backend|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Worksheet Integration|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Python backend|filipe@kde.org|Filipe Saraiva}}&lt;br /&gt;
{{FeatureInProgress|Kig|Geogebra Support|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|Kig|CAS Backend|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Matrix support|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|KTouch|Right-to-Left Training|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureInProgress|KTouch|Support for Custom Lessons|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|KStars|User data and Custom Catalog SQLite Databases|ra.rishab@gmail.com|Rishab Arora}}&lt;br /&gt;
{{FeatureDone|KStars|What's Interesting Tool|samikshan@gmail.com|Samikshan Bairagya}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|KJumpingCube|Make computer think-times shorter and responses faster|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Provide five skill levels (previously three)|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Provide board size up to 15x15 (previously 10x10)|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add multi-move undo and redo (previously one move only)|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Improve the algorithm for computer opponent Newton|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Make a new toolbar layout with a general-purpose stop-start button|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add optional pauses after computer moves or animation steps, to help new players understand how the game works|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Major internal restructure and rewrite: involving separation of model, view, control and AI classes, new classes for Game and AI_Box and executing AI code on a separate thread|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|kolourpaint|WebP image format plugin|kollix@aon.at|Martin Koller}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|okular|Configurable review tools {{bug |159601}}|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
{{FeatureInProgress|okular|Undo/Redo support in PDF forms {{bug |177501}}|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureInProgress|Juk|Support excluding directories from a recursive search [https://git.reviewboard.kde.org/r/110273/ Review Request 110273]|biergaizi2009@gmail.com|Tom Li}}&lt;br /&gt;
{{FeatureDone|Juk|Add support for [http://www.opus-codec.org/ Ogg Opus audio editing/playback] (requires TagLib and Phonon also support)|mpyne@kde.org|Michael Pyne}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KGet|Metalink/HTTP Support|dahalaishraj@gmail.com|Aish Raj Dahal}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureTodo|Akonadi GID Fetch Support|use uid to fetch items|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureInProgress|KABC Contact groups|use uid's for references|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|SendLaterAgent|Agent for allow to send later mails|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|PimActivity|Create a library to support activity in pim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureDone|headerthemeeditor|Program to edit kmail header theme based on Grantlee|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|Sieve|Add support for autogenerate sieve script|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|Blogilo|Use new widget component based on qtwebkit for html editor|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|ImportWizard|Allow to import settings/data for trojita and improve all others importer|montel@kde.org|Montel Laurent}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add tagged unions to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add array indices to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Umbrello| widget resize and diagram auto resize feature |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureTodo|Umbrello|add spline based association lines to avoid autolayout widget/line overlapping (needs volunteers)|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|KWallet|UI Refactoring|kde@rusu.info|Valentin Rusu}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdetoys =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|KTeaTime|Bring back the system tray progress indicator known from KTeaTime 4.6.5 and earlier ({{bug |279222}})|kde@hilefoks.org|Stefan Böhmann}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan</id>
		<title>Schedules/KDE4/4.11 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan"/>
				<updated>2013-05-17T12:33:58Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: /* kdepim */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.11 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.11 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.10 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*to do =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureInProgress|nepomuk filemetadatawidget|Nepomuk Metadata Widget|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukcontroller-qml|QML version of the current Nepomuk controller. |joerg.ehrichs@gmx.de|Jörg Ehrichs}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Medium focus stealing prevention should also prevent focus stealing when the timestamp on the active window is uncertain ({{bug |304746}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Usability issue: &amp;quot;Attach as tab to&amp;quot; menu can be empty ({{bug |306451}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Import Scripted Effect from All Effets Tab ({{bug |296772}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Get rid of  &amp;quot;Display borders on maximized windows&amp;quot; setting ({{bug |299245}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Cube animation on border approach should not be used unless the electric borders are actually in use and the config should be disabled, align or hint the electric border configuration ({{bug |299901}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make ShaderManager act as a real stack ({{bug |300349}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|clientPopup: &amp;quot;'More actions' and &amp;quot;Attach as tab to&amp;quot;  lack mnemonics ({{bug |302833}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make KWin compile with C++11 ({{bug |303313}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Copy all useful Client properties to Deleted ({{bug |303916}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display content of resizing/moving windows: KDE-Help shows obsolete instructions ({{bug |305297}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Mouse action support for sending window to different activity ({{bug |305758}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Windows list icon does not show up in &amp;quot;Walk Through Desktop List&amp;quot; ({{bug |306187}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Game mode ({{bug |306448}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Common animation settings for effects of same type ({{bug |308991}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Use Resize Area in Aurorae ({{bug |308992}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Configurable quick tile area config GUI ({{bug |308993}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Remove legacy window decorations ({{bug |299144}}, Review 104281)|kwin-bugs-null@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureTodo|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex specification|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Partial port to xcb|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|New launch feedback effect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|activities|Encrypted activities|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Improve profile error handling (DPMS)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Social Feed|mklapetek@kde.org|Martin Klapetek}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Ability to sort entries in the sub-menus ({{bug |108419}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Add move up/down buttons ({{bug |61537}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureDone|plasma notifications|Add button to notifications that allow configuring them|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureDone|plasma batterymonitor|Improve situtation with multiple batteries (show battery names, dont just sum up _all_ the percentages etc)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Implement notifications for non-internal batteries (aka &amp;quot;Your mouse is running low&amp;quot;)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|As-you-type search for the search plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureTodo|Kate|Session name API for plugins + automatic ctags database naming|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Add optional document &amp;quot;minimap&amp;quot; to the Symbols view plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Vim Mode Macro support|kdedevel@etothepiplusone.com|Simon St James}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté plugin now supports Python2 or Python3 as a build-time option|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté GID plugin now supports autocompletion based on the contents of the ID file|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Many generic functions and generic classes, likely the more outstanding are the autocompletations. Now you can create a code completion model with very few lines from Python&lt;br /&gt;
|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté python utils plugin. Utils to Python: Checker Parse, Checker Pep8, Checker Pyflakes, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté javascript utils plugin. Utils to JavaScript: Autocomplete, Autocomplete jQuery, Checker JSLint, Pretty JSON, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté XML pretty plugin. A simple XML pretty printer. XML formatter which a good indents|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Django utils plugin. Utils to Django: Snippets, and template utils|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Python autocomplete plugin.|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|[http://kate-editor.org/2013/04/23/a-rich-python-console-and-more-in-kate-editor/ Integration of the python_autocomplete and python_console_ipython plugins with the project plugin] .|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Improve the search filter bar|francesco.cecconi@gmail.com|Francesco Cecconi}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Add the --separate cmdline option for running in new process|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
{{FeatureTodo|Konsole|Make the d&amp;amp;d popup menu optional|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konqueror|Settings for WebKit Part|sandfeld@kde.org|Allan Sandfeld}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android (including SOK branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|OSM vector rendering (GSOC branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Dock Widgets|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Stars Constellations|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|KML I/O Improvements|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Basic KML Editor|tgridel@free.fr|Thibaut Gridel}}&lt;br /&gt;
{{FeatureDone|Marble|WebKit Powered Info Dialog|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|WebKit Powered Info Dialog|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|License Information Info Box|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|Navigation Tool Redesign|rahn@kde.org|Torsten Rahn, Mohammed Nafees}}&lt;br /&gt;
{{FeatureTodo|Marble|Zoom to content of geo file after loading (at least on start-up)|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files thumbnailer|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files metadata extractor|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|In-Program documentation for scripting API|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Scripting API cleanup|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Statistics module: scripts may add statistics data during algorithm executions|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Text-only interface for Rocs aka Cantor backend|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Worksheet Integration|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Python backend|filipe@kde.org|Filipe Saraiva}}&lt;br /&gt;
{{FeatureInProgress|Kig|Geogebra Support|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|Kig|CAS Backend|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Matrix support|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KJumpingCube|Make computer think-times shorter and responses faster|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KJumpingCube|Provide five skill levels (previously three)|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KJumpingCube|Provide board size up to 15x15 (previously 10x10)|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KJumpingCube|Add multi-move undo and redo (previously one move only)|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KJumpingCube|Improve the algorithm for computer opponent Newton|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KJumpingCube|Make computer think-times shorter and responses faster|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KJumpingCube|Make a new toolbar layout with a general-purpose stop-start button|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KJumpingCube|Add optional pauses after computer moves or animation steps, to help new players understand how the game works|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KJumpingCube|Major internal restructure and rewrite: involving separation of model, view, control and AI classes, new classes for Game and AI_Box and executing AI code on a separate thread|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kolourpaint|WebP image format plugin|kollix@aon.at|Martin Koller}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|Juk|Add support for [http://www.opus-codec.org/ Ogg Opus audio editing/playback] (requires TagLib and Phonon also support)|mpyne@kde.org|Michael Pyne}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KGet|Metalink/HTTP Support|dahalaishraj@gmail.com|Aish Raj Dahal}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureTodo|KABC Contact groups|use uid's for references|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|SendLaterAgent|Agent for allow to send later mails|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|PimActivity|Create a library to support activity in pim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureDone|headerthemeeditor|Program to edit kmail header theme based on Grantlee|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|Sieve|Add support for autogenerate sieve script|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|Blogilo|Use new widget component based on qtwebkit for html editor|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|ImportWizard|Allow to import settings/data for trojita and improve all others importer|montel@kde.org|Montel Laurent}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureTodo|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add tagged unions to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add array indices to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Umbrello| widget resize and diagram auto resize feature |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureTodo|Umbrello|add spline based association lines to avoid autolayout widget/line overlapping (needs volunteers)|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|KWallet|UI Refactoring|kde@rusu.info|Valentin Rusu}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdetoys =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|KTeaTime|Bring back the system tray progress indicator known from KTeaTime 4.6.5 and earlier ({{bug |279222}})|kde@hilefoks.org|Stefan Böhmann}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/PIM/Akonadi/Multi-Instance</id>
		<title>Projects/PIM/Akonadi/Multi-Instance</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/PIM/Akonadi/Multi-Instance"/>
				<updated>2013-05-03T17:14:08Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|This does not yet work with any akonadi agents/resource as they need to be ported first (only akonadiconsole has been ported so far). Don't use it unless you know what you're doing.}}&lt;br /&gt;
&lt;br /&gt;
== Akonadi Multi-Instance Setup ==&lt;br /&gt;
&lt;br /&gt;
The multi-instance Akonadi setup allows to run multiple Akonadi servers in parallel, using the same posix-user and D-Bus session bus. D-Bus service names are postfixed with an instance identifier and  all relevant configuration files/directories are either postfixed or put in a separate directory, to avoid any clashes, making it safe to run multiple instances in parallel.&lt;br /&gt;
&lt;br /&gt;
The behavior of a normal Akonadi instance is not changed.&lt;br /&gt;
&lt;br /&gt;
To run multiple Akonadi instances in parallel it is required to assign to each instance a unique identifier using:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
akonadictl --instance IDENTIFIER start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An application will then connect to a server depending on the AKONADI_INSTANCE environment variable (set to IDENTIFIER).&lt;br /&gt;
&lt;br /&gt;
You can run a normal Akonadi instance (without --instance) in parallel with multi-instance Akonadi instances.&lt;br /&gt;
&lt;br /&gt;
Each instance will run it's own Mysql server by default, just like a regular Akonadi instance does.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
start instance:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export AKONADI_DISABLE_AGENT_AUTOSTART&lt;br /&gt;
akonadictl --instance IDENTIFIER start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
connect any Akonadi client (see also risks section below):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export AKONADI_INSTANCE=IDENTIFIER&lt;br /&gt;
akonadiconsole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
stop instance:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
akonadictl --instance IDENTIFIER stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Directories ===&lt;br /&gt;
The multi-instance setup puts it's files in the following directories:&lt;br /&gt;
* .config/akonadi/instance/$IDENTIFIER&lt;br /&gt;
* .local/share/akonadi/instance/$IDENTIFIER&lt;br /&gt;
* .kde4/share/config/akonadi/akonadi_imap_resource_0_$IDENTIFIERrc&lt;br /&gt;
&lt;br /&gt;
To cleanup an instance, just delete all the directories and configs above.&lt;br /&gt;
&lt;br /&gt;
=== Akonadi Clients ===&lt;br /&gt;
&lt;br /&gt;
To connect to an instance using a Akonadi client application, export the following environment variable first (with inst1 being the instance identifier):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export AKONADI_INSTANCE=inst1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Akonadi Console ===&lt;br /&gt;
&lt;br /&gt;
Unlike regular client applications, ''akonadiconsole'' will automatically detect the presence of multiple Akonadi instances and asks to which one to connect to if more than one was found.&lt;br /&gt;
&lt;br /&gt;
Some of the debugging facilities do not work correctly yet, these are the known issues:&lt;br /&gt;
* Raw socket always connects to the main instance.&lt;br /&gt;
* Protocol debugger always uses the main instance.&lt;br /&gt;
* Job tracker and resource scheduler view show activity from all instances.&lt;br /&gt;
* Notification monitor always uses the main instance.&lt;br /&gt;
&lt;br /&gt;
You can also connect to the Mysql instance directly using the Mysql console (standalone, not the akonadiconsole one):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql --protocol=SOCKET --socket=~/.local/share/akonadi/instance/&amp;lt;inst1&amp;gt;/socket-&amp;lt;hostname&amp;gt;/mysql.socket&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Risks and Missing Features ===&lt;br /&gt;
* Debugging facilities in akonadiconsole as mentioned above&lt;br /&gt;
* Firstrun: Is disabled in servermanager.cpp, otherwise the firstrun code will crash (an assert prevents running the code since it is unsafe so far).&lt;br /&gt;
* It is not safe to run a multi-instance setup without exporting AKONADI_DISABLE_AGENT_AUTOSTART first, because the default setup desktop files contain configs with hardcoded paths, which would result in every akonadi instance creating a resource for the same default path.&lt;br /&gt;
* Most client applications do not namespace their configuration files according to the Akonadi instance they connect to. Using the same configuration on two different instances can have arbitrary side-effects. It is for example not safe to run Kontact/KMail against a second instance.&lt;br /&gt;
&lt;br /&gt;
=== Development ===&lt;br /&gt;
In order to make Akonadi code work in the multi-instance setup all unique identifiers need to be made distinguishable between instances. That includes most prominently:&lt;br /&gt;
* D-Bus service names&lt;br /&gt;
* configuration file names&lt;br /&gt;
* default directory paths&lt;br /&gt;
&lt;br /&gt;
You only need to change these, if you add/use D-Bus interfaces, or access configuration files directly. Most things have already been taken care of using the AgentBase/ResourceBase classes.&lt;br /&gt;
&lt;br /&gt;
* kdepimlibs/akonadi/servermanager.h contains a couple of helper functions to help with that.&lt;br /&gt;
&lt;br /&gt;
Note that it is not possible to change the D-Bus names or the prefixed directories just in kdepimlibs, as the Akonadi server makes assumptions on where to find the directories and D-Bus services.&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User:Cmollekopf/Drafts/AkonadiNepmukFeeder</id>
		<title>User:Cmollekopf/Drafts/AkonadiNepmukFeeder</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User:Cmollekopf/Drafts/AkonadiNepmukFeeder"/>
				<updated>2012-12-03T00:04:07Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: /* Redesign */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
The feeder consist of an agent, which receives notification about new/changed items using a ChangeRecorder, and a feederqueue, which processes the actual indexing.&lt;br /&gt;
&lt;br /&gt;
The changes received from the ChangeRecorder result in items being added to the feederqueue, which consists itself of three queues:&lt;br /&gt;
* collectionqueue: Queue for collections to index&lt;br /&gt;
* high prio queue: item indexing queue with high priority&lt;br /&gt;
* low prio queue: item indexing queue with low priority (Indexes slower, if the high prio queue has items those take precedence)&lt;br /&gt;
&lt;br /&gt;
=== Initial indexing ===&lt;br /&gt;
On startup the indexer goes through all collections if they have already been indexed (which is established by a query to nepomuk), and if not it adds not indexed collections to the collectionqueue, which will result in the items being added to the low priority queue (the initial indexing is always considered a low priority task).&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
* We're triggering the work but are not actually doing it. All the hard work is done in virtuosos, so if we throw to much work at it, it either goes crazy or is just busy for a pretty long time, therefore we work with timeouts between indexing items, and try this way to not overload virtuoso.&lt;br /&gt;
* We don't get any priority for notifications. It's generally speaking the same if you edit a note (which should be indexed instantly because applications may rely on that data) or if you add an email account with 300'000 mails (for which we may take our time).&lt;br /&gt;
* The code is without unittests. Due to the use of async akonadi and nepomuk calls throughout the code, all those async calls would need to be wrapped to allow slipping mock objects which could be used to test the indexing.&lt;br /&gt;
&lt;br /&gt;
== Honoring power consumption and CPU usage ==&lt;br /&gt;
Currently we have the idledetection provided by KIdleTime already in place, we don't honor the powersource though, as well as we don't avoid the indexing while watching a movie or so.&lt;br /&gt;
&lt;br /&gt;
== Avoiding unnecessary indexing ==&lt;br /&gt;
We're already filtering some changes which don't affect the indexed data and I'm not sure if there is much more we can do in that respect.&lt;br /&gt;
It might be worthwile though to optimize certain spcial cases such as mass flag changes (\seen on email). Since there is only very little data changing for many items, this could affect the performance quite a bit if there is a way store this information more efficiently.&lt;br /&gt;
&lt;br /&gt;
== Querying ==&lt;br /&gt;
Queries are used to check whether a collection/item needs to be (re-)indexed after getting i.e. a notification for an item (so it ends up in the indexing queue). For instance, all collections are re-queried on every startup if they have already been indexed (for the initial indexing). In an ideal world, that re-querying would of course not be necessary as the change-recorder would allow us to be notified of each and every change that happens to the akonadi store, and we can index accordingly, however, we used to loose updates in the feeder itself, some items fail to be indexed, or some other unforseen problem can lead to unindexed items in indexed collections meaning they will never ever get indexed (unless modfied again). The only reasonable way to fix this IMO is to requery ALL items from time to time and index what's missing.&lt;br /&gt;
&lt;br /&gt;
As a nice side-effect that would also allow us to be a bit sloppier with the received notifications as it can be quite a PITA to make sure none of those notifications are lost and all get processed eventually. Especially when the feeder process can be killed, indexing can be turned off (and meanwhile notificaitons pile up indefinitely), the computer can just crash...&lt;br /&gt;
&lt;br /&gt;
So re-querying really seems a more sustainable approach. The problem is however the amount of time it takes to query each item one by one.&lt;br /&gt;
&lt;br /&gt;
Only checking ~9000 emails whether they have already been indexed takes here around 370s (that's 40ms per mail). If you think of email collections of up to 1'000'000 mails that's more than 41100s (~11h). Which means IMO that we either need to get performance improvements in the order of 10 or we need to prioritize some collections (such as non-mail and for mail inbox only etc.). I do think that it should be in the realm of the achievable to query for ~1000000 items within a couple of minutes, so we can execute this as regular maintenance task. We might have to change our strategy a bit though.&lt;br /&gt;
&lt;br /&gt;
E.g. we could query for lists of items (once in nepomuk and once in akonadi), comparing them would already give us a list of missing items.&lt;br /&gt;
With that we could also save use afterwards one query per item to check if it's already indexed (we know it isn't). &lt;br /&gt;
&lt;br /&gt;
Should querying nepomuk indeed show to be that slow due to its internal database structure, we could still work with an akonadi attribute (I'd like to avoid that if possible though).&lt;br /&gt;
&lt;br /&gt;
Note that repeatedly querying for the same item results in queries being completed in &amp;lt;2ms due to the virtuoso internal caching.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
Indexing is fairly slow as kdepim-runtime/agents/nepomukfeeder/test/performancetest.cpp shows. The simplest mail possible takes already ~0.5s to index on my machine, I don't know however where most of that time is spent.&lt;br /&gt;
&lt;br /&gt;
Another problem are i.e. mails with several Cc email addresses. I can i.e. index up to ~12 Cc mail without problem (and it takes maybe ~0.7s), but as soon as I go above this the indexing takes like ~10s and then virtuoso goes crazy.&lt;br /&gt;
&lt;br /&gt;
With an even larger number of CC mailaddresses viruoso just bails out with a bufferoverflow because one of the generated queries is just too large.&lt;br /&gt;
&lt;br /&gt;
The middle case is of course the most dangerous as it results in viruoso not doing any work anymore while burning the cpu until it's killed.&lt;br /&gt;
&lt;br /&gt;
The whole feeder is designed for batch processing with the original idea that this would improve the performance greatly, currently we're processing batches of 1 though to not trigger the above problem. If we have more efficient querying which works on batches of items, and the caching which could potentially greatly reduce the size of the stored SimpleResourceGraphs, it may start to make sense to work on batches of items.&lt;br /&gt;
&lt;br /&gt;
=== Caching for Batch indexing ===&lt;br /&gt;
As Vishesh suggested the caching could give a serious performance boost when indexing lots of similar items (such as a mailinglist).&lt;br /&gt;
&lt;br /&gt;
=== Dealing with large batches of new/changed items ===&lt;br /&gt;
If you're i.e. adding a new email account, that results in all 300'000 emails being added as new task to the indexing queue. Currently those end up in the high priority queue, but they should really be treated just as the initial indexing. One way would be to move them to the lowPrio queue, but I'd prefer just skipping them and letting the maintenance task pick them up. The challenge is to distinguish between items which are part of new collections and regular changes which may happen at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Other indexing strategies ===&lt;br /&gt;
Another strategy to speed the initial indexing up could be to first index i.e. subject only, and in a second round go through all remaining stuff such as text content and attachments. With the current indexing and quering performance I doubt it makes sense to work on this though.&lt;br /&gt;
&lt;br /&gt;
== Other issues ==&lt;br /&gt;
* Maildir with fileindexer could produce duplicates:&lt;br /&gt;
If the fileindexer indexes the same items that could lead to duplicates when searching for fulltext. Not sure if they're indexed and the problem is resolved for searching due to the AkonadiObject type used in the feeder.&lt;br /&gt;
&lt;br /&gt;
* Maildir indexing probably doesn't work because we use cacheOnly (to not download disconnected IMAP stuff), but maildir is never in the cache.&lt;br /&gt;
I have never tested it, but this would leadt to maildir resources (and probably others as well), to never be indexed due to the failing ItemFetchJob.&lt;br /&gt;
&lt;br /&gt;
* We can't remove resources first as otherwise relations (i.e. to a topic) are lost (which are subresources of the resource):&lt;br /&gt;
According to vishesh it would be performance-wise to not use the OverwriteProperties flag, and instead fully remove the resource and index it freshly. The problem is that removeDataByApplication, when using the RemoveSubresources flag, removes also the created PIMO representation (correctly so), and thus also all relations (e.g. a relation to a topic), which makes the indexed resource unusable from applications (or at least vastly less useful).&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
I conducted my tests on a T420s with an Intel i7-2640M processor and an SSD disk, so performance may be worse on other systems.&lt;br /&gt;
&lt;br /&gt;
== Measurements ==&lt;br /&gt;
In the order of priority:&lt;br /&gt;
&lt;br /&gt;
* Improve query performance:&lt;br /&gt;
If we're faster with querying we can tackle several problems at the same time. The normal indexing is simply faster, and it's prerequisite so the following measurements work well.&lt;br /&gt;
* Implement initial indexing as recurring maintenance task:&lt;br /&gt;
By implementing the initial indexing as recurring maintenance task, we no longer have to store all notifications, and can simply skip large batches of added items (as they will be picked up eventually). This means we can disable the ChangeRecorder completely while the indexer is turned off (no huge changefiles, as well as no outdated notifications anymore). So overall it would simplify the whole process greatly and fix a couple of nasty problems.&lt;br /&gt;
For this one it's especially important to have decent query performance as we will repeatedly query all items existing, so something like a per collection mass query would make sense I think.&lt;br /&gt;
&lt;br /&gt;
The only problem with the recurring maintenance task are items which fail to be indexed and will repeatedly tried if not blocked somehow (i.e. by an attribute).&lt;br /&gt;
&lt;br /&gt;
* Either fix nepomuk/virtuoso or block indexing of items which we know can fail (lots of To:/Cc: emails for instance)&lt;br /&gt;
* Honor powersource&lt;br /&gt;
* Caching for Batch indexing (at least for mail)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Query Performance Tests ==&lt;br /&gt;
&lt;br /&gt;
=== Akonadi (sql) ===&lt;br /&gt;
* Query: select * from pimitemtable;&lt;br /&gt;
* Result set: ~100'000 Items&lt;br /&gt;
* Time: ~1s&lt;br /&gt;
&lt;br /&gt;
=== Akonadi (RecursiveItemFetchJob) ===&lt;br /&gt;
* Query: recursive fetch without payload&lt;br /&gt;
* Result set: ~100'000 Items&lt;br /&gt;
* Time: ~13s&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk (nepomukshell) ===&lt;br /&gt;
* Query: SELECT ?r WHERE { ?r nie:isPartOf ?c . ?c nie:url &amp;lt;akonadi:?collection=43&amp;gt; . ?r a aneo:AkonadiDataObject }&lt;br /&gt;
* Resultset: ~1500&lt;br /&gt;
* Time: ~8.28s&lt;br /&gt;
&lt;br /&gt;
* Query: SELECT ?r WHERE { ?r a aneo:AkonadiDataObject }&lt;br /&gt;
* Resultset: ~100'000&lt;br /&gt;
* Time: ~19.46 minutes&lt;br /&gt;
&lt;br /&gt;
Note: Most of the time seems to be spent in nepomukshell (nepsak max, virtuoso virtually idle), so the query itself is probably a lot faster.&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk (isql-vt) ===&lt;br /&gt;
&lt;br /&gt;
* Query: sparql prefix aneo: &amp;lt;http://akonadi-project.org/ontologies/aneo#&amp;gt; SELECT ?r WHERE { ?r a aneo:AkonadiDataObject };&lt;br /&gt;
* Resultset: ~100'000&lt;br /&gt;
* Time: ~1.2s&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk (Soprano::QueryResultIterator) ===&lt;br /&gt;
&lt;br /&gt;
* Query: SELECT ?r WHERE { ?r a aneo:AkonadiDataObject  . ?r aneo:akonadiIndexCompatLevel  3 }&lt;br /&gt;
* Resultset: ~100'000&lt;br /&gt;
* Time: ~14s&lt;br /&gt;
&lt;br /&gt;
=== Analysis ===&lt;br /&gt;
Comparing the queries from akonadi and nepomuk is a viable alternative to the initial indexing which starts always from scratch and queries every item.&lt;br /&gt;
* Indexing can go faster since there is no need to check for existing data&lt;br /&gt;
** That's under the assumtion that there is no pre-aneo:AkonadiDataObject data&lt;br /&gt;
* Large batches of new items can simply be skipped and are picked up later by the initial indexing queries&lt;br /&gt;
&lt;br /&gt;
Limitations:&lt;br /&gt;
Since these queries only check for existance, already indexed items still need to be checked for updates for which we have two options:&lt;br /&gt;
* No queries and making sure no update is ever lost (not very realistic)&lt;br /&gt;
* Do as we do now and query item per item.&lt;br /&gt;
&lt;br /&gt;
== Redesign ==&lt;br /&gt;
The original design based on the idea that we could pretty much do all the indexing work in ~realtime, indexing items right away as the appear, and only making use of the queues in special cases (the primary usecase for the queues was the initial indexing and being able to batch-process items as performance improvement)&lt;br /&gt;
&lt;br /&gt;
Since the indexing is too slow and there are too many cases where lots of items need to be indexed, a redesign is required which doesn't depend on the queues and doesn't require keeping track of all updates.&lt;br /&gt;
&lt;br /&gt;
The alternative is being able to query for non-indexed items and index them accordingly.&lt;br /&gt;
&lt;br /&gt;
The following problems needs to be dealt with:&lt;br /&gt;
&lt;br /&gt;
* initial indexing&lt;br /&gt;
** Solution: Query for non-indexed items&lt;br /&gt;
* item added&lt;br /&gt;
** Solution: Index right away, if there are too many items added skip and rely on initial-indexing.&lt;br /&gt;
* itemChanged&lt;br /&gt;
** Index right away, FIXME what should we do if there are too many (query doesn't work)&lt;br /&gt;
*** Remove right away (if we can do so efficiently) -&amp;gt; use item added path&lt;br /&gt;
**** Again problematic if the feeder has been turned off entierly&lt;br /&gt;
**** User added data is lost upon removal (relations, etc.)&lt;br /&gt;
**** Maybe mark the resource as outdated with a flag (if that is fast as well) =&amp;gt; query would work again&lt;br /&gt;
*** Track changes using akonadi attribute&lt;br /&gt;
* itemRemoved&lt;br /&gt;
** Solution: remove right away&lt;br /&gt;
&lt;br /&gt;
Sources of lot's of updates:&lt;br /&gt;
* added resources&lt;br /&gt;
* mass edits&lt;br /&gt;
** flag changes&lt;br /&gt;
&lt;br /&gt;
=== Tracking Changes ===&lt;br /&gt;
One way to track changes would be an attribute in akonadi, which contains the timestamp of the version which has been indexed. Querying the database for items where this doesn't match the lastmodified timestamp anymore would give us a list of items which need to be updated. It would also mean there is some dataduplication, but that should work fine as long as the indexer is the only one adding this data (so it can always update the indexing status in the akonadi db accordingly).&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User:Cmollekopf/Drafts/AkonadiNepmukFeeder</id>
		<title>User:Cmollekopf/Drafts/AkonadiNepmukFeeder</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User:Cmollekopf/Drafts/AkonadiNepmukFeeder"/>
				<updated>2012-12-02T20:49:43Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
The feeder consist of an agent, which receives notification about new/changed items using a ChangeRecorder, and a feederqueue, which processes the actual indexing.&lt;br /&gt;
&lt;br /&gt;
The changes received from the ChangeRecorder result in items being added to the feederqueue, which consists itself of three queues:&lt;br /&gt;
* collectionqueue: Queue for collections to index&lt;br /&gt;
* high prio queue: item indexing queue with high priority&lt;br /&gt;
* low prio queue: item indexing queue with low priority (Indexes slower, if the high prio queue has items those take precedence)&lt;br /&gt;
&lt;br /&gt;
=== Initial indexing ===&lt;br /&gt;
On startup the indexer goes through all collections if they have already been indexed (which is established by a query to nepomuk), and if not it adds not indexed collections to the collectionqueue, which will result in the items being added to the low priority queue (the initial indexing is always considered a low priority task).&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
* We're triggering the work but are not actually doing it. All the hard work is done in virtuosos, so if we throw to much work at it, it either goes crazy or is just busy for a pretty long time, therefore we work with timeouts between indexing items, and try this way to not overload virtuoso.&lt;br /&gt;
* We don't get any priority for notifications. It's generally speaking the same if you edit a note (which should be indexed instantly because applications may rely on that data) or if you add an email account with 300'000 mails (for which we may take our time).&lt;br /&gt;
* The code is without unittests. Due to the use of async akonadi and nepomuk calls throughout the code, all those async calls would need to be wrapped to allow slipping mock objects which could be used to test the indexing.&lt;br /&gt;
&lt;br /&gt;
== Honoring power consumption and CPU usage ==&lt;br /&gt;
Currently we have the idledetection provided by KIdleTime already in place, we don't honor the powersource though, as well as we don't avoid the indexing while watching a movie or so.&lt;br /&gt;
&lt;br /&gt;
== Avoiding unnecessary indexing ==&lt;br /&gt;
We're already filtering some changes which don't affect the indexed data and I'm not sure if there is much more we can do in that respect.&lt;br /&gt;
It might be worthwile though to optimize certain spcial cases such as mass flag changes (\seen on email). Since there is only very little data changing for many items, this could affect the performance quite a bit if there is a way store this information more efficiently.&lt;br /&gt;
&lt;br /&gt;
== Querying ==&lt;br /&gt;
Queries are used to check whether a collection/item needs to be (re-)indexed after getting i.e. a notification for an item (so it ends up in the indexing queue). For instance, all collections are re-queried on every startup if they have already been indexed (for the initial indexing). In an ideal world, that re-querying would of course not be necessary as the change-recorder would allow us to be notified of each and every change that happens to the akonadi store, and we can index accordingly, however, we used to loose updates in the feeder itself, some items fail to be indexed, or some other unforseen problem can lead to unindexed items in indexed collections meaning they will never ever get indexed (unless modfied again). The only reasonable way to fix this IMO is to requery ALL items from time to time and index what's missing.&lt;br /&gt;
&lt;br /&gt;
As a nice side-effect that would also allow us to be a bit sloppier with the received notifications as it can be quite a PITA to make sure none of those notifications are lost and all get processed eventually. Especially when the feeder process can be killed, indexing can be turned off (and meanwhile notificaitons pile up indefinitely), the computer can just crash...&lt;br /&gt;
&lt;br /&gt;
So re-querying really seems a more sustainable approach. The problem is however the amount of time it takes to query each item one by one.&lt;br /&gt;
&lt;br /&gt;
Only checking ~9000 emails whether they have already been indexed takes here around 370s (that's 40ms per mail). If you think of email collections of up to 1'000'000 mails that's more than 41100s (~11h). Which means IMO that we either need to get performance improvements in the order of 10 or we need to prioritize some collections (such as non-mail and for mail inbox only etc.). I do think that it should be in the realm of the achievable to query for ~1000000 items within a couple of minutes, so we can execute this as regular maintenance task. We might have to change our strategy a bit though.&lt;br /&gt;
&lt;br /&gt;
E.g. we could query for lists of items (once in nepomuk and once in akonadi), comparing them would already give us a list of missing items.&lt;br /&gt;
With that we could also save use afterwards one query per item to check if it's already indexed (we know it isn't). &lt;br /&gt;
&lt;br /&gt;
Should querying nepomuk indeed show to be that slow due to its internal database structure, we could still work with an akonadi attribute (I'd like to avoid that if possible though).&lt;br /&gt;
&lt;br /&gt;
Note that repeatedly querying for the same item results in queries being completed in &amp;lt;2ms due to the virtuoso internal caching.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
Indexing is fairly slow as kdepim-runtime/agents/nepomukfeeder/test/performancetest.cpp shows. The simplest mail possible takes already ~0.5s to index on my machine, I don't know however where most of that time is spent.&lt;br /&gt;
&lt;br /&gt;
Another problem are i.e. mails with several Cc email addresses. I can i.e. index up to ~12 Cc mail without problem (and it takes maybe ~0.7s), but as soon as I go above this the indexing takes like ~10s and then virtuoso goes crazy.&lt;br /&gt;
&lt;br /&gt;
With an even larger number of CC mailaddresses viruoso just bails out with a bufferoverflow because one of the generated queries is just too large.&lt;br /&gt;
&lt;br /&gt;
The middle case is of course the most dangerous as it results in viruoso not doing any work anymore while burning the cpu until it's killed.&lt;br /&gt;
&lt;br /&gt;
The whole feeder is designed for batch processing with the original idea that this would improve the performance greatly, currently we're processing batches of 1 though to not trigger the above problem. If we have more efficient querying which works on batches of items, and the caching which could potentially greatly reduce the size of the stored SimpleResourceGraphs, it may start to make sense to work on batches of items.&lt;br /&gt;
&lt;br /&gt;
=== Caching for Batch indexing ===&lt;br /&gt;
As Vishesh suggested the caching could give a serious performance boost when indexing lots of similar items (such as a mailinglist).&lt;br /&gt;
&lt;br /&gt;
=== Dealing with large batches of new/changed items ===&lt;br /&gt;
If you're i.e. adding a new email account, that results in all 300'000 emails being added as new task to the indexing queue. Currently those end up in the high priority queue, but they should really be treated just as the initial indexing. One way would be to move them to the lowPrio queue, but I'd prefer just skipping them and letting the maintenance task pick them up. The challenge is to distinguish between items which are part of new collections and regular changes which may happen at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Other indexing strategies ===&lt;br /&gt;
Another strategy to speed the initial indexing up could be to first index i.e. subject only, and in a second round go through all remaining stuff such as text content and attachments. With the current indexing and quering performance I doubt it makes sense to work on this though.&lt;br /&gt;
&lt;br /&gt;
== Other issues ==&lt;br /&gt;
* Maildir with fileindexer could produce duplicates:&lt;br /&gt;
If the fileindexer indexes the same items that could lead to duplicates when searching for fulltext. Not sure if they're indexed and the problem is resolved for searching due to the AkonadiObject type used in the feeder.&lt;br /&gt;
&lt;br /&gt;
* Maildir indexing probably doesn't work because we use cacheOnly (to not download disconnected IMAP stuff), but maildir is never in the cache.&lt;br /&gt;
I have never tested it, but this would leadt to maildir resources (and probably others as well), to never be indexed due to the failing ItemFetchJob.&lt;br /&gt;
&lt;br /&gt;
* We can't remove resources first as otherwise relations (i.e. to a topic) are lost (which are subresources of the resource):&lt;br /&gt;
According to vishesh it would be performance-wise to not use the OverwriteProperties flag, and instead fully remove the resource and index it freshly. The problem is that removeDataByApplication, when using the RemoveSubresources flag, removes also the created PIMO representation (correctly so), and thus also all relations (e.g. a relation to a topic), which makes the indexed resource unusable from applications (or at least vastly less useful).&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
I conducted my tests on a T420s with an Intel i7-2640M processor and an SSD disk, so performance may be worse on other systems.&lt;br /&gt;
&lt;br /&gt;
== Measurements ==&lt;br /&gt;
In the order of priority:&lt;br /&gt;
&lt;br /&gt;
* Improve query performance:&lt;br /&gt;
If we're faster with querying we can tackle several problems at the same time. The normal indexing is simply faster, and it's prerequisite so the following measurements work well.&lt;br /&gt;
* Implement initial indexing as recurring maintenance task:&lt;br /&gt;
By implementing the initial indexing as recurring maintenance task, we no longer have to store all notifications, and can simply skip large batches of added items (as they will be picked up eventually). This means we can disable the ChangeRecorder completely while the indexer is turned off (no huge changefiles, as well as no outdated notifications anymore). So overall it would simplify the whole process greatly and fix a couple of nasty problems.&lt;br /&gt;
For this one it's especially important to have decent query performance as we will repeatedly query all items existing, so something like a per collection mass query would make sense I think.&lt;br /&gt;
&lt;br /&gt;
The only problem with the recurring maintenance task are items which fail to be indexed and will repeatedly tried if not blocked somehow (i.e. by an attribute).&lt;br /&gt;
&lt;br /&gt;
* Either fix nepomuk/virtuoso or block indexing of items which we know can fail (lots of To:/Cc: emails for instance)&lt;br /&gt;
* Honor powersource&lt;br /&gt;
* Caching for Batch indexing (at least for mail)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Query Performance Tests ==&lt;br /&gt;
&lt;br /&gt;
=== Akonadi (sql) ===&lt;br /&gt;
* Query: select * from pimitemtable;&lt;br /&gt;
* Result set: ~100'000 Items&lt;br /&gt;
* Time: ~1s&lt;br /&gt;
&lt;br /&gt;
=== Akonadi (RecursiveItemFetchJob) ===&lt;br /&gt;
* Query: recursive fetch without payload&lt;br /&gt;
* Result set: ~100'000 Items&lt;br /&gt;
* Time: ~13s&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk (nepomukshell) ===&lt;br /&gt;
* Query: SELECT ?r WHERE { ?r nie:isPartOf ?c . ?c nie:url &amp;lt;akonadi:?collection=43&amp;gt; . ?r a aneo:AkonadiDataObject }&lt;br /&gt;
* Resultset: ~1500&lt;br /&gt;
* Time: ~8.28s&lt;br /&gt;
&lt;br /&gt;
* Query: SELECT ?r WHERE { ?r a aneo:AkonadiDataObject }&lt;br /&gt;
* Resultset: ~100'000&lt;br /&gt;
* Time: ~19.46 minutes&lt;br /&gt;
&lt;br /&gt;
Note: Most of the time seems to be spent in nepomukshell (nepsak max, virtuoso virtually idle), so the query itself is probably a lot faster.&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk (isql-vt) ===&lt;br /&gt;
&lt;br /&gt;
* Query: sparql prefix aneo: &amp;lt;http://akonadi-project.org/ontologies/aneo#&amp;gt; SELECT ?r WHERE { ?r a aneo:AkonadiDataObject };&lt;br /&gt;
* Resultset: ~100'000&lt;br /&gt;
* Time: ~1.2s&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk (Soprano::QueryResultIterator) ===&lt;br /&gt;
&lt;br /&gt;
* Query: SELECT ?r WHERE { ?r a aneo:AkonadiDataObject  . ?r aneo:akonadiIndexCompatLevel  3 }&lt;br /&gt;
* Resultset: ~100'000&lt;br /&gt;
* Time: ~14s&lt;br /&gt;
&lt;br /&gt;
=== Analysis ===&lt;br /&gt;
Comparing the queries from akonadi and nepomuk is a viable alternative to the initial indexing which starts always from scratch and queries every item.&lt;br /&gt;
* Indexing can go faster since there is no need to check for existing data&lt;br /&gt;
** That's under the assumtion that there is no pre-aneo:AkonadiDataObject data&lt;br /&gt;
* Large batches of new items can simply be skipped and are picked up later by the initial indexing queries&lt;br /&gt;
&lt;br /&gt;
Limitations:&lt;br /&gt;
Since these queries only check for existance, already indexed items still need to be checked for updates for which we have two options:&lt;br /&gt;
* No queries and making sure no update is ever lost (not very realistic)&lt;br /&gt;
* Do as we do now and query item per item.&lt;br /&gt;
&lt;br /&gt;
== Redesign ==&lt;br /&gt;
The original design based on the idea that we could pretty much do all the indexing work in ~realtime, indexing items right away as the appear, and only making use of the queues in special cases (the primary usecase for the queues was the initial indexing and being able to batch-process items as performance improvement)&lt;br /&gt;
&lt;br /&gt;
Since the indexing is too slow and there are too many cases where lots of items need to be indexed, a redesign is required which doesn't depend on the queues and doesn't require keeping track of all updates.&lt;br /&gt;
&lt;br /&gt;
The alternative is being able to query for non-indexed items and index them accordingly.&lt;br /&gt;
&lt;br /&gt;
The following problems needs to be dealt with:&lt;br /&gt;
&lt;br /&gt;
* initial indexing&lt;br /&gt;
** Solution: Query for non-indexed items&lt;br /&gt;
* item added&lt;br /&gt;
** Solution: Index right away, if there are too many items added skip and rely on initial-indexing.&lt;br /&gt;
* itemChanged&lt;br /&gt;
** Index right away, FIXME what should we do if there are too many (query doesn't work)&lt;br /&gt;
*** Remove right away (if we can do so efficiently) -&amp;gt; use item added path&lt;br /&gt;
**** Again problematic if the feeder has been turned off entierly&lt;br /&gt;
**** User added data is lost upon removal (relations, etc.)&lt;br /&gt;
*** Track changes using akonadi attribute&lt;br /&gt;
* itemRemoved&lt;br /&gt;
** Solution: remove right away&lt;br /&gt;
&lt;br /&gt;
=== Tracking Changes ===&lt;br /&gt;
One way to track changes would be an attribute in akonadi, which contains the timestamp of the version which has been indexed. Querying the database for items where this doesn't match the lastmodified timestamp anymore would give us a list of items which need to be updated. It would also mean there is some dataduplication, but that should work fine as long as the indexer is the only one adding this data (so it can always update the indexing status in the akonadi db accordingly).&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User:Cmollekopf/Drafts/AkonadiNepmukFeeder</id>
		<title>User:Cmollekopf/Drafts/AkonadiNepmukFeeder</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User:Cmollekopf/Drafts/AkonadiNepmukFeeder"/>
				<updated>2012-12-01T15:41:10Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: /* Query Performance Tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
The feeder consist of an agent, which receives notification about new/changed items using a ChangeRecorder, and a feederqueue, which processes the actual indexing.&lt;br /&gt;
&lt;br /&gt;
The changes received from the ChangeRecorder result in items being added to the feederqueue, which consists itself of three queues:&lt;br /&gt;
* collectionqueue: Queue for collections to index&lt;br /&gt;
* high prio queue: item indexing queue with high priority&lt;br /&gt;
* low prio queue: item indexing queue with low priority (Indexes slower, if the high prio queue has items those take precedence)&lt;br /&gt;
&lt;br /&gt;
=== Initial indexing ===&lt;br /&gt;
On startup the indexer goes through all collections if they have already been indexed (which is established by a query to nepomuk), and if not it adds not indexed collections to the collectionqueue, which will result in the items being added to the low priority queue (the initial indexing is always considered a low priority task).&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
* We're triggering the work but are not actually doing it. All the hard work is done in virtuosos, so if we throw to much work at it, it either goes crazy or is just busy for a pretty long time, therefore we work with timeouts between indexing items, and try this way to not overload virtuoso.&lt;br /&gt;
* We don't get any priority for notifications. It's generally speaking the same if you edit a note (which should be indexed instantly because applications may rely on that data) or if you add an email account with 300'000 mails (for which we may take our time).&lt;br /&gt;
* The code is without unittests. Due to the use of async akonadi and nepomuk calls throughout the code, all those async calls would need to be wrapped to allow slipping mock objects which could be used to test the indexing.&lt;br /&gt;
&lt;br /&gt;
== Honoring power consumption and CPU usage ==&lt;br /&gt;
Currently we have the idledetection provided by KIdleTime already in place, we don't honor the powersource though, as well as we don't avoid the indexing while watching a movie or so.&lt;br /&gt;
&lt;br /&gt;
== Avoiding unnecessary indexing ==&lt;br /&gt;
We're already filtering some changes which don't affect the indexed data and I'm not sure if there is much more we can do in that respect.&lt;br /&gt;
It might be worthwile though to optimize certain spcial cases such as mass flag changes (\seen on email). Since there is only very little data changing for many items, this could affect the performance quite a bit if there is a way store this information more efficiently.&lt;br /&gt;
&lt;br /&gt;
== Querying ==&lt;br /&gt;
Queries are used to check whether a collection/item needs to be (re-)indexed after getting i.e. a notification for an item (so it ends up in the indexing queue). For instance, all collections are re-queried on every startup if they have already been indexed (for the initial indexing). In an ideal world, that re-querying would of course not be necessary as the change-recorder would allow us to be notified of each and every change that happens to the akonadi store, and we can index accordingly, however, we used to loose updates in the feeder itself, some items fail to be indexed, or some other unforseen problem can lead to unindexed items in indexed collections meaning they will never ever get indexed (unless modfied again). The only reasonable way to fix this IMO is to requery ALL items from time to time and index what's missing.&lt;br /&gt;
&lt;br /&gt;
As a nice side-effect that would also allow us to be a bit sloppier with the received notifications as it can be quite a PITA to make sure none of those notifications are lost and all get processed eventually. Especially when the feeder process can be killed, indexing can be turned off (and meanwhile notificaitons pile up indefinitely), the computer can just crash...&lt;br /&gt;
&lt;br /&gt;
So re-querying really seems a more sustainable approach. The problem is however the amount of time it takes to query each item one by one.&lt;br /&gt;
&lt;br /&gt;
Only checking ~9000 emails whether they have already been indexed takes here around 370s (that's 40ms per mail). If you think of email collections of up to 1'000'000 mails that's more than 41100s (~11h). Which means IMO that we either need to get performance improvements in the order of 10 or we need to prioritize some collections (such as non-mail and for mail inbox only etc.). I do think that it should be in the realm of the achievable to query for ~1000000 items within a couple of minutes, so we can execute this as regular maintenance task. We might have to change our strategy a bit though.&lt;br /&gt;
&lt;br /&gt;
E.g. we could query for lists of items (once in nepomuk and once in akonadi), comparing them would already give us a list of missing items.&lt;br /&gt;
With that we could also save use afterwards one query per item to check if it's already indexed (we know it isn't). &lt;br /&gt;
&lt;br /&gt;
Should querying nepomuk indeed show to be that slow due to its internal database structure, we could still work with an akonadi attribute (I'd like to avoid that if possible though).&lt;br /&gt;
&lt;br /&gt;
Note that repeatedly querying for the same item results in queries being completed in &amp;lt;2ms due to the virtuoso internal caching.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
Indexing is fairly slow as kdepim-runtime/agents/nepomukfeeder/test/performancetest.cpp shows. The simplest mail possible takes already ~0.5s to index on my machine, I don't know however where most of that time is spent.&lt;br /&gt;
&lt;br /&gt;
Another problem are i.e. mails with several Cc email addresses. I can i.e. index up to ~12 Cc mail without problem (and it takes maybe ~0.7s), but as soon as I go above this the indexing takes like ~10s and then virtuoso goes crazy.&lt;br /&gt;
&lt;br /&gt;
With an even larger number of CC mailaddresses viruoso just bails out with a bufferoverflow because one of the generated queries is just too large.&lt;br /&gt;
&lt;br /&gt;
The middle case is of course the most dangerous as it results in viruoso not doing any work anymore while burning the cpu until it's killed.&lt;br /&gt;
&lt;br /&gt;
The whole feeder is designed for batch processing with the original idea that this would improve the performance greatly, currently we're processing batches of 1 though to not trigger the above problem. If we have more efficient querying which works on batches of items, and the caching which could potentially greatly reduce the size of the stored SimpleResourceGraphs, it may start to make sense to work on batches of items.&lt;br /&gt;
&lt;br /&gt;
=== Caching for Batch indexing ===&lt;br /&gt;
As Vishesh suggested the caching could give a serious performance boost when indexing lots of similar items (such as a mailinglist).&lt;br /&gt;
&lt;br /&gt;
=== Dealing with large batches of new/changed items ===&lt;br /&gt;
If you're i.e. adding a new email account, that results in all 300'000 emails being added as new task to the indexing queue. Currently those end up in the high priority queue, but they should really be treated just as the initial indexing. One way would be to move them to the lowPrio queue, but I'd prefer just skipping them and letting the maintenance task pick them up. The challenge is to distinguish between items which are part of new collections and regular changes which may happen at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Other indexing strategies ===&lt;br /&gt;
Another strategy to speed the initial indexing up could be to first index i.e. subject only, and in a second round go through all remaining stuff such as text content and attachments. With the current indexing and quering performance I doubt it makes sense to work on this though.&lt;br /&gt;
&lt;br /&gt;
== Other issues ==&lt;br /&gt;
* Maildir with fileindexer could produce duplicates:&lt;br /&gt;
If the fileindexer indexes the same items that could lead to duplicates when searching for fulltext. Not sure if they're indexed and the problem is resolved for searching due to the AkonadiObject type used in the feeder.&lt;br /&gt;
&lt;br /&gt;
* Maildir indexing probably doesn't work because we use cacheOnly (to not download disconnected IMAP stuff), but maildir is never in the cache.&lt;br /&gt;
I have never tested it, but this would leadt to maildir resources (and probably others as well), to never be indexed due to the failing ItemFetchJob.&lt;br /&gt;
&lt;br /&gt;
* We can't remove resources first as otherwise relations (i.e. to a topic) are lost (which are subresources of the resource):&lt;br /&gt;
According to vishesh it would be performance-wise to not use the OverwriteProperties flag, and instead fully remove the resource and index it freshly. The problem is that removeDataByApplication, when using the RemoveSubresources flag, removes also the created PIMO representation (correctly so), and thus also all relations (e.g. a relation to a topic), which makes the indexed resource unusable from applications (or at least vastly less useful).&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
I conducted my tests on a T420s with an Intel i7-2640M processor and an SSD disk, so performance may be worse on other systems.&lt;br /&gt;
&lt;br /&gt;
== Measurements ==&lt;br /&gt;
In the order of priority:&lt;br /&gt;
&lt;br /&gt;
* Improve query performance:&lt;br /&gt;
If we're faster with querying we can tackle several problems at the same time. The normal indexing is simply faster, and it's prerequisite so the following measurements work well.&lt;br /&gt;
* Implement initial indexing as recurring maintenance task:&lt;br /&gt;
By implementing the initial indexing as recurring maintenance task, we no longer have to store all notifications, and can simply skip large batches of added items (as they will be picked up eventually). This means we can disable the ChangeRecorder completely while the indexer is turned off (no huge changefiles, as well as no outdated notifications anymore). So overall it would simplify the whole process greatly and fix a couple of nasty problems.&lt;br /&gt;
For this one it's especially important to have decent query performance as we will repeatedly query all items existing, so something like a per collection mass query would make sense I think.&lt;br /&gt;
&lt;br /&gt;
The only problem with the recurring maintenance task are items which fail to be indexed and will repeatedly tried if not blocked somehow (i.e. by an attribute).&lt;br /&gt;
&lt;br /&gt;
* Either fix nepomuk/virtuoso or block indexing of items which we know can fail (lots of To:/Cc: emails for instance)&lt;br /&gt;
* Honor powersource&lt;br /&gt;
* Caching for Batch indexing (at least for mail)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Query Performance Tests ==&lt;br /&gt;
&lt;br /&gt;
=== Akonadi (sql) ===&lt;br /&gt;
* Query: select * from pimitemtable;&lt;br /&gt;
* Result set: ~100'000 Items&lt;br /&gt;
* Time: ~1s&lt;br /&gt;
&lt;br /&gt;
=== Akonadi (RecursiveItemFetchJob) ===&lt;br /&gt;
* Query: recursive fetch without payload&lt;br /&gt;
* Result set: ~100'000 Items&lt;br /&gt;
* Time: ~13s&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk (nepomukshell) ===&lt;br /&gt;
* Query: SELECT ?r WHERE { ?r nie:isPartOf ?c . ?c nie:url &amp;lt;akonadi:?collection=43&amp;gt; . ?r a aneo:AkonadiDataObject }&lt;br /&gt;
* Resultset: ~1500&lt;br /&gt;
* Time: ~8.28s&lt;br /&gt;
&lt;br /&gt;
* Query: SELECT ?r WHERE { ?r a aneo:AkonadiDataObject }&lt;br /&gt;
* Resultset: ~100'000&lt;br /&gt;
* Time: ~19.46 minutes&lt;br /&gt;
&lt;br /&gt;
Note: Most of the time seems to be spent in nepomukshell (nepsak max, virtuoso virtually idle), so the query itself is probably a lot faster.&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk (isql-vt) ===&lt;br /&gt;
&lt;br /&gt;
* Query: sparql prefix aneo: &amp;lt;http://akonadi-project.org/ontologies/aneo#&amp;gt; SELECT ?r WHERE { ?r a aneo:AkonadiDataObject };&lt;br /&gt;
* Resultset: ~100'000&lt;br /&gt;
* Time: ~1.2s&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk (Soprano::QueryResultIterator) ===&lt;br /&gt;
&lt;br /&gt;
* Query: SELECT ?r WHERE { ?r a aneo:AkonadiDataObject  . ?r aneo:akonadiIndexCompatLevel  3 }&lt;br /&gt;
* Resultset: ~100'000&lt;br /&gt;
* Time: ~14s&lt;br /&gt;
&lt;br /&gt;
=== Analysis ===&lt;br /&gt;
Comparing the queries from akonadi and nepomuk is a viable alternative to the initial indexing which starts always from scratch and queries every item.&lt;br /&gt;
* Indexing can go faster since there is no need to check for existing data&lt;br /&gt;
** That's under the assumtion that there is no pre-aneo:AkonadiDataObject data&lt;br /&gt;
* Large batches of new items can simply be skipped and are picked up later by the initial indexing queries&lt;br /&gt;
&lt;br /&gt;
Limitations:&lt;br /&gt;
Since these queries only check for existance, already indexed items still need to be checked for updates for which we have two options:&lt;br /&gt;
* No queries and making sure no update is ever lost (not very realistic)&lt;br /&gt;
* Do as we do now and query item per item.&lt;br /&gt;
&lt;br /&gt;
=== Tracking Changes ===&lt;br /&gt;
One way to track changes would be an attribute in akonadi, which contains the timestamp of the version which has been indexed. Querying the database for items where this doesn't match the lastmodified timestamp anymore would give us a list of items which need to be updated. It would also mean there is some dataduplication, but that should work fine as long as the indexer is the only one adding this data (so it can always update the indexing status in the akonadi db accordingly).&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User:Cmollekopf/Drafts/AkonadiNepmukFeeder</id>
		<title>User:Cmollekopf/Drafts/AkonadiNepmukFeeder</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User:Cmollekopf/Drafts/AkonadiNepmukFeeder"/>
				<updated>2012-12-01T15:34:55Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: /* Query Performance Tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
The feeder consist of an agent, which receives notification about new/changed items using a ChangeRecorder, and a feederqueue, which processes the actual indexing.&lt;br /&gt;
&lt;br /&gt;
The changes received from the ChangeRecorder result in items being added to the feederqueue, which consists itself of three queues:&lt;br /&gt;
* collectionqueue: Queue for collections to index&lt;br /&gt;
* high prio queue: item indexing queue with high priority&lt;br /&gt;
* low prio queue: item indexing queue with low priority (Indexes slower, if the high prio queue has items those take precedence)&lt;br /&gt;
&lt;br /&gt;
=== Initial indexing ===&lt;br /&gt;
On startup the indexer goes through all collections if they have already been indexed (which is established by a query to nepomuk), and if not it adds not indexed collections to the collectionqueue, which will result in the items being added to the low priority queue (the initial indexing is always considered a low priority task).&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
* We're triggering the work but are not actually doing it. All the hard work is done in virtuosos, so if we throw to much work at it, it either goes crazy or is just busy for a pretty long time, therefore we work with timeouts between indexing items, and try this way to not overload virtuoso.&lt;br /&gt;
* We don't get any priority for notifications. It's generally speaking the same if you edit a note (which should be indexed instantly because applications may rely on that data) or if you add an email account with 300'000 mails (for which we may take our time).&lt;br /&gt;
* The code is without unittests. Due to the use of async akonadi and nepomuk calls throughout the code, all those async calls would need to be wrapped to allow slipping mock objects which could be used to test the indexing.&lt;br /&gt;
&lt;br /&gt;
== Honoring power consumption and CPU usage ==&lt;br /&gt;
Currently we have the idledetection provided by KIdleTime already in place, we don't honor the powersource though, as well as we don't avoid the indexing while watching a movie or so.&lt;br /&gt;
&lt;br /&gt;
== Avoiding unnecessary indexing ==&lt;br /&gt;
We're already filtering some changes which don't affect the indexed data and I'm not sure if there is much more we can do in that respect.&lt;br /&gt;
It might be worthwile though to optimize certain spcial cases such as mass flag changes (\seen on email). Since there is only very little data changing for many items, this could affect the performance quite a bit if there is a way store this information more efficiently.&lt;br /&gt;
&lt;br /&gt;
== Querying ==&lt;br /&gt;
Queries are used to check whether a collection/item needs to be (re-)indexed after getting i.e. a notification for an item (so it ends up in the indexing queue). For instance, all collections are re-queried on every startup if they have already been indexed (for the initial indexing). In an ideal world, that re-querying would of course not be necessary as the change-recorder would allow us to be notified of each and every change that happens to the akonadi store, and we can index accordingly, however, we used to loose updates in the feeder itself, some items fail to be indexed, or some other unforseen problem can lead to unindexed items in indexed collections meaning they will never ever get indexed (unless modfied again). The only reasonable way to fix this IMO is to requery ALL items from time to time and index what's missing.&lt;br /&gt;
&lt;br /&gt;
As a nice side-effect that would also allow us to be a bit sloppier with the received notifications as it can be quite a PITA to make sure none of those notifications are lost and all get processed eventually. Especially when the feeder process can be killed, indexing can be turned off (and meanwhile notificaitons pile up indefinitely), the computer can just crash...&lt;br /&gt;
&lt;br /&gt;
So re-querying really seems a more sustainable approach. The problem is however the amount of time it takes to query each item one by one.&lt;br /&gt;
&lt;br /&gt;
Only checking ~9000 emails whether they have already been indexed takes here around 370s (that's 40ms per mail). If you think of email collections of up to 1'000'000 mails that's more than 41100s (~11h). Which means IMO that we either need to get performance improvements in the order of 10 or we need to prioritize some collections (such as non-mail and for mail inbox only etc.). I do think that it should be in the realm of the achievable to query for ~1000000 items within a couple of minutes, so we can execute this as regular maintenance task. We might have to change our strategy a bit though.&lt;br /&gt;
&lt;br /&gt;
E.g. we could query for lists of items (once in nepomuk and once in akonadi), comparing them would already give us a list of missing items.&lt;br /&gt;
With that we could also save use afterwards one query per item to check if it's already indexed (we know it isn't). &lt;br /&gt;
&lt;br /&gt;
Should querying nepomuk indeed show to be that slow due to its internal database structure, we could still work with an akonadi attribute (I'd like to avoid that if possible though).&lt;br /&gt;
&lt;br /&gt;
Note that repeatedly querying for the same item results in queries being completed in &amp;lt;2ms due to the virtuoso internal caching.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
Indexing is fairly slow as kdepim-runtime/agents/nepomukfeeder/test/performancetest.cpp shows. The simplest mail possible takes already ~0.5s to index on my machine, I don't know however where most of that time is spent.&lt;br /&gt;
&lt;br /&gt;
Another problem are i.e. mails with several Cc email addresses. I can i.e. index up to ~12 Cc mail without problem (and it takes maybe ~0.7s), but as soon as I go above this the indexing takes like ~10s and then virtuoso goes crazy.&lt;br /&gt;
&lt;br /&gt;
With an even larger number of CC mailaddresses viruoso just bails out with a bufferoverflow because one of the generated queries is just too large.&lt;br /&gt;
&lt;br /&gt;
The middle case is of course the most dangerous as it results in viruoso not doing any work anymore while burning the cpu until it's killed.&lt;br /&gt;
&lt;br /&gt;
The whole feeder is designed for batch processing with the original idea that this would improve the performance greatly, currently we're processing batches of 1 though to not trigger the above problem. If we have more efficient querying which works on batches of items, and the caching which could potentially greatly reduce the size of the stored SimpleResourceGraphs, it may start to make sense to work on batches of items.&lt;br /&gt;
&lt;br /&gt;
=== Caching for Batch indexing ===&lt;br /&gt;
As Vishesh suggested the caching could give a serious performance boost when indexing lots of similar items (such as a mailinglist).&lt;br /&gt;
&lt;br /&gt;
=== Dealing with large batches of new/changed items ===&lt;br /&gt;
If you're i.e. adding a new email account, that results in all 300'000 emails being added as new task to the indexing queue. Currently those end up in the high priority queue, but they should really be treated just as the initial indexing. One way would be to move them to the lowPrio queue, but I'd prefer just skipping them and letting the maintenance task pick them up. The challenge is to distinguish between items which are part of new collections and regular changes which may happen at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Other indexing strategies ===&lt;br /&gt;
Another strategy to speed the initial indexing up could be to first index i.e. subject only, and in a second round go through all remaining stuff such as text content and attachments. With the current indexing and quering performance I doubt it makes sense to work on this though.&lt;br /&gt;
&lt;br /&gt;
== Other issues ==&lt;br /&gt;
* Maildir with fileindexer could produce duplicates:&lt;br /&gt;
If the fileindexer indexes the same items that could lead to duplicates when searching for fulltext. Not sure if they're indexed and the problem is resolved for searching due to the AkonadiObject type used in the feeder.&lt;br /&gt;
&lt;br /&gt;
* Maildir indexing probably doesn't work because we use cacheOnly (to not download disconnected IMAP stuff), but maildir is never in the cache.&lt;br /&gt;
I have never tested it, but this would leadt to maildir resources (and probably others as well), to never be indexed due to the failing ItemFetchJob.&lt;br /&gt;
&lt;br /&gt;
* We can't remove resources first as otherwise relations (i.e. to a topic) are lost (which are subresources of the resource):&lt;br /&gt;
According to vishesh it would be performance-wise to not use the OverwriteProperties flag, and instead fully remove the resource and index it freshly. The problem is that removeDataByApplication, when using the RemoveSubresources flag, removes also the created PIMO representation (correctly so), and thus also all relations (e.g. a relation to a topic), which makes the indexed resource unusable from applications (or at least vastly less useful).&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
I conducted my tests on a T420s with an Intel i7-2640M processor and an SSD disk, so performance may be worse on other systems.&lt;br /&gt;
&lt;br /&gt;
== Measurements ==&lt;br /&gt;
In the order of priority:&lt;br /&gt;
&lt;br /&gt;
* Improve query performance:&lt;br /&gt;
If we're faster with querying we can tackle several problems at the same time. The normal indexing is simply faster, and it's prerequisite so the following measurements work well.&lt;br /&gt;
* Implement initial indexing as recurring maintenance task:&lt;br /&gt;
By implementing the initial indexing as recurring maintenance task, we no longer have to store all notifications, and can simply skip large batches of added items (as they will be picked up eventually). This means we can disable the ChangeRecorder completely while the indexer is turned off (no huge changefiles, as well as no outdated notifications anymore). So overall it would simplify the whole process greatly and fix a couple of nasty problems.&lt;br /&gt;
For this one it's especially important to have decent query performance as we will repeatedly query all items existing, so something like a per collection mass query would make sense I think.&lt;br /&gt;
&lt;br /&gt;
The only problem with the recurring maintenance task are items which fail to be indexed and will repeatedly tried if not blocked somehow (i.e. by an attribute).&lt;br /&gt;
&lt;br /&gt;
* Either fix nepomuk/virtuoso or block indexing of items which we know can fail (lots of To:/Cc: emails for instance)&lt;br /&gt;
* Honor powersource&lt;br /&gt;
* Caching for Batch indexing (at least for mail)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Query Performance Tests ==&lt;br /&gt;
&lt;br /&gt;
=== Akonadi (sql) ===&lt;br /&gt;
* Query: select * from pimitemtable;&lt;br /&gt;
* Result set: ~100'000 Items&lt;br /&gt;
* Time: ~1s&lt;br /&gt;
&lt;br /&gt;
=== Akonadi (RecursiveItemFetchJob) ===&lt;br /&gt;
* Query: recursive fetch without payload&lt;br /&gt;
* Result set: ~100'000 Items&lt;br /&gt;
* Time: ~13s&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk (nepomukshell) ===&lt;br /&gt;
* Query: SELECT ?r WHERE { ?r nie:isPartOf ?c . ?c nie:url &amp;lt;akonadi:?collection=43&amp;gt; . ?r a aneo:AkonadiDataObject }&lt;br /&gt;
* Resultset: ~1500&lt;br /&gt;
* Time: ~8.28s&lt;br /&gt;
&lt;br /&gt;
* Query: SELECT ?r WHERE { ?r a aneo:AkonadiDataObject }&lt;br /&gt;
* Resultset: ~100'000&lt;br /&gt;
* Time: ~19.46 minutes&lt;br /&gt;
&lt;br /&gt;
Note: Most of the time seems to be spent in nepomukshell (nepsak max, virtuoso virtually idle), so the query itself is probably a lot faster.&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk (isql-vt) ===&lt;br /&gt;
&lt;br /&gt;
* Query: sparql prefix aneo: &amp;lt;http://akonadi-project.org/ontologies/aneo#&amp;gt; SELECT ?r WHERE { ?r a aneo:AkonadiDataObject };&lt;br /&gt;
* Resultset: ~100'000&lt;br /&gt;
* Time: ~1.2s&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk (Soprano::QueryResultIterator) ===&lt;br /&gt;
&lt;br /&gt;
* Query: SELECT ?r WHERE { ?r a aneo:AkonadiDataObject  . ?r aneo:akonadiIndexCompatLevel  3 }&lt;br /&gt;
* Resultset: ~100'000&lt;br /&gt;
* Time: ~14s&lt;br /&gt;
&lt;br /&gt;
=== Analysis ===&lt;br /&gt;
Comparing the queries from akonadi and nepomuk is a viable alternative to the initial indexing which starts always from scratch and queries every item.&lt;br /&gt;
* Indexing can go faster since there is no need to check for existing data&lt;br /&gt;
** That's under the assumtion that there is no pre-aneo:AkonadiDataObject data&lt;br /&gt;
* Large batches of new items can simply be skipped and are picked up later by the initial indexing queries&lt;br /&gt;
&lt;br /&gt;
Limitations:&lt;br /&gt;
Since these queries only check for existance, already indexed items still need to be checked for updates for which we have two options:&lt;br /&gt;
* No queries and making sure no update is ever lost (not very realistic)&lt;br /&gt;
* Do as we do now and query item per item.&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User:Cmollekopf/Drafts/AkonadiNepmukFeeder</id>
		<title>User:Cmollekopf/Drafts/AkonadiNepmukFeeder</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User:Cmollekopf/Drafts/AkonadiNepmukFeeder"/>
				<updated>2012-12-01T15:27:06Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: /* Query Performance Tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
The feeder consist of an agent, which receives notification about new/changed items using a ChangeRecorder, and a feederqueue, which processes the actual indexing.&lt;br /&gt;
&lt;br /&gt;
The changes received from the ChangeRecorder result in items being added to the feederqueue, which consists itself of three queues:&lt;br /&gt;
* collectionqueue: Queue for collections to index&lt;br /&gt;
* high prio queue: item indexing queue with high priority&lt;br /&gt;
* low prio queue: item indexing queue with low priority (Indexes slower, if the high prio queue has items those take precedence)&lt;br /&gt;
&lt;br /&gt;
=== Initial indexing ===&lt;br /&gt;
On startup the indexer goes through all collections if they have already been indexed (which is established by a query to nepomuk), and if not it adds not indexed collections to the collectionqueue, which will result in the items being added to the low priority queue (the initial indexing is always considered a low priority task).&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
* We're triggering the work but are not actually doing it. All the hard work is done in virtuosos, so if we throw to much work at it, it either goes crazy or is just busy for a pretty long time, therefore we work with timeouts between indexing items, and try this way to not overload virtuoso.&lt;br /&gt;
* We don't get any priority for notifications. It's generally speaking the same if you edit a note (which should be indexed instantly because applications may rely on that data) or if you add an email account with 300'000 mails (for which we may take our time).&lt;br /&gt;
* The code is without unittests. Due to the use of async akonadi and nepomuk calls throughout the code, all those async calls would need to be wrapped to allow slipping mock objects which could be used to test the indexing.&lt;br /&gt;
&lt;br /&gt;
== Honoring power consumption and CPU usage ==&lt;br /&gt;
Currently we have the idledetection provided by KIdleTime already in place, we don't honor the powersource though, as well as we don't avoid the indexing while watching a movie or so.&lt;br /&gt;
&lt;br /&gt;
== Avoiding unnecessary indexing ==&lt;br /&gt;
We're already filtering some changes which don't affect the indexed data and I'm not sure if there is much more we can do in that respect.&lt;br /&gt;
It might be worthwile though to optimize certain spcial cases such as mass flag changes (\seen on email). Since there is only very little data changing for many items, this could affect the performance quite a bit if there is a way store this information more efficiently.&lt;br /&gt;
&lt;br /&gt;
== Querying ==&lt;br /&gt;
Queries are used to check whether a collection/item needs to be (re-)indexed after getting i.e. a notification for an item (so it ends up in the indexing queue). For instance, all collections are re-queried on every startup if they have already been indexed (for the initial indexing). In an ideal world, that re-querying would of course not be necessary as the change-recorder would allow us to be notified of each and every change that happens to the akonadi store, and we can index accordingly, however, we used to loose updates in the feeder itself, some items fail to be indexed, or some other unforseen problem can lead to unindexed items in indexed collections meaning they will never ever get indexed (unless modfied again). The only reasonable way to fix this IMO is to requery ALL items from time to time and index what's missing.&lt;br /&gt;
&lt;br /&gt;
As a nice side-effect that would also allow us to be a bit sloppier with the received notifications as it can be quite a PITA to make sure none of those notifications are lost and all get processed eventually. Especially when the feeder process can be killed, indexing can be turned off (and meanwhile notificaitons pile up indefinitely), the computer can just crash...&lt;br /&gt;
&lt;br /&gt;
So re-querying really seems a more sustainable approach. The problem is however the amount of time it takes to query each item one by one.&lt;br /&gt;
&lt;br /&gt;
Only checking ~9000 emails whether they have already been indexed takes here around 370s (that's 40ms per mail). If you think of email collections of up to 1'000'000 mails that's more than 41100s (~11h). Which means IMO that we either need to get performance improvements in the order of 10 or we need to prioritize some collections (such as non-mail and for mail inbox only etc.). I do think that it should be in the realm of the achievable to query for ~1000000 items within a couple of minutes, so we can execute this as regular maintenance task. We might have to change our strategy a bit though.&lt;br /&gt;
&lt;br /&gt;
E.g. we could query for lists of items (once in nepomuk and once in akonadi), comparing them would already give us a list of missing items.&lt;br /&gt;
With that we could also save use afterwards one query per item to check if it's already indexed (we know it isn't). &lt;br /&gt;
&lt;br /&gt;
Should querying nepomuk indeed show to be that slow due to its internal database structure, we could still work with an akonadi attribute (I'd like to avoid that if possible though).&lt;br /&gt;
&lt;br /&gt;
Note that repeatedly querying for the same item results in queries being completed in &amp;lt;2ms due to the virtuoso internal caching.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
Indexing is fairly slow as kdepim-runtime/agents/nepomukfeeder/test/performancetest.cpp shows. The simplest mail possible takes already ~0.5s to index on my machine, I don't know however where most of that time is spent.&lt;br /&gt;
&lt;br /&gt;
Another problem are i.e. mails with several Cc email addresses. I can i.e. index up to ~12 Cc mail without problem (and it takes maybe ~0.7s), but as soon as I go above this the indexing takes like ~10s and then virtuoso goes crazy.&lt;br /&gt;
&lt;br /&gt;
With an even larger number of CC mailaddresses viruoso just bails out with a bufferoverflow because one of the generated queries is just too large.&lt;br /&gt;
&lt;br /&gt;
The middle case is of course the most dangerous as it results in viruoso not doing any work anymore while burning the cpu until it's killed.&lt;br /&gt;
&lt;br /&gt;
The whole feeder is designed for batch processing with the original idea that this would improve the performance greatly, currently we're processing batches of 1 though to not trigger the above problem. If we have more efficient querying which works on batches of items, and the caching which could potentially greatly reduce the size of the stored SimpleResourceGraphs, it may start to make sense to work on batches of items.&lt;br /&gt;
&lt;br /&gt;
=== Caching for Batch indexing ===&lt;br /&gt;
As Vishesh suggested the caching could give a serious performance boost when indexing lots of similar items (such as a mailinglist).&lt;br /&gt;
&lt;br /&gt;
=== Dealing with large batches of new/changed items ===&lt;br /&gt;
If you're i.e. adding a new email account, that results in all 300'000 emails being added as new task to the indexing queue. Currently those end up in the high priority queue, but they should really be treated just as the initial indexing. One way would be to move them to the lowPrio queue, but I'd prefer just skipping them and letting the maintenance task pick them up. The challenge is to distinguish between items which are part of new collections and regular changes which may happen at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Other indexing strategies ===&lt;br /&gt;
Another strategy to speed the initial indexing up could be to first index i.e. subject only, and in a second round go through all remaining stuff such as text content and attachments. With the current indexing and quering performance I doubt it makes sense to work on this though.&lt;br /&gt;
&lt;br /&gt;
== Other issues ==&lt;br /&gt;
* Maildir with fileindexer could produce duplicates:&lt;br /&gt;
If the fileindexer indexes the same items that could lead to duplicates when searching for fulltext. Not sure if they're indexed and the problem is resolved for searching due to the AkonadiObject type used in the feeder.&lt;br /&gt;
&lt;br /&gt;
* Maildir indexing probably doesn't work because we use cacheOnly (to not download disconnected IMAP stuff), but maildir is never in the cache.&lt;br /&gt;
I have never tested it, but this would leadt to maildir resources (and probably others as well), to never be indexed due to the failing ItemFetchJob.&lt;br /&gt;
&lt;br /&gt;
* We can't remove resources first as otherwise relations (i.e. to a topic) are lost (which are subresources of the resource):&lt;br /&gt;
According to vishesh it would be performance-wise to not use the OverwriteProperties flag, and instead fully remove the resource and index it freshly. The problem is that removeDataByApplication, when using the RemoveSubresources flag, removes also the created PIMO representation (correctly so), and thus also all relations (e.g. a relation to a topic), which makes the indexed resource unusable from applications (or at least vastly less useful).&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
I conducted my tests on a T420s with an Intel i7-2640M processor and an SSD disk, so performance may be worse on other systems.&lt;br /&gt;
&lt;br /&gt;
== Measurements ==&lt;br /&gt;
In the order of priority:&lt;br /&gt;
&lt;br /&gt;
* Improve query performance:&lt;br /&gt;
If we're faster with querying we can tackle several problems at the same time. The normal indexing is simply faster, and it's prerequisite so the following measurements work well.&lt;br /&gt;
* Implement initial indexing as recurring maintenance task:&lt;br /&gt;
By implementing the initial indexing as recurring maintenance task, we no longer have to store all notifications, and can simply skip large batches of added items (as they will be picked up eventually). This means we can disable the ChangeRecorder completely while the indexer is turned off (no huge changefiles, as well as no outdated notifications anymore). So overall it would simplify the whole process greatly and fix a couple of nasty problems.&lt;br /&gt;
For this one it's especially important to have decent query performance as we will repeatedly query all items existing, so something like a per collection mass query would make sense I think.&lt;br /&gt;
&lt;br /&gt;
The only problem with the recurring maintenance task are items which fail to be indexed and will repeatedly tried if not blocked somehow (i.e. by an attribute).&lt;br /&gt;
&lt;br /&gt;
* Either fix nepomuk/virtuoso or block indexing of items which we know can fail (lots of To:/Cc: emails for instance)&lt;br /&gt;
* Honor powersource&lt;br /&gt;
* Caching for Batch indexing (at least for mail)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Query Performance Tests ==&lt;br /&gt;
&lt;br /&gt;
=== Akonadi (sql) ===&lt;br /&gt;
* Query: select * from pimitemtable;&lt;br /&gt;
* Result set: ~100'000 Items&lt;br /&gt;
* Time: ~1s&lt;br /&gt;
&lt;br /&gt;
=== Akonadi (RecursiveItemFetchJob) ===&lt;br /&gt;
* Query: recursive fetch without payload&lt;br /&gt;
* Result set: ~100'000 Items&lt;br /&gt;
* Time: ~13s&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk (nepomukshell) ===&lt;br /&gt;
* Query: SELECT ?r WHERE { ?r nie:isPartOf ?c . ?c nie:url &amp;lt;akonadi:?collection=43&amp;gt; . ?r a aneo:AkonadiDataObject }&lt;br /&gt;
* Resultset: ~1500&lt;br /&gt;
* Time: ~8.28s&lt;br /&gt;
&lt;br /&gt;
* Query: SELECT ?r WHERE { ?r a aneo:AkonadiDataObject }&lt;br /&gt;
* Resultset: ~100'000&lt;br /&gt;
* Time: ~19.46 minutes&lt;br /&gt;
&lt;br /&gt;
Note: Most of the time seems to be spent in nepomukshell (nepsak max, virtuoso virtually idle), so the query itself is probably a lot faster.&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk (isql-vt) ===&lt;br /&gt;
&lt;br /&gt;
* Query: sparql prefix aneo: &amp;lt;http://akonadi-project.org/ontologies/aneo#&amp;gt; SELECT ?r WHERE { ?r a aneo:AkonadiDataObject };&lt;br /&gt;
* Resultset: ~100'000&lt;br /&gt;
* Time: ~1.2s&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk (Soprano::QueryResultIterator�) ===&lt;br /&gt;
&lt;br /&gt;
* Query: SELECT ?r WHERE { ?r a aneo:AkonadiDataObject  . ?r aneo:akonadiIndexCompatLevel  3 }&lt;br /&gt;
* Resultset: ~100'000&lt;br /&gt;
* Time: ~14s&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User:Cmollekopf/Drafts/AkonadiNepmukFeeder</id>
		<title>User:Cmollekopf/Drafts/AkonadiNepmukFeeder</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User:Cmollekopf/Drafts/AkonadiNepmukFeeder"/>
				<updated>2012-12-01T13:51:06Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: /* Query Performance Tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
The feeder consist of an agent, which receives notification about new/changed items using a ChangeRecorder, and a feederqueue, which processes the actual indexing.&lt;br /&gt;
&lt;br /&gt;
The changes received from the ChangeRecorder result in items being added to the feederqueue, which consists itself of three queues:&lt;br /&gt;
* collectionqueue: Queue for collections to index&lt;br /&gt;
* high prio queue: item indexing queue with high priority&lt;br /&gt;
* low prio queue: item indexing queue with low priority (Indexes slower, if the high prio queue has items those take precedence)&lt;br /&gt;
&lt;br /&gt;
=== Initial indexing ===&lt;br /&gt;
On startup the indexer goes through all collections if they have already been indexed (which is established by a query to nepomuk), and if not it adds not indexed collections to the collectionqueue, which will result in the items being added to the low priority queue (the initial indexing is always considered a low priority task).&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
* We're triggering the work but are not actually doing it. All the hard work is done in virtuosos, so if we throw to much work at it, it either goes crazy or is just busy for a pretty long time, therefore we work with timeouts between indexing items, and try this way to not overload virtuoso.&lt;br /&gt;
* We don't get any priority for notifications. It's generally speaking the same if you edit a note (which should be indexed instantly because applications may rely on that data) or if you add an email account with 300'000 mails (for which we may take our time).&lt;br /&gt;
* The code is without unittests. Due to the use of async akonadi and nepomuk calls throughout the code, all those async calls would need to be wrapped to allow slipping mock objects which could be used to test the indexing.&lt;br /&gt;
&lt;br /&gt;
== Honoring power consumption and CPU usage ==&lt;br /&gt;
Currently we have the idledetection provided by KIdleTime already in place, we don't honor the powersource though, as well as we don't avoid the indexing while watching a movie or so.&lt;br /&gt;
&lt;br /&gt;
== Avoiding unnecessary indexing ==&lt;br /&gt;
We're already filtering some changes which don't affect the indexed data and I'm not sure if there is much more we can do in that respect.&lt;br /&gt;
It might be worthwile though to optimize certain spcial cases such as mass flag changes (\seen on email). Since there is only very little data changing for many items, this could affect the performance quite a bit if there is a way store this information more efficiently.&lt;br /&gt;
&lt;br /&gt;
== Querying ==&lt;br /&gt;
Queries are used to check whether a collection/item needs to be (re-)indexed after getting i.e. a notification for an item (so it ends up in the indexing queue). For instance, all collections are re-queried on every startup if they have already been indexed (for the initial indexing). In an ideal world, that re-querying would of course not be necessary as the change-recorder would allow us to be notified of each and every change that happens to the akonadi store, and we can index accordingly, however, we used to loose updates in the feeder itself, some items fail to be indexed, or some other unforseen problem can lead to unindexed items in indexed collections meaning they will never ever get indexed (unless modfied again). The only reasonable way to fix this IMO is to requery ALL items from time to time and index what's missing.&lt;br /&gt;
&lt;br /&gt;
As a nice side-effect that would also allow us to be a bit sloppier with the received notifications as it can be quite a PITA to make sure none of those notifications are lost and all get processed eventually. Especially when the feeder process can be killed, indexing can be turned off (and meanwhile notificaitons pile up indefinitely), the computer can just crash...&lt;br /&gt;
&lt;br /&gt;
So re-querying really seems a more sustainable approach. The problem is however the amount of time it takes to query each item one by one.&lt;br /&gt;
&lt;br /&gt;
Only checking ~9000 emails whether they have already been indexed takes here around 370s (that's 40ms per mail). If you think of email collections of up to 1'000'000 mails that's more than 41100s (~11h). Which means IMO that we either need to get performance improvements in the order of 10 or we need to prioritize some collections (such as non-mail and for mail inbox only etc.). I do think that it should be in the realm of the achievable to query for ~1000000 items within a couple of minutes, so we can execute this as regular maintenance task. We might have to change our strategy a bit though.&lt;br /&gt;
&lt;br /&gt;
E.g. we could query for lists of items (once in nepomuk and once in akonadi), comparing them would already give us a list of missing items.&lt;br /&gt;
With that we could also save use afterwards one query per item to check if it's already indexed (we know it isn't). &lt;br /&gt;
&lt;br /&gt;
Should querying nepomuk indeed show to be that slow due to its internal database structure, we could still work with an akonadi attribute (I'd like to avoid that if possible though).&lt;br /&gt;
&lt;br /&gt;
Note that repeatedly querying for the same item results in queries being completed in &amp;lt;2ms due to the virtuoso internal caching.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
Indexing is fairly slow as kdepim-runtime/agents/nepomukfeeder/test/performancetest.cpp shows. The simplest mail possible takes already ~0.5s to index on my machine, I don't know however where most of that time is spent.&lt;br /&gt;
&lt;br /&gt;
Another problem are i.e. mails with several Cc email addresses. I can i.e. index up to ~12 Cc mail without problem (and it takes maybe ~0.7s), but as soon as I go above this the indexing takes like ~10s and then virtuoso goes crazy.&lt;br /&gt;
&lt;br /&gt;
With an even larger number of CC mailaddresses viruoso just bails out with a bufferoverflow because one of the generated queries is just too large.&lt;br /&gt;
&lt;br /&gt;
The middle case is of course the most dangerous as it results in viruoso not doing any work anymore while burning the cpu until it's killed.&lt;br /&gt;
&lt;br /&gt;
The whole feeder is designed for batch processing with the original idea that this would improve the performance greatly, currently we're processing batches of 1 though to not trigger the above problem. If we have more efficient querying which works on batches of items, and the caching which could potentially greatly reduce the size of the stored SimpleResourceGraphs, it may start to make sense to work on batches of items.&lt;br /&gt;
&lt;br /&gt;
=== Caching for Batch indexing ===&lt;br /&gt;
As Vishesh suggested the caching could give a serious performance boost when indexing lots of similar items (such as a mailinglist).&lt;br /&gt;
&lt;br /&gt;
=== Dealing with large batches of new/changed items ===&lt;br /&gt;
If you're i.e. adding a new email account, that results in all 300'000 emails being added as new task to the indexing queue. Currently those end up in the high priority queue, but they should really be treated just as the initial indexing. One way would be to move them to the lowPrio queue, but I'd prefer just skipping them and letting the maintenance task pick them up. The challenge is to distinguish between items which are part of new collections and regular changes which may happen at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Other indexing strategies ===&lt;br /&gt;
Another strategy to speed the initial indexing up could be to first index i.e. subject only, and in a second round go through all remaining stuff such as text content and attachments. With the current indexing and quering performance I doubt it makes sense to work on this though.&lt;br /&gt;
&lt;br /&gt;
== Other issues ==&lt;br /&gt;
* Maildir with fileindexer could produce duplicates:&lt;br /&gt;
If the fileindexer indexes the same items that could lead to duplicates when searching for fulltext. Not sure if they're indexed and the problem is resolved for searching due to the AkonadiObject type used in the feeder.&lt;br /&gt;
&lt;br /&gt;
* Maildir indexing probably doesn't work because we use cacheOnly (to not download disconnected IMAP stuff), but maildir is never in the cache.&lt;br /&gt;
I have never tested it, but this would leadt to maildir resources (and probably others as well), to never be indexed due to the failing ItemFetchJob.&lt;br /&gt;
&lt;br /&gt;
* We can't remove resources first as otherwise relations (i.e. to a topic) are lost (which are subresources of the resource):&lt;br /&gt;
According to vishesh it would be performance-wise to not use the OverwriteProperties flag, and instead fully remove the resource and index it freshly. The problem is that removeDataByApplication, when using the RemoveSubresources flag, removes also the created PIMO representation (correctly so), and thus also all relations (e.g. a relation to a topic), which makes the indexed resource unusable from applications (or at least vastly less useful).&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
I conducted my tests on a T420s with an Intel i7-2640M processor and an SSD disk, so performance may be worse on other systems.&lt;br /&gt;
&lt;br /&gt;
== Measurements ==&lt;br /&gt;
In the order of priority:&lt;br /&gt;
&lt;br /&gt;
* Improve query performance:&lt;br /&gt;
If we're faster with querying we can tackle several problems at the same time. The normal indexing is simply faster, and it's prerequisite so the following measurements work well.&lt;br /&gt;
* Implement initial indexing as recurring maintenance task:&lt;br /&gt;
By implementing the initial indexing as recurring maintenance task, we no longer have to store all notifications, and can simply skip large batches of added items (as they will be picked up eventually). This means we can disable the ChangeRecorder completely while the indexer is turned off (no huge changefiles, as well as no outdated notifications anymore). So overall it would simplify the whole process greatly and fix a couple of nasty problems.&lt;br /&gt;
For this one it's especially important to have decent query performance as we will repeatedly query all items existing, so something like a per collection mass query would make sense I think.&lt;br /&gt;
&lt;br /&gt;
The only problem with the recurring maintenance task are items which fail to be indexed and will repeatedly tried if not blocked somehow (i.e. by an attribute).&lt;br /&gt;
&lt;br /&gt;
* Either fix nepomuk/virtuoso or block indexing of items which we know can fail (lots of To:/Cc: emails for instance)&lt;br /&gt;
* Honor powersource&lt;br /&gt;
* Caching for Batch indexing (at least for mail)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Query Performance Tests ==&lt;br /&gt;
&lt;br /&gt;
=== Akonadi ===&lt;br /&gt;
* Query: select * from pimitemtable;&lt;br /&gt;
* Result set: ~100'000 Items&lt;br /&gt;
* Time: ~1s&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk (nepomukshell) ===&lt;br /&gt;
* Query: SELECT ?r WHERE { ?r nie:isPartOf ?c . ?c nie:url &amp;lt;akonadi:?collection=43&amp;gt; . ?r a aneo:AkonadiDataObject }&lt;br /&gt;
* Resultset: ~1500&lt;br /&gt;
* Time: ~8.28s&lt;br /&gt;
&lt;br /&gt;
* Query: SELECT ?r WHERE { ?r a aneo:AkonadiDataObject }&lt;br /&gt;
* Resultset: ~100'000&lt;br /&gt;
* Time: ~19.46 minutes&lt;br /&gt;
&lt;br /&gt;
Note: Most of the time seems to be spent in nepomukshell (nepsak max, virtuoso virtually idle), so the query itself is probably a lot faster.&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk (isql-vt) ===&lt;br /&gt;
&lt;br /&gt;
*Query: sparql prefix aneo: &amp;lt;http://akonadi-project.org/ontologies/aneo#&amp;gt; SELECT ?r WHERE { ?r a aneo:AkonadiDataObject };&lt;br /&gt;
* Resultset: ~100'000&lt;br /&gt;
* Time: ~1200ms&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User:Cmollekopf/Drafts/AkonadiNepmukFeeder</id>
		<title>User:Cmollekopf/Drafts/AkonadiNepmukFeeder</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User:Cmollekopf/Drafts/AkonadiNepmukFeeder"/>
				<updated>2012-12-01T13:43:30Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
The feeder consist of an agent, which receives notification about new/changed items using a ChangeRecorder, and a feederqueue, which processes the actual indexing.&lt;br /&gt;
&lt;br /&gt;
The changes received from the ChangeRecorder result in items being added to the feederqueue, which consists itself of three queues:&lt;br /&gt;
* collectionqueue: Queue for collections to index&lt;br /&gt;
* high prio queue: item indexing queue with high priority&lt;br /&gt;
* low prio queue: item indexing queue with low priority (Indexes slower, if the high prio queue has items those take precedence)&lt;br /&gt;
&lt;br /&gt;
=== Initial indexing ===&lt;br /&gt;
On startup the indexer goes through all collections if they have already been indexed (which is established by a query to nepomuk), and if not it adds not indexed collections to the collectionqueue, which will result in the items being added to the low priority queue (the initial indexing is always considered a low priority task).&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
* We're triggering the work but are not actually doing it. All the hard work is done in virtuosos, so if we throw to much work at it, it either goes crazy or is just busy for a pretty long time, therefore we work with timeouts between indexing items, and try this way to not overload virtuoso.&lt;br /&gt;
* We don't get any priority for notifications. It's generally speaking the same if you edit a note (which should be indexed instantly because applications may rely on that data) or if you add an email account with 300'000 mails (for which we may take our time).&lt;br /&gt;
* The code is without unittests. Due to the use of async akonadi and nepomuk calls throughout the code, all those async calls would need to be wrapped to allow slipping mock objects which could be used to test the indexing.&lt;br /&gt;
&lt;br /&gt;
== Honoring power consumption and CPU usage ==&lt;br /&gt;
Currently we have the idledetection provided by KIdleTime already in place, we don't honor the powersource though, as well as we don't avoid the indexing while watching a movie or so.&lt;br /&gt;
&lt;br /&gt;
== Avoiding unnecessary indexing ==&lt;br /&gt;
We're already filtering some changes which don't affect the indexed data and I'm not sure if there is much more we can do in that respect.&lt;br /&gt;
It might be worthwile though to optimize certain spcial cases such as mass flag changes (\seen on email). Since there is only very little data changing for many items, this could affect the performance quite a bit if there is a way store this information more efficiently.&lt;br /&gt;
&lt;br /&gt;
== Querying ==&lt;br /&gt;
Queries are used to check whether a collection/item needs to be (re-)indexed after getting i.e. a notification for an item (so it ends up in the indexing queue). For instance, all collections are re-queried on every startup if they have already been indexed (for the initial indexing). In an ideal world, that re-querying would of course not be necessary as the change-recorder would allow us to be notified of each and every change that happens to the akonadi store, and we can index accordingly, however, we used to loose updates in the feeder itself, some items fail to be indexed, or some other unforseen problem can lead to unindexed items in indexed collections meaning they will never ever get indexed (unless modfied again). The only reasonable way to fix this IMO is to requery ALL items from time to time and index what's missing.&lt;br /&gt;
&lt;br /&gt;
As a nice side-effect that would also allow us to be a bit sloppier with the received notifications as it can be quite a PITA to make sure none of those notifications are lost and all get processed eventually. Especially when the feeder process can be killed, indexing can be turned off (and meanwhile notificaitons pile up indefinitely), the computer can just crash...&lt;br /&gt;
&lt;br /&gt;
So re-querying really seems a more sustainable approach. The problem is however the amount of time it takes to query each item one by one.&lt;br /&gt;
&lt;br /&gt;
Only checking ~9000 emails whether they have already been indexed takes here around 370s (that's 40ms per mail). If you think of email collections of up to 1'000'000 mails that's more than 41100s (~11h). Which means IMO that we either need to get performance improvements in the order of 10 or we need to prioritize some collections (such as non-mail and for mail inbox only etc.). I do think that it should be in the realm of the achievable to query for ~1000000 items within a couple of minutes, so we can execute this as regular maintenance task. We might have to change our strategy a bit though.&lt;br /&gt;
&lt;br /&gt;
E.g. we could query for lists of items (once in nepomuk and once in akonadi), comparing them would already give us a list of missing items.&lt;br /&gt;
With that we could also save use afterwards one query per item to check if it's already indexed (we know it isn't). &lt;br /&gt;
&lt;br /&gt;
Should querying nepomuk indeed show to be that slow due to its internal database structure, we could still work with an akonadi attribute (I'd like to avoid that if possible though).&lt;br /&gt;
&lt;br /&gt;
Note that repeatedly querying for the same item results in queries being completed in &amp;lt;2ms due to the virtuoso internal caching.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
Indexing is fairly slow as kdepim-runtime/agents/nepomukfeeder/test/performancetest.cpp shows. The simplest mail possible takes already ~0.5s to index on my machine, I don't know however where most of that time is spent.&lt;br /&gt;
&lt;br /&gt;
Another problem are i.e. mails with several Cc email addresses. I can i.e. index up to ~12 Cc mail without problem (and it takes maybe ~0.7s), but as soon as I go above this the indexing takes like ~10s and then virtuoso goes crazy.&lt;br /&gt;
&lt;br /&gt;
With an even larger number of CC mailaddresses viruoso just bails out with a bufferoverflow because one of the generated queries is just too large.&lt;br /&gt;
&lt;br /&gt;
The middle case is of course the most dangerous as it results in viruoso not doing any work anymore while burning the cpu until it's killed.&lt;br /&gt;
&lt;br /&gt;
The whole feeder is designed for batch processing with the original idea that this would improve the performance greatly, currently we're processing batches of 1 though to not trigger the above problem. If we have more efficient querying which works on batches of items, and the caching which could potentially greatly reduce the size of the stored SimpleResourceGraphs, it may start to make sense to work on batches of items.&lt;br /&gt;
&lt;br /&gt;
=== Caching for Batch indexing ===&lt;br /&gt;
As Vishesh suggested the caching could give a serious performance boost when indexing lots of similar items (such as a mailinglist).&lt;br /&gt;
&lt;br /&gt;
=== Dealing with large batches of new/changed items ===&lt;br /&gt;
If you're i.e. adding a new email account, that results in all 300'000 emails being added as new task to the indexing queue. Currently those end up in the high priority queue, but they should really be treated just as the initial indexing. One way would be to move them to the lowPrio queue, but I'd prefer just skipping them and letting the maintenance task pick them up. The challenge is to distinguish between items which are part of new collections and regular changes which may happen at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Other indexing strategies ===&lt;br /&gt;
Another strategy to speed the initial indexing up could be to first index i.e. subject only, and in a second round go through all remaining stuff such as text content and attachments. With the current indexing and quering performance I doubt it makes sense to work on this though.&lt;br /&gt;
&lt;br /&gt;
== Other issues ==&lt;br /&gt;
* Maildir with fileindexer could produce duplicates:&lt;br /&gt;
If the fileindexer indexes the same items that could lead to duplicates when searching for fulltext. Not sure if they're indexed and the problem is resolved for searching due to the AkonadiObject type used in the feeder.&lt;br /&gt;
&lt;br /&gt;
* Maildir indexing probably doesn't work because we use cacheOnly (to not download disconnected IMAP stuff), but maildir is never in the cache.&lt;br /&gt;
I have never tested it, but this would leadt to maildir resources (and probably others as well), to never be indexed due to the failing ItemFetchJob.&lt;br /&gt;
&lt;br /&gt;
* We can't remove resources first as otherwise relations (i.e. to a topic) are lost (which are subresources of the resource):&lt;br /&gt;
According to vishesh it would be performance-wise to not use the OverwriteProperties flag, and instead fully remove the resource and index it freshly. The problem is that removeDataByApplication, when using the RemoveSubresources flag, removes also the created PIMO representation (correctly so), and thus also all relations (e.g. a relation to a topic), which makes the indexed resource unusable from applications (or at least vastly less useful).&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
I conducted my tests on a T420s with an Intel i7-2640M processor and an SSD disk, so performance may be worse on other systems.&lt;br /&gt;
&lt;br /&gt;
== Measurements ==&lt;br /&gt;
In the order of priority:&lt;br /&gt;
&lt;br /&gt;
* Improve query performance:&lt;br /&gt;
If we're faster with querying we can tackle several problems at the same time. The normal indexing is simply faster, and it's prerequisite so the following measurements work well.&lt;br /&gt;
* Implement initial indexing as recurring maintenance task:&lt;br /&gt;
By implementing the initial indexing as recurring maintenance task, we no longer have to store all notifications, and can simply skip large batches of added items (as they will be picked up eventually). This means we can disable the ChangeRecorder completely while the indexer is turned off (no huge changefiles, as well as no outdated notifications anymore). So overall it would simplify the whole process greatly and fix a couple of nasty problems.&lt;br /&gt;
For this one it's especially important to have decent query performance as we will repeatedly query all items existing, so something like a per collection mass query would make sense I think.&lt;br /&gt;
&lt;br /&gt;
The only problem with the recurring maintenance task are items which fail to be indexed and will repeatedly tried if not blocked somehow (i.e. by an attribute).&lt;br /&gt;
&lt;br /&gt;
* Either fix nepomuk/virtuoso or block indexing of items which we know can fail (lots of To:/Cc: emails for instance)&lt;br /&gt;
* Honor powersource&lt;br /&gt;
* Caching for Batch indexing (at least for mail)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Query Performance Tests ==&lt;br /&gt;
&lt;br /&gt;
=== Akonadi ===&lt;br /&gt;
* Query: select * from pimitemtable;&lt;br /&gt;
* Result set: ~100'000 Items&lt;br /&gt;
* Time: ~1s&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk (nepomukshell) ===&lt;br /&gt;
* Query: SELECT ?r WHERE { ?r nie:isPartOf ?c . ?c nie:url &amp;lt;akonadi:?collection=43&amp;gt; . ?r a aneo:AkonadiDataObject }&lt;br /&gt;
* Resultset: ~1500&lt;br /&gt;
* Time: ~8.28s&lt;br /&gt;
&lt;br /&gt;
* Query: SELECT ?r WHERE { ?r a aneo:AkonadiDataObject }&lt;br /&gt;
* Resultset: ~100'000&lt;br /&gt;
* Time: ~19.46 minutes&lt;br /&gt;
&lt;br /&gt;
Note: Most of the time seems to be spent in nepomukshell (nepsak max, virtuoso virtually idle), so the query itself is probably a lot faster.&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User:Cmollekopf/Drafts/AkonadiNepmukFeeder</id>
		<title>User:Cmollekopf/Drafts/AkonadiNepmukFeeder</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User:Cmollekopf/Drafts/AkonadiNepmukFeeder"/>
				<updated>2012-10-30T19:37:41Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: Created page with &amp;quot;== Overview ==  The feeder consist of an agent, which receives notification about new/changed items using a ChangeRecorder, and a feederqueue, which processes the actual index...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
The feeder consist of an agent, which receives notification about new/changed items using a ChangeRecorder, and a feederqueue, which processes the actual indexing.&lt;br /&gt;
&lt;br /&gt;
The changes received from the ChangeRecorder result in items being added to the feederqueue, which consists itself of three queues:&lt;br /&gt;
* collectionqueue: Queue for collections to index&lt;br /&gt;
* high prio queue: item indexing queue with high priority&lt;br /&gt;
* low prio queue: item indexing queue with low priority (Indexes slower, if the high prio queue has items those take precedence)&lt;br /&gt;
&lt;br /&gt;
=== Initial indexing ===&lt;br /&gt;
On startup the indexer goes through all collections if they have already been indexed (which is established by a query to nepomuk), and if not it adds not indexed collections to the collectionqueue, which will result in the items being added to the low priority queue (the initial indexing is always considered a low priority task).&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
* We're triggering the work but are not actually doing it. All the hard work is done in virtuosos, so if we throw to much work at it, it either goes crazy or is just busy for a pretty long time, therefore we work with timeouts between indexing items, and try this way to not overload virtuoso.&lt;br /&gt;
* We don't get any priority for notifications. It's generally speaking the same if you edit a note (which should be indexed instantly because applications may rely on that data) or if you add an email account with 300'000 mails (for which we may take our time).&lt;br /&gt;
* The code is without unittests. Due to the use of async akonadi and nepomuk calls throughout the code, all those async calls would need to be wrapped to allow slipping mock objects which could be used to test the indexing.&lt;br /&gt;
&lt;br /&gt;
== Honoring power consumption and CPU usage ==&lt;br /&gt;
Currently we have the idledetection provided by KIdleTime already in place, we don't honor the powersource though, as well as we don't avoid the indexing while watching a movie or so.&lt;br /&gt;
&lt;br /&gt;
== Avoiding unnecessary indexing ==&lt;br /&gt;
We're already filtering some changes which don't affect the indexed data and I'm not sure if there is much more we can do in that respect.&lt;br /&gt;
It might be worthwile though to optimize certain spcial cases such as mass flag changes (\seen on email). Since there is only very little data changing for many items, this could affect the performance quite a bit if there is a way store this information more efficiently.&lt;br /&gt;
&lt;br /&gt;
== Querying ==&lt;br /&gt;
Queries are used to check whether a collection/item needs to be (re-)indexed after getting i.e. a notification for an item (so it ends up in the indexing queue). For instance, all collections are re-queried on every startup if they have already been indexed (for the initial indexing). In an ideal world, that re-querying would of course not be necessary as the change-recorder would allow us to be notified of each and every change that happens to the akonadi store, and we can index accordingly, however, we used to loose updates in the feeder itself, some items fail to be indexed, or some other unforseen problem can lead to unindexed items in indexed collections meaning they will never ever get indexed (unless modfied again). The only reasonable way to fix this IMO is to requery ALL items from time to time and index what's missing.&lt;br /&gt;
&lt;br /&gt;
As a nice side-effect that would also allow us to be a bit sloppier with the received notifications as it can be quite a PITA to make sure none of those notifications are lost and all get processed eventually. Especially when the feeder process can be killed, indexing can be turned off (and meanwhile notificaitons pile up indefinitely), the computer can just crash...&lt;br /&gt;
&lt;br /&gt;
So re-querying really seems a more sustainable approach. The problem is however the amount of time it takes to query each item one by one.&lt;br /&gt;
&lt;br /&gt;
Only checking ~9000 emails whether they have already been indexed takes here around 370s (that's 40ms per mail). If you think of email collections of up to 1'000'000 mails that's more than 41100s (~11h). Which means IMO that we either need to get performance improvements in the order of 10 or we need to prioritize some collections (such as non-mail and for mail inbox only etc.). I do think that it should be in the realm of the achievable to query for ~1000000 items within a couple of minutes, so we can execute this as regular maintenance task. We might have to change our strategy a bit though.&lt;br /&gt;
&lt;br /&gt;
E.g. we could query for lists of items (once in nepomuk and once in akonadi), comparing them would already give us a list of missing items.&lt;br /&gt;
With that we could also save use afterwards one query per item to check if it's already indexed (we know it isn't). &lt;br /&gt;
&lt;br /&gt;
Should querying nepomuk indeed show to be that slow due to its internal database structure, we could still work with an akonadi attribute (I'd like to avoid that if possible though).&lt;br /&gt;
&lt;br /&gt;
Note that repeatedly querying for the same item results in queries being completed in &amp;lt;2ms due to the virtuoso internal caching.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
Indexing is fairly slow as kdepim-runtime/agents/nepomukfeeder/test/performancetest.cpp shows. The simplest mail possible takes already ~0.5s to index on my machine, I don't know however where most of that time is spent.&lt;br /&gt;
&lt;br /&gt;
Another problem are i.e. mails with several Cc email addresses. I can i.e. index up to ~12 Cc mail without problem (and it takes maybe ~0.7s), but as soon as I go above this the indexing takes like ~10s and then virtuoso goes crazy.&lt;br /&gt;
&lt;br /&gt;
With an even larger number of CC mailaddresses viruoso just bails out with a bufferoverflow because one of the generated queries is just too large.&lt;br /&gt;
&lt;br /&gt;
The middle case is of course the most dangerous as it results in viruoso not doing any work anymore while burning the cpu until it's killed.&lt;br /&gt;
&lt;br /&gt;
The whole feeder is designed for batch processing with the original idea that this would improve the performance greatly, currently we're processing batches of 1 though to not trigger the above problem. If we have more efficient querying which works on batches of items, and the caching which could potentially greatly reduce the size of the stored SimpleResourceGraphs, it may start to make sense to work on batches of items.&lt;br /&gt;
&lt;br /&gt;
=== Caching for Batch indexing ===&lt;br /&gt;
As Vishesh suggested the caching could give a serious performance boost when indexing lots of similar items (such as a mailinglist).&lt;br /&gt;
&lt;br /&gt;
=== Dealing with large batches of new/changed items ===&lt;br /&gt;
If you're i.e. adding a new email account, that results in all 300'000 emails being added as new task to the indexing queue. Currently those end up in the high priority queue, but they should really be treated just as the initial indexing. One way would be to move them to the lowPrio queue, but I'd prefer just skipping them and letting the maintenance task pick them up. The challenge is to distinguish between items which are part of new collections and regular changes which may happen at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Other indexing strategies ===&lt;br /&gt;
Another strategy to speed the initial indexing up could be to first index i.e. subject only, and in a second round go through all remaining stuff such as text content and attachments. With the current indexing and quering performance I doubt it makes sense to work on this though.&lt;br /&gt;
&lt;br /&gt;
== Other issues ==&lt;br /&gt;
* Maildir with fileindexer could produce duplicates:&lt;br /&gt;
If the fileindexer indexes the same items that could lead to duplicates when searching for fulltext. Not sure if they're indexed and the problem is resolved for searching due to the AkonadiObject type used in the feeder.&lt;br /&gt;
&lt;br /&gt;
* Maildir indexing probably doesn't work because we use cacheOnly (to not download disconnected IMAP stuff), but maildir is never in the cache.&lt;br /&gt;
I have never tested it, but this would leadt to maildir resources (and probably others as well), to never be indexed due to the failing ItemFetchJob.&lt;br /&gt;
&lt;br /&gt;
* We can't remove resources first as otherwise relations (i.e. to a topic) are lost (which are subresources of the resource):&lt;br /&gt;
According to vishesh it would be performance-wise to not use the OverwriteProperties flag, and instead fully remove the resource and index it freshly. The problem is that removeDataByApplication, when using the RemoveSubresources flag, removes also the created PIMO representation (correctly so), and thus also all relations (e.g. a relation to a topic), which makes the indexed resource unusable from applications (or at least vastly less useful).&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
I conducted my tests on a T420s with an Intel i7-2640M processor and an SSD disk, so performance may be worse on other systems.&lt;br /&gt;
&lt;br /&gt;
== Measurements ==&lt;br /&gt;
In the order of priority:&lt;br /&gt;
&lt;br /&gt;
* Improve query performance:&lt;br /&gt;
If we're faster with querying we can tackle several problems at the same time. The normal indexing is simply faster, and it's prerequisite so the following measurements work well.&lt;br /&gt;
* Implement initial indexing as recurring maintenance task:&lt;br /&gt;
By implementing the initial indexing as recurring maintenance task, we no longer have to store all notifications, and can simply skip large batches of added items (as they will be picked up eventually). This means we can disable the ChangeRecorder completely while the indexer is turned off (no huge changefiles, as well as no outdated notifications anymore). So overall it would simplify the whole process greatly and fix a couple of nasty problems.&lt;br /&gt;
For this one it's especially important to have decent query performance as we will repeatedly query all items existing, so something like a per collection mass query would make sense I think.&lt;br /&gt;
&lt;br /&gt;
The only problem with the recurring maintenance task are items which fail to be indexed and will repeatedly tried if not blocked somehow (i.e. by an attribute).&lt;br /&gt;
&lt;br /&gt;
* Either fix nepomuk/virtuoso or block indexing of items which we know can fail (lots of To:/Cc: emails for instance)&lt;br /&gt;
* Honor powersource&lt;br /&gt;
* Caching for Batch indexing (at least for mail)&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan</id>
		<title>Schedules/KDE4/4.10 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan"/>
				<updated>2012-10-24T16:43:10Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: /* kdepim */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.10 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.10 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.9 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*todo =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureInProgress|QML Containments|Making it possible to do full-featured containments in QML|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|nepomuk-indexer|New Nepomuk Indexer|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukbakcup|Nepomuk Backup rewritten from scratch|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukcleaner|An application to port/clean invalid/legacy data in Nepomuk|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|ksmserver|Merge the new qml based screen locker|mart@kde.org|Marco Martin}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Lanczos Filter broken after screen size changes ({{bug |296065}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|GHNS support for KWin Scripts ({{bug |296774}}, Review 104877)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|KConf Update Script for KWin 4.9 ({{bug |296775}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for scripted KWin Effects on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297634}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for KWin Scripts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297635}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|GHNS support for Window Switching Layouts ({{bug |297636}}, Review 104894)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for Window Switcher Layouts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297637}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Update Documentation for Window Switcher Layouts ({{bug |297638}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|ThumbnailItem allows upscaling of Windows ({{bug |297864}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Increase ABI version for KDecorations ({{bug |299140}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureDone|plasma-wallpapers|Color wallpaper: add listview to display thumbnails for background mode|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Notifications applet to QML|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureInProgress|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureDone|System Tray|System tray with interface in QML|dmitry.ashkadov@gmail.com|Dmitry Ashkadov}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|systemsettings|Keyboard layout preview|amourphious1992@gmail.com|Shivam Makkar}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex specification|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Partial port to xcb|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|New launch feedback effect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|print-manager|New Print manager KCM and applet (plasmoid) replacement, using C++  |dantti12@gmail.com|Daniel Nicoletti}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Support for Python plugins|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Advanced gid(1) plugin using both ID files and etags|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|As-you-type search for the search plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|Session name API for plugins + automatic ctags database naming|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Kate|Add optional document &amp;quot;minimap&amp;quot; to the Symbols view plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Kate|Macro support|kdedevel@etothepiplusone.com|Simon St James}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Rocs|Journal files for projects.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Revisit graph export/import functionality to fully support: TGF, DOT, GML, GraphML|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Main Window UI Reorganization|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Edit Menu|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Code Editor Configuration Dialog|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|KTouch|Ship ktouch/next|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Smart resizing of training screen with aligned vertical lines|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Prominent hint during training if the user makes repeatedly errors|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Show course descriptions in course selector|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Show a message when keyboard layout visualizion isn't available due missing data|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|Analitza|New plotting framework|percy.camilo.ta@gmail.com|Percy Camilo Triveño Aucahuasi}}&lt;br /&gt;
{{FeatureDone|KAlgebra|Splitted the QML Components from KAlgebraMobile|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|KAlgebra|New plotting plasmoid graphs, in QtQuick|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureInProgress|Pairs|Pairs Theme editor|marco.calignano@gmail.com|Marco Calignano}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkdegames|[http://community.kde.org/KDE_Games/API_cleanup Major cleanup and rewrite] (done, except for the new highscore classes)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''Release team:''' please link to the [[Projects/Games/Porting_to_libkdegames_v5|porting instructions]]  for third-party developers|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Use KGameRenderer and QGraphicsView for all graphics: the gameplay is the same as before.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Remove the status bar. All scores and status messages are in the viewport now.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Allow the displayed speed of moves to be adjusted.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Animate multi-stage moves, to make it easier for a human player to follow their progress.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Show multi-stage moves in an order that is easier to follow.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Validate the loading of saved games and report errors.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Rewrite the main AI class and make it use a true Minimax method.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Provide a choice of two AI styles, Kepler and Newton, with the possibility to add more.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add settings to choose computer player, AI style and skill level for either or both of players 1 and 2.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add board sizes 3x3 and 4x4, for simplified play.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KSudoku|Add a simple Print facility for KSudoku puzzles.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
{{FeatureInProgress|okular|Tiled rendering|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|Juk|Add lyrics view|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
{{FeatureInProgress|ComicStrip|Replace with QML version|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|Calculator|Replace with QML version|luizromario@gmail.com|Luiz Romário Santana Rios}}&lt;br /&gt;
{{FeatureDone|QML Wallpapers|Make it possible to have animated wallpapers written in QtQuick technologies.|aleixpol@blue-systems.com|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|Dictionary KRunner|Look up words in the dictionary by typing in 'define {word}' in krunner.|Jason@zx2c4.com|Jason A. Donenfeld}}&lt;br /&gt;
{{FeatureInProgress|Calculator|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/PIM/Akonadi/Multi-Instance</id>
		<title>Projects/PIM/Akonadi/Multi-Instance</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/PIM/Akonadi/Multi-Instance"/>
				<updated>2012-07-13T07:42:59Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: /* Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Akonadi Multi-Instance Setup ==&lt;br /&gt;
&lt;br /&gt;
The multi-instance akonadi setup allows to run multiple akonadi-servers in parallel, using the same posix-user. DBus service names are postfixed with an instance identifier, so multiple instances can run on the same DBus.&lt;br /&gt;
Also all relevant configuration files/direcories are either postfixed or put in a separate directory, to avoid any clashes, making it safe to run multiple instances in parallel.&lt;br /&gt;
&lt;br /&gt;
The behavior of a normal akonadi instance is not changed.&lt;br /&gt;
&lt;br /&gt;
To run multiple akonadi instances in parallel it is required to assign to each instance a unique identifier using:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
akonadictl --instance IDENTIFIER start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An application will the connect to a server depending on the AKONADI_INSTANCE environment variable (set to IDENTIFIER).&lt;br /&gt;
&lt;br /&gt;
You can run a normal akonadi instance (without --instance) in parallel with multi-instance akonadi instances.&lt;br /&gt;
&lt;br /&gt;
Each instance will run it's own mysql server.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
start instance:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export AKONADI_DISABLE_AGENT_AUTOSTART&lt;br /&gt;
akonadictl --instance IDENTIFIER start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
connect akonadiconsole:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export AKONADI_INSTANCE=IDENTIFIER&lt;br /&gt;
akonadiconsole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
stop instance:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
akonadictl --instance IDENTIFIER stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Directories ===&lt;br /&gt;
The multi-instance setup puts it's files in the following directories:&lt;br /&gt;
* .config/akonadi/instance/$IDENTIFIER&lt;br /&gt;
* .local/share/akonadi/instance/$IDENTIFIER&lt;br /&gt;
* .kde4/share/config/akonadi/akonadi_imap_resource_0_$IDENTIFIERrc&lt;br /&gt;
&lt;br /&gt;
To cleanup an instance, just delete all the directories and configs above.&lt;br /&gt;
&lt;br /&gt;
=== Akonadiconsole ===&lt;br /&gt;
&lt;br /&gt;
To connect to an instance using akonadiconsole export the following environment variable first (with inst1 being the instance identifier):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export AKONADI_INSTANCE=inst1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A couple of features, such as the debugging facilities or the mysql console do not work, but managing agents and browsing the collection tree should work just fine.&lt;br /&gt;
Note that you might get an error message on startup that your mysql database socket couldn't be found, this is safe to ignore.&lt;br /&gt;
&lt;br /&gt;
You can connect to the mysql instance directly using the mysql console (standalone, not the akonadiconsole one):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql --protocol=SOCKET --socket=.local/share/akonadi/instance/inst1/socket-myhost2/mysql.socket&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Missing Features ===&lt;br /&gt;
* Debugging facilities as mentioned above&lt;br /&gt;
* Firstrun: Is disabled in servermanager.cpp, otherwise the firstrun code will crash (an assert prevents running the code since it is unsafe so far).&lt;br /&gt;
* It is not safe to run a multi-instance setup without exporting AKONADI_DISABLE_AGENT_AUTOSTART first, because the default setup desktop files contain configs with hardcoded paths, which would result in every akonadi instance creating a resource for the same default path.&lt;br /&gt;
&lt;br /&gt;
=== Development ===&lt;br /&gt;
In order to make akonadi code work in the multi-instance setup all unique identifiers need to be made distinguishable between instances. That includes most prominently:&lt;br /&gt;
* dbus service names&lt;br /&gt;
* configfile names&lt;br /&gt;
* default directory paths&lt;br /&gt;
&lt;br /&gt;
You only need to change these, if you add/use dbus interfaces, or access configfiles directly. Most things have already been taken care of using the agentbase/resourcebase classes.&lt;br /&gt;
&lt;br /&gt;
* kdepimlibs/akonadi/servermanager.h contains a couple of helper functions to help with that.&lt;br /&gt;
&lt;br /&gt;
Note that it is not possible to change the dbus names or the prefixed directories just in kdepimlibs, as the akonadi-server makes assumptions on where to find the directories and dbus-services.&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/PIM/Akonadi/Multi-Instance</id>
		<title>Projects/PIM/Akonadi/Multi-Instance</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/PIM/Akonadi/Multi-Instance"/>
				<updated>2012-07-11T08:41:45Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Akonadi Multi-Instance Setup ==&lt;br /&gt;
&lt;br /&gt;
The multi-instance akonadi setup allows to run multiple akonadi-servers in parallel, using the same posix-user. DBus service names are postfixed with an instance identifier, so multiple instances can run on the same DBus.&lt;br /&gt;
Also all relevant configuration files/direcories are either postfixed or put in a separate directory, to avoid any clashes, making it safe to run multiple instances in parallel.&lt;br /&gt;
&lt;br /&gt;
The behavior of a normal akonadi instance is not changed.&lt;br /&gt;
&lt;br /&gt;
To run multiple akonadi instances in parallel it is required to assign to each instance a unique identifier using:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
akonadictl --instance IDENTIFIER start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An application will the connect to a server depending on the AKONADI_INSTANCE environment variable (set to IDENTIFIER).&lt;br /&gt;
&lt;br /&gt;
You can run a normal akonadi instance (without --instance) in parallel with multi-instance akonadi instances.&lt;br /&gt;
&lt;br /&gt;
Each instance will run it's own mysql server.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
start instance:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export AKONADI_DISABLE_AGENT_AUTOSTART&lt;br /&gt;
akonadictl --instance IDENTIFIER start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
connect akonadiconsole:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export AKONADI_INSTANCE=IDENTIFIER&lt;br /&gt;
akonadiconsole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
stop instance:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
akonadictl --instance IDENTIFIER stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Directories ===&lt;br /&gt;
The multi-instance setup puts it's files in the following directories:&lt;br /&gt;
* .config/akonadi/instance/$IDENTIFIER&lt;br /&gt;
* .local/share/akonadi/instance/$IDENTIFIER&lt;br /&gt;
* .kde4/share/config/akonadi/akonadi_imap_resource_0_$IDENTIFIERrc&lt;br /&gt;
&lt;br /&gt;
To cleanup an instance, just delete all the directories and configs above.&lt;br /&gt;
&lt;br /&gt;
=== Akonadiconsole ===&lt;br /&gt;
&lt;br /&gt;
To connect to an instance using akonadiconsole export the following environment variable first (with inst1 being the instance identifier):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export AKONADI_INSTANCE=inst1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A couple of features, such as the debugging facilities or the mysql console do not work, but managing agents and browsing the collection tree should work just fine.&lt;br /&gt;
Note that you might get an error message on startup that your mysql database socket couldn't be found, this is safe to ignore.&lt;br /&gt;
&lt;br /&gt;
You can connect to the mysql instance directly using the mysql console (standalone, not the akonadiconsole one):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql --protocol=SOCKET --socket=.local/share/akonadi/instance/inst1/socket-myhost2/mysql.socket&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Missing Features ===&lt;br /&gt;
* Debugging facilities as mentioned above&lt;br /&gt;
* Firstrun: Is disabled in servermanager.cpp, otherwise the firstrun code will crash (an assert prevents running the code since it is unsafe so far).&lt;br /&gt;
* It is not safe to run a multi-instance setup without exporting AKONADI_DISABLE_AGENT_AUTOSTART first, because the default setup desktop files contain configs with hardcoded paths, which would result in every akonadi instance creating a resource for the same default path.&lt;br /&gt;
&lt;br /&gt;
=== Development ===&lt;br /&gt;
In order to make akonadi code work in the multi-instance setup all unique identifiers need to be made distinguishable between instances. That includes most prominently:&lt;br /&gt;
* dbus service names&lt;br /&gt;
* configfile names&lt;br /&gt;
* default directory paths&lt;br /&gt;
&lt;br /&gt;
You only need to change these, if you add/use dbus interfaces, or access configfiles directly. Most things have already been taken care of using the agentbase/resourcebase classes.&lt;br /&gt;
&lt;br /&gt;
* kdepimlibs/akonad/servermanager.h contains a couple of helper functions to help with that.&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/PIM/Akonadi/Multi-Instance</id>
		<title>Projects/PIM/Akonadi/Multi-Instance</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/PIM/Akonadi/Multi-Instance"/>
				<updated>2012-07-10T16:22:12Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Akonadi Multi-Instance Setup ==&lt;br /&gt;
&lt;br /&gt;
The multi-instance akonadi setup allows to run multiple akonadi-servers in parallel, using the same posix-user. DBus service names are postfixed with an instance identifier, so multiple instances can run on the same DBus.&lt;br /&gt;
Also all relevant configuration files/direcories are either postfixed or put in a separate directory, to avoid any clashes, making it safe to run multiple instances in parallel.&lt;br /&gt;
&lt;br /&gt;
The behavior of a normal akonadi instance is not changed.&lt;br /&gt;
&lt;br /&gt;
To run multiple akonadi instances in parallel it is required to assign to each instance a unique identifier using:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
akonadictl --identifier IDENTIFIER start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An application will the connect to a server depending on the AKONADI_INSTANCE environment variable (set to IDENTIFIER).&lt;br /&gt;
&lt;br /&gt;
You can run a normal akonadi instance (without --identifier) in parallel with multi-instance akonadi instances.&lt;br /&gt;
&lt;br /&gt;
Each instance will run it's own mysql server.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
start instance:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export AKONADI_DISABLE_AGENT_AUTOSTART&lt;br /&gt;
akonadictl --identifier IDENTIFIER start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
connect akonadiconsole:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export AKONADI_INSTANCE=IDENTIFIER&lt;br /&gt;
akonadiconsole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
stop instance:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
akonadictl --identifier IDENTIFIER stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Directories ===&lt;br /&gt;
The multi-instance setup puts it's files in the following directories:&lt;br /&gt;
* .config/akonadi/instance/$IDENTIFIER&lt;br /&gt;
* .local/share/akonadi/instance/$IDENTIFIER&lt;br /&gt;
* .kde4/share/config/akonadi/akonadi_imap_resource_0_$IDENTIFIERrc&lt;br /&gt;
&lt;br /&gt;
To cleanup an instance, just delete all the directories and configs above.&lt;br /&gt;
&lt;br /&gt;
=== Akonadiconsole ===&lt;br /&gt;
&lt;br /&gt;
To connect to an instance using akonadiconsole export the following environment variable first (with inst1 being the instance identifier):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export AKONADI_INSTANCE=inst1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A couple of features, such as the debugging facilities or the mysql console do not work, but managing agents and browsing the collection tree should work just fine.&lt;br /&gt;
Note that you might get an error message on startup that your mysql database socket couldn't be found, this is safe to ignore.&lt;br /&gt;
&lt;br /&gt;
You can connect to the mysql instance directly using the mysql console (standalone, not the akonadiconsole one):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql --protocol=SOCKET --socket=.local/share/akonadi/instance/inst1/socket-myhost2/mysql.socket&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Missing Features ===&lt;br /&gt;
* Debugging facilities as mentioned above&lt;br /&gt;
* Firstrun: Is disabled in servermanager.cpp, otherwise the firstrun code will crash (an assert prevents running the code since it is unsafe so far).&lt;br /&gt;
* It is not safe to run a multi-instance setup without exporting AKONADI_DISABLE_AGENT_AUTOSTART first, because the default setup desktop files contain configs with hardcoded paths, which would result in every akonadi instance creating a resource for the same default path.&lt;br /&gt;
&lt;br /&gt;
=== Development ===&lt;br /&gt;
In order to make akonadi code work in the multi-instance setup all unique identifiers need to be made distinguishable between instances. That includes most prominently:&lt;br /&gt;
* dbus service names&lt;br /&gt;
* configfile names&lt;br /&gt;
* default directory paths&lt;br /&gt;
&lt;br /&gt;
You only need to change these, if you add/use dbus interfaces, or access configfiles directly. Most things have already been taken care of using the agentbase/resourcebase classes.&lt;br /&gt;
&lt;br /&gt;
* kdepimlibs/akonad/servermanager.h contains a couple of helper functions to help with that.&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/PIM/Akonadi/Multi-Instance</id>
		<title>Projects/PIM/Akonadi/Multi-Instance</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/PIM/Akonadi/Multi-Instance"/>
				<updated>2012-07-10T16:05:17Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: /* Missing Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Akonadi Multi-Instance Setup ==&lt;br /&gt;
&lt;br /&gt;
The multi-instance akonadi setup allows to run multiple akonadi-servers in parallel, using the same posix-user. DBus service names are postfixed with an instance identifier, so multiple instances can run on the same DBus.&lt;br /&gt;
Also all relevant configuration files/direcories are either postfixed or put in a separate directory, to avoid any clashes, making it safe to run multiple instances in parallel.&lt;br /&gt;
&lt;br /&gt;
The behavior of a normal akonadi instance is not changed.&lt;br /&gt;
&lt;br /&gt;
To run multiple akonadi instances in parallel it is required to assign to each instance a unique identifier using:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
akonadictl --identifier IDENTIFIER start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can run a normal akonadi instance (without --identifier) in parallel with multi-instance akonadi instances.&lt;br /&gt;
&lt;br /&gt;
Each instance will run it's own mysql server.&lt;br /&gt;
&lt;br /&gt;
=== Directories ===&lt;br /&gt;
The multi-instance setup puts it's files in the following directories:&lt;br /&gt;
* .config/akonadi/instance/$IDENTIFIER&lt;br /&gt;
* .local/share/akonadi/instance/$IDENTIFIER&lt;br /&gt;
* .kde4/share/config/akonadi/akonadi_imap_resource_0_$IDENTIFIERrc&lt;br /&gt;
&lt;br /&gt;
To cleanup an instance, just delete all the directories and configs above.&lt;br /&gt;
&lt;br /&gt;
=== Akonadiconsole ===&lt;br /&gt;
&lt;br /&gt;
To connect to an instance using akonadiconsole export the following environment variable first (with inst1 being the instance identifier):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export AKONADI_INSTANCE=inst1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A couple of features, such as the debugging facilities or the mysql console do not work, but managing agents and browsing the collection tree should work just fine.&lt;br /&gt;
Note that you might get an error message on startup that your mysql database socket couldn't be found, this is safe to ignore.&lt;br /&gt;
&lt;br /&gt;
You can connect to the mysql instance directly using the mysql console (standalone, not the akonadiconsole one):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql --protocol=SOCKET --socket=.local/share/akonadi/instance/inst1/socket-myhost2/mysql.socket&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Missing Features ===&lt;br /&gt;
* Debugging facilities as mentioned above&lt;br /&gt;
* Firstrun: Is disabled in servermanager.cpp, otherwise the firstrun code will crash (an assert prevents running the code since it is unsafe so far).&lt;br /&gt;
* It is not safe to run a multi-instance setup without exporting AKONADI_DISABLE_AGENT_AUTOSTART first, because the default setup desktop files contain configs with hardcoded paths, which would result in every akonadi instance creating a resource for the same default path.&lt;br /&gt;
&lt;br /&gt;
=== Development ===&lt;br /&gt;
In order to make akonadi code work in the multi-instance setup all unique identifiers need to be made distinguishable between instances. That includes most prominently:&lt;br /&gt;
* dbus service names&lt;br /&gt;
* configfile names&lt;br /&gt;
* default directory paths&lt;br /&gt;
&lt;br /&gt;
You only need to change these, if you add/use dbus interfaces, or access configfiles directly. Most things have already been taken care of using the agentbase/resourcebase classes.&lt;br /&gt;
&lt;br /&gt;
* kdepimlibs/akonad/servermanager.h contains a couple of helper functions to help with that.&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/PIM/Akonadi/Multi-Instance</id>
		<title>Projects/PIM/Akonadi/Multi-Instance</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/PIM/Akonadi/Multi-Instance"/>
				<updated>2012-07-10T15:55:41Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: Created page with &amp;quot;== Akonadi Multi-Instance Setup ==  The multi-instance akonadi setup allows to run multiple akonadi-servers in parallel, using the same posix-user. DBus service names are postfix...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Akonadi Multi-Instance Setup ==&lt;br /&gt;
&lt;br /&gt;
The multi-instance akonadi setup allows to run multiple akonadi-servers in parallel, using the same posix-user. DBus service names are postfixed with an instance identifier, so multiple instances can run on the same DBus.&lt;br /&gt;
Also all relevant configuration files/direcories are either postfixed or put in a separate directory, to avoid any clashes, making it safe to run multiple instances in parallel.&lt;br /&gt;
&lt;br /&gt;
The behavior of a normal akonadi instance is not changed.&lt;br /&gt;
&lt;br /&gt;
To run multiple akonadi instances in parallel it is required to assign to each instance a unique identifier using:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
akonadictl --identifier IDENTIFIER start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can run a normal akonadi instance (without --identifier) in parallel with multi-instance akonadi instances.&lt;br /&gt;
&lt;br /&gt;
Each instance will run it's own mysql server.&lt;br /&gt;
&lt;br /&gt;
=== Directories ===&lt;br /&gt;
The multi-instance setup puts it's files in the following directories:&lt;br /&gt;
* .config/akonadi/instance/$IDENTIFIER&lt;br /&gt;
* .local/share/akonadi/instance/$IDENTIFIER&lt;br /&gt;
* .kde4/share/config/akonadi/akonadi_imap_resource_0_$IDENTIFIERrc&lt;br /&gt;
&lt;br /&gt;
To cleanup an instance, just delete all the directories and configs above.&lt;br /&gt;
&lt;br /&gt;
=== Akonadiconsole ===&lt;br /&gt;
&lt;br /&gt;
To connect to an instance using akonadiconsole export the following environment variable first (with inst1 being the instance identifier):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export AKONADI_INSTANCE=inst1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A couple of features, such as the debugging facilities or the mysql console do not work, but managing agents and browsing the collection tree should work just fine.&lt;br /&gt;
Note that you might get an error message on startup that your mysql database socket couldn't be found, this is safe to ignore.&lt;br /&gt;
&lt;br /&gt;
You can connect to the mysql instance directly using the mysql console (standalone, not the akonadiconsole one):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql --protocol=SOCKET --socket=.local/share/akonadi/instance/inst1/socket-myhost2/mysql.socket&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Missing Features ===&lt;br /&gt;
* Debugging facilities as mentioned above&lt;br /&gt;
* Firstrun: This must be disabled by exporting AKONADI_DISABLE_AGENT_AUTOSTART, otherwise the firstrun code will crash (an assert prevents running the code since it is unsafe so far).&lt;br /&gt;
&lt;br /&gt;
=== Development ===&lt;br /&gt;
In order to make akonadi code work in the multi-instance setup all unique identifiers need to be made distinguishable between instances. That includes most prominently:&lt;br /&gt;
* dbus service names&lt;br /&gt;
* configfile names&lt;br /&gt;
* default directory paths&lt;br /&gt;
&lt;br /&gt;
You only need to change these, if you add/use dbus interfaces, or access configfiles directly. Most things have already been taken care of using the agentbase/resourcebase classes.&lt;br /&gt;
&lt;br /&gt;
* kdepimlibs/akonad/servermanager.h contains a couple of helper functions to help with that.&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/PIM/Akonadi</id>
		<title>Projects/PIM/Akonadi</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/PIM/Akonadi"/>
				<updated>2012-07-10T15:27:56Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Akonadi TODO ==&lt;br /&gt;
The following list contains the things which need to be done for Akonadi.&lt;br /&gt;
&lt;br /&gt;
Note: The person noted in the &amp;quot;Contact&amp;quot; column is not necessarily the one implementing that feature, but the one who can tell you what to do and how to help, i.e. you can also contribute to those tasks ;-)&lt;br /&gt;
&lt;br /&gt;
There is also a more detailed page about bugs and missing features of things that are currently ported [[Projects/PIM/Akonadi/PortingStatus|here]].&lt;br /&gt;
&lt;br /&gt;
=== Core ===&lt;br /&gt;
&lt;br /&gt;
==== KDE 4.1 / Akonadi 1.0 ====&lt;br /&gt;
&lt;br /&gt;
Urgent tasks that need to be finished for the KDE 4.1 release ('''May 19th'''):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Item streaming in ItemSync/ResourceBase|As discussed in Osnabrueck|Tom/Volker}}&lt;br /&gt;
{{FeatureDone|Payload serialization format versioning|see below&lt;br /&gt;
tokoe@kde.org|Tobias}}&lt;br /&gt;
{{FeatureDone|API for additional item parts|As discussed in Osnabruck|Volker/Tobias}}&lt;br /&gt;
{{FeatureDone|Infrastructure for showing additional dialogs from agents/resources|As discussed in Osnabrueck|Tom}}&lt;br /&gt;
{{FeatureDone|Allow to limit ItemFetchJob to current cache content|Prevents search index feeder agents from downloading all remote data|vkrause@kde.org|Volker}}&lt;br /&gt;
{{FeatureDone|Fix API for item/collection modifications|See Osnabrueck meeting notes for details|vkrause@kde.org|Volker}}&lt;br /&gt;
{{FeatureDone|Plugin Versioning|For serializer plugins, also check using Qt plugin stuff instead of the libkdepim plugin framework|tokoe@kde.org|Tobias}}&lt;br /&gt;
{{FeatureDone|Tray app|small app to control the server and have a something that can report errors|tomalbers@kde.nl|Toma}}&lt;br /&gt;
{{FeatureDone|Backup support|Dump &amp;amp; Restore database contents, also useful when upgrading to a newer database version|tomalbers@kde.nl}}&lt;br /&gt;
{{FeatureDone|Akonadi Artwork|Icon for the tray app|tomalbers@kde.nl|Toma}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KDE 4.2 / Akonadi 1.1 ====&lt;br /&gt;
&lt;br /&gt;
That's the stuff we want to have in 4.2, very roughly ordered by priority. Releases are scheduled for early January 2009.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Server error reporting|Helpful error message when the server cannot be started or if there is some other problem communicating with it.|vkrause@kde.org|Volker}}&lt;br /&gt;
{{FeatureDone|KResource migration tool|For KABC and KCal resources, setting up Akonadi &amp;lt;-&amp;gt; KResource bridges where needed|Volker}}&lt;br /&gt;
{{FeatureDone|KResource bridges|Basically finished, needs more testing|Kevin}}&lt;br /&gt;
{{FeatureDone|Distribution Lists|Serializer Plugin and resource support|Tobias,Kevin}}&lt;br /&gt;
{{FeatureDone|Complete iCal resource|error handling, robustness, legacy formats, file montitoring|Volker}}&lt;br /&gt;
{{FeatureDone|Complete vCard resource|same as iCal + binary legacy format|Bertjan}}&lt;br /&gt;
{{FeatureDone|Item size|Needed by Mailody|toma@kde.org}}&lt;br /&gt;
{{FeatureDone|LINK/UNLINK commands|Managing item references in virtual collections|vkrause@kde.org|Volker}}&lt;br /&gt;
{{FeatureDone|Akonadi Testrunner|Running tests in a self contained Akonadi setup|igor_trindade@yahoo.com.br|Igor}}&lt;br /&gt;
{{FeatureDone|Remote file support for iCal/vCard resources|Replaces net/remote KRes resources|Bertjan}}&lt;br /&gt;
{{FeatureDone|Solid integration|Switch online/offline state in ResourceBase automatically|Bertjan}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KDE 4.3 / Akonadi 1.2 ====&lt;br /&gt;
&lt;br /&gt;
Stuff that went into KDE 4.3 and Akonadi server 1.2.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Fix unit tests|Make unittests work without destroying the production database|Igor/Volker}}&lt;br /&gt;
{{FeatureDone|Filesystem Backend|Store content data in files instead of the database, transfer filehandles instead of data to the client|Andras}}&lt;br /&gt;
{{FeatureDone|IMAP resource||Kevin}}&lt;br /&gt;
{{FeatureDone|Kolab proxy resource||Andras}}&lt;br /&gt;
{{FeatureDone|RID based operations|Item/collection retrieval and modification based on remote identifiers|Volker}}&lt;br /&gt;
{{FeatureDone|Microblog Support|Type library, serializer plugin, identi.ca/twitter resources|Tom}}&lt;br /&gt;
{{FeatureDone|ResourceBase::collectionsRetrievalDone is missing|I'm working around by calling collectionsRetrievedIncremental() with empty collection lists|Volker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KDE 4.4 / Akonadi 1.3 ====&lt;br /&gt;
&lt;br /&gt;
The following is being worked on for KDE 4.4 and Akonadi server 1.3.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Port KAddressBook|Replace with KContactManager|Tobias}}&lt;br /&gt;
{{FeatureDone|Resource testing framework|Automated, shareable tests for resources|Igor/Volker}}&lt;br /&gt;
{{FeatureInProgress|Review change notifications|See the various discussions about shortcomings in that area|Volker,Steve}}&lt;br /&gt;
{{FeatureDone|Collection statistics for sub-trees|Provide a CollectionStatus object covering the full sub-tree in the model, allowing accumulated unread counts etc.|Kevin}}&lt;br /&gt;
{{FeatureDone|Favorite Folder Model|see current KMail|Kevin}}&lt;br /&gt;
{{FeatureDone|Batch jobs for modifying/deleting collections/items|it would be great to have jobs which perform operations on several entities in one go|Volker}}&lt;br /&gt;
{{FeatureDone|Collection streaming support in ResourceBase/CollectionSync|Similar to what is available for items already|Volker}}&lt;br /&gt;
{{FeatureDone|MBox resource||Bertjan}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Scheduled for KDE 4.5 / Akonadi 1.4 ====&lt;br /&gt;
&lt;br /&gt;
Stuff that is planned for inclusion in 4.5, partly already available in the akonadi-ports branch.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Port KOrganizer|Port from KResource to Akonadi|Frank/Sebastian}}&lt;br /&gt;
{{FeatureDone|Account creation wizard|as discussed in Berlin, see below|Volker,Laurent,Tom}}&lt;br /&gt;
{{FeatureInProgress|KMail port|KMail using Akonadi|everyone}}&lt;br /&gt;
{{FeatureInProgress|Remote Search|Delegating searches to resources, see below|Volker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Post KDE 4.5 /Akonadi 1.4 ====&lt;br /&gt;
&lt;br /&gt;
This stuff is currently not considered for 4.5 due to lack of resources. Of course it will be added nevertheless if someone implements it. The list is completely unsorted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Error reporting|Akonadi::Job basically has only one error code: Unknown|Tobias}}&lt;br /&gt;
{{FeatureInProgress|Port KNotes|File resource, serializer plugin, KNotes application, Kontact plugin|}}&lt;br /&gt;
{{FeatureTodo|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|}}&lt;br /&gt;
{{FeatureTodo|CollectionFetchJob/ItemFetchJob should be able to retrieve entities by flags/mimetype|&lt;br /&gt;
This is problematic with change notifications, as they have to know about the filtering with the \Seen flag as well.&lt;br /&gt;
This type of filtering would be possible with full Nepomuk interface though. We don't want yet another query language here. The plan is to fix the nepomuk agent and use that as semi-public interface for now.|}}&lt;br /&gt;
{{FeatureTodo|Nepomuk integration|Generic Item tag/rate/comment, etc.|Tom}}&lt;br /&gt;
{{FeatureTodo|Sync collection tree after creating setting up a resource|see AgentInstanceCreateJob|}}&lt;br /&gt;
{{FeatureTodo|Support standard commands for QUndo framework||}}&lt;br /&gt;
{{FeatureTodo|Conflict detection in resources|See Osnabrueck meeting notes for details|}}&lt;br /&gt;
{{FeatureInProgress|Action framework|see below|vkrause@kde.org|Volker}}&lt;br /&gt;
{{FeatureInProgress|Fix API docs|The libakonadi move as well as the huge API changes following it broke lots of the docs technical and content-wise, see below|Tobias}}&lt;br /&gt;
{{FeatureInProgress|Migration|Data and settings from pre-Akonadi times, see below|}}&lt;br /&gt;
{{FeatureInProgress|Extended notifications|Item change notification do not yet include their source collections (real and virtual)|}}&lt;br /&gt;
{{FeatureTodo|Alternative for Akonadi::ResourceBase|Not using the scheduler to avoid the serialization of operations, see RSS resource. (This will get very complicated. Maybe use a proxy ResourceBase for this, which is thread-pooled?)|}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Supported Types ===&lt;br /&gt;
&lt;br /&gt;
Overview on the current state of support for various types:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Serializer !! Multipart Support !! Models !! Views !! Resources !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|Email||yes||partial||MessageModel, MessageCollectionModel, threading proxy model||?||maildir, IMAP||threading agent&lt;br /&gt;
|-&lt;br /&gt;
|News||yes (1)||partial (1)||(1)||(1)||NNTP||&lt;br /&gt;
|-&lt;br /&gt;
|Contact||yes||no||ContactModel||-||vCard, facebook, KRes||&lt;br /&gt;
|-&lt;br /&gt;
|Events||yes||no||EventModel||-||iCal, KRes||&lt;br /&gt;
|-&lt;br /&gt;
|Notes||no||no||-||-||-||not started yet&lt;br /&gt;
|-&lt;br /&gt;
|Feeds||yes||no||Feeds, Items||?||OPML||GSoC in playground/pim&lt;br /&gt;
|-&lt;br /&gt;
|Bookmarks||yes||no||-||-||local bookmarks, del.icio.us||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(1) see Email&lt;br /&gt;
&lt;br /&gt;
=== Mail specific extensions ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Share mail flag code|Standard actions, standard flag enum/constants, Nepomuk interaction|}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Event/Todo/Journal specific extensions ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Todo proxy model|See KOrganizers To-Do view|Bruno?}}&lt;br /&gt;
{{FeatureDone|Subtype identification|See discussion on kde-pim mailinglist|Kevin}}&lt;br /&gt;
{{FeatureInProgress|Agenda view|KOrganizer agenda view based on Akonadi|Sergio,Kevin}}&lt;br /&gt;
{{FeatureTodo|Month view|KOrganizer month view based on Akonadi|Bruno?}}&lt;br /&gt;
{{FeatureTodo|Timeline view|KOrganizer timeline view based on Akonadi|}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources, Agents and others ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KResource Akonadi bridge|for applications using KCal or KABC|kevin.krammer@gmx.at|Kevin}}&lt;br /&gt;
{{FeatureDone|Akonadi KResource bridge|for data accessed through KCal or KABC resources|kevin.krammer@gmx.at|Kevin}}&lt;br /&gt;
{{FeatureTodo|Expire Agent||}}&lt;br /&gt;
{{FeatureDone|MBOX Resource||Bertjan}}&lt;br /&gt;
{{FeatureDone|Extend IMAP Resource||Kevin/Andras}}&lt;br /&gt;
{{FeatureInProgress|POP3 Resource||Thomas}}&lt;br /&gt;
{{FeatureInProgress|RSS Resource|in akregator_port branch ([[Projects/PIM/RSS_framework_for_Akonadi|Details]])|Frank}}&lt;br /&gt;
{{FeatureInProgress|Filter Agent||Szymon}}&lt;br /&gt;
{{FeatureTodo|Search||}}&lt;br /&gt;
{{FeatureTodo| History resource||}}&lt;br /&gt;
{{FeatureInProgress|Filter Rule GUI|Used by filters and searches|Szymon}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Resource status overview (this should list all resources existing in KDE3 or already under development for Akonadi):&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! Resource !! Retrieve Collections !! Retrieve Items !! Change Collections !! Change Items !! Configuration !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|iCal||yes (4)||yes (1) (2)||no||yes||yes||remote file support, file watching with conflict handling&lt;br /&gt;
|-&lt;br /&gt;
|vCard||yes (4)||yes (1) (2)||no||yes||yes||remote file support, file watching with conflict handling&lt;br /&gt;
|-&lt;br /&gt;
|maildir||yes (1) (4)||yes (1) (2)||?||?||yes||&lt;br /&gt;
|-&lt;br /&gt;
|mbox||no||no||no||no||no||not started yet, code exists in KMail&lt;br /&gt;
|-&lt;br /&gt;
|IMAP||yes (1) (4)?||yes (1) (2)||no||no||no||code exists in kio_imap4 and Mailody, support for extensions: quota, ACL, annotations missing, what about Kolab and Scalix?&lt;br /&gt;
|-&lt;br /&gt;
|NNTP||yes (4)||yes (2)||n/a||n/a||yes||Needs support for local collection names and collection hierarchy&lt;br /&gt;
|-&lt;br /&gt;
|Local Bookmarks||?||?||?||?||(3)||Code in akonadi/resources&lt;br /&gt;
|-&lt;br /&gt;
|OpenChange||?||?||?||?||?||Code in akonadi/resources&lt;br /&gt;
|-&lt;br /&gt;
|Facebook||?||?||?||?||?||Code in playground/pim&lt;br /&gt;
|-&lt;br /&gt;
|del.icio.us||?||?||?||yes||no||Code in playground/pim&lt;br /&gt;
|-&lt;br /&gt;
|KABC||yes(6)||yes||no||yes||yes||&lt;br /&gt;
|-&lt;br /&gt;
|KCal||yes(6)||yes||yes(7)||yes||yes||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# only full sync supported currently, need optimization&lt;br /&gt;
# does not yet honor cache policy&lt;br /&gt;
# still relies on QSettings for configuration and/or doesn't provide configuration over D-Bus&lt;br /&gt;
# does not yet provide correct access control settings&lt;br /&gt;
# only adding new items, not changing existing ones&lt;br /&gt;
# availability of child collections depend on whether the KResource plugin has subresources&lt;br /&gt;
# child collections can be added or removed if the KCal plugin can have subresources&lt;br /&gt;
&lt;br /&gt;
=== KResource Migration Status ===&lt;br /&gt;
&lt;br /&gt;
Everything without migration support is implicitly converted to use the compat bridge currently.&lt;br /&gt;
&lt;br /&gt;
[[Image:Akonadi-Kres.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== KABC migration status ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! KResource !! Feature equivalent agent !! Migration support !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|directory|| || ||vCard dir in development&lt;br /&gt;
|-&lt;br /&gt;
|file||vCard file||4.2||binary format no longer supported, migrated to compat bridge instead&lt;br /&gt;
|-&lt;br /&gt;
|groupdav||||||&lt;br /&gt;
|-&lt;br /&gt;
|groupwise||||||&lt;br /&gt;
|-&lt;br /&gt;
|kolab||||||&lt;br /&gt;
|-&lt;br /&gt;
|ldapkio||||||&lt;br /&gt;
|-&lt;br /&gt;
|net||vCard file||TODO||&lt;br /&gt;
|-&lt;br /&gt;
|scalix||||||&lt;br /&gt;
|-&lt;br /&gt;
|slox||||||&lt;br /&gt;
|-&lt;br /&gt;
|xmlrpc||||||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KCal Migration Status ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
! KResource !! Feature equivalent agent !! Migration support !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|blog||||||&lt;br /&gt;
|-&lt;br /&gt;
|bugzilla||||||&lt;br /&gt;
|-&lt;br /&gt;
|groupdav||||||&lt;br /&gt;
|-&lt;br /&gt;
|groupwise||||||&lt;br /&gt;
|-&lt;br /&gt;
|kabc (birthday)||birthdays||4.3||&lt;br /&gt;
|-&lt;br /&gt;
|kolab||||||&lt;br /&gt;
|-&lt;br /&gt;
|localdir||||||&lt;br /&gt;
|-&lt;br /&gt;
|local||iCal file||4.2||&lt;br /&gt;
|-&lt;br /&gt;
|remote||iCal file||TODO||remote supports different URLs for upload and download, the iCal file agent doesn't, is this needed at all?&lt;br /&gt;
|-&lt;br /&gt;
|featureplan||||||probably obsolete since we don't use the XML featureplan anymore&lt;br /&gt;
|-&lt;br /&gt;
|scalix||||||&lt;br /&gt;
|-&lt;br /&gt;
|slox||||||&lt;br /&gt;
|-&lt;br /&gt;
|xmlrpc||||||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Akonadi Braindump ==&lt;br /&gt;
Ideas/notes etc. on various open issues in Akonadi.&lt;br /&gt;
&lt;br /&gt;
=== Akonadi Standard Actions ===&lt;br /&gt;
&lt;br /&gt;
Idea: Have something like KStandardAction for Akonadi that not only includes the representation of the action but also its state management and the actual operations. Like libakonadi that should be splitted into a generic, type-independent part and be extensible for type-specific actions. This will enable code sharing among many applications and guarantee consistent actions everywhere.&lt;br /&gt;
&lt;br /&gt;
State management: watch selection models of a collection and/or item model.&lt;br /&gt;
&lt;br /&gt;
Use KXMLGUI for context menus in standard views to allow easy extensibility with custom actions.&lt;br /&gt;
&lt;br /&gt;
Generic actions:&lt;br /&gt;
* new collection [done]&lt;br /&gt;
* new virtual collection&lt;br /&gt;
* delete collection [done for single selection]&lt;br /&gt;
* copy collection [done]&lt;br /&gt;
* cut collection&lt;br /&gt;
* paste collection [done]&lt;br /&gt;
* synchronize collection [done for single selection]&lt;br /&gt;
* synchronize resource&lt;br /&gt;
* synchronize everything&lt;br /&gt;
* show collection properties dialog [done]&lt;br /&gt;
* delete item(s) [done]&lt;br /&gt;
* copy item(s) [done]&lt;br /&gt;
* cut item(s)&lt;br /&gt;
* paste item(s) [done]&lt;br /&gt;
* paste native data&lt;br /&gt;
* tag item(s)&lt;br /&gt;
* comment item&lt;br /&gt;
* rate item(s)&lt;br /&gt;
* configure resource&lt;br /&gt;
* add resource? (would need a type parameter, etc.)&lt;br /&gt;
* delete resource&lt;br /&gt;
* manage local subscriptions [done]&lt;br /&gt;
* move to submenu&lt;br /&gt;
* copy to submenu&lt;br /&gt;
&lt;br /&gt;
The list is definitely long enough to make this worthwhile.&lt;br /&gt;
&lt;br /&gt;
=== Collection Model / Collection View ===&lt;br /&gt;
&lt;br /&gt;
Ideas/missing features/bugs of the collection model/view:&lt;br /&gt;
&lt;br /&gt;
* Enable/disable status columns&lt;br /&gt;
* Show status after the name (see KMail)&lt;br /&gt;
* &amp;lt;s&amp;gt;Size column&amp;lt;/s&amp;gt;&lt;br /&gt;
* Save/restore layout&lt;br /&gt;
* &amp;lt;s&amp;gt;Custom collection icons (see KMail, also needed for resource defined special folders (eg. Inbox)&amp;lt;/s&amp;gt;&lt;br /&gt;
* Status tooltips (see KMail in 3.5.9) [still missing quota info]&lt;br /&gt;
* Quick search&lt;br /&gt;
* &amp;lt;s&amp;gt;Favorite folder view as proxy model on top of the normal collection model (FlatCollectionProxyModel might be helpful for there)&amp;lt;/s&amp;gt;&lt;br /&gt;
* Accumulated statistics (unread, total, size)&lt;br /&gt;
* Fix dnd: move/copy/cancel menu always shows up and never has any effect&lt;br /&gt;
&lt;br /&gt;
=== Compatibility ===&lt;br /&gt;
&lt;br /&gt;
Notes on how to keep long-term protocol, source and binary compatibility.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;Detect server version in Akonadi::Session, might be useful in case of protocol extensions/changes&amp;lt;/s&amp;gt;&lt;br /&gt;
* What about database server version updates?&lt;br /&gt;
* &amp;lt;s&amp;gt;Versioning or any other kind of serialization format meta data, we'll need that in case of changes in serialization formats (see eg. Robert's compression patch where this is needed)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;We currently use 32 bit ids, probably hard to change later on, is that enough?&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Plugin versioning&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resource API issues ===&lt;br /&gt;
&lt;br /&gt;
Notes/ideas/complaints about the Akonadi::ResourceBase API:&lt;br /&gt;
&lt;br /&gt;
* Extremely error prone:&lt;br /&gt;
** Scheduler dead-locks when a requested operation is not correctly announced as finished, esp. a problem in error cases.&lt;br /&gt;
** Using the result methods multiple times or when not requested asserts&lt;br /&gt;
* &amp;lt;s&amp;gt;Item streaming is missing, requiring all data to be in memory at once&amp;lt;/s&amp;gt;&lt;br /&gt;
* Non-incremental updates need to know the results of ItemSync to not have to provide all data, even for already existing/unchanged items.&lt;br /&gt;
&lt;br /&gt;
=== API / BC issues ===&lt;br /&gt;
&lt;br /&gt;
Smaller stuff that should be fixed before the ABI freeze and is not yet listed above:&lt;br /&gt;
&lt;br /&gt;
* Cleanup the D-Bus format used by NotificationMessage&lt;br /&gt;
* No mentioning of &amp;quot;IMAP&amp;quot; in the public API, we are not using IMAP&lt;br /&gt;
* Naming and installed location of libraries, headers and executables (see discussion on kde-pim ML)&lt;br /&gt;
* &amp;lt;s&amp;gt;Payload part labels are QStrings, attribute types are QByteArray&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Deployment issues ===&lt;br /&gt;
&lt;br /&gt;
* Multiple access: Should multiple Akonadi instances' mysqlds access a single set of  data files the mysql will likely corrupt the data.  This can happen in any NFS+YP installation where users can log onto any machine and access shared homes.  MySQL relies on filesystem locking to prevent multiple access. [http://dev.mysql.com/doc/refman/6.0/en/multiple-servers.html MySQL multiple instance docu].&lt;br /&gt;
* [http://dev.mysql.com/doc/refman/6.0/en/innodb-restrictions.html InnoDB tables should not be used on NFS].&lt;br /&gt;
* NFS speed: MySQL documentation recommends against locating its data files on network shares.&lt;br /&gt;
* AppArmor: Distros' AppArmor profiles prevent MySQL from writing outside its defined data directory (usually /var/lib/mysql).  This is a problem at least with *buntu and openSUSE.  These will need to be adapted.   It is possible to daisy-chain profiles so that MySQL started by Akonadi receives a different profile to MySQL running standalone.  An empty profile has all rights.  Another possibility is to adapt the general MySQL profile so it can write to ${XDG_DATA_HOME}/akonadi(usually ${HOME/}.local/share/akonadi).  Both support for profile chaining and ${HOME} may depend on the version of AppArmor installed.  What about SELinux?&lt;br /&gt;
* Backup: MySQL data files should not be backed up without telling the mysqld process, otherwise a corrupt backup will be made.  LOCK TABLES and FLUSH TABLES at the least.  A dump can be made or mysqlhotbackup may be used in some circumstances. We should consider sysadmins' backup techniques when planning/promoting Akonadi, as a simple rsync cronjob with running Akonadi will not work. [http://dev.mysql.com/doc/refman/6.0/en/backup.html MySQL backup advice].&lt;br /&gt;
&lt;br /&gt;
=== Account Creation Wizard ===&lt;br /&gt;
&lt;br /&gt;
Notes on the resource configuration wizard discussion.&lt;br /&gt;
&lt;br /&gt;
* WizardBase class&lt;br /&gt;
* Wizard discovery via .desktop files&lt;br /&gt;
* A wizard can configure multiple resources (eg. IMAP + LDAP for Kolab) and non-resources (mailtransport)&lt;br /&gt;
* Optionally hide resources completely covered by wizards in the Add Account dialog&lt;br /&gt;
* List wizards in the Add Account dialog&lt;br /&gt;
* Store Account -&amp;gt; Resources information to offer deletion of depending resources&lt;br /&gt;
&lt;br /&gt;
=== PostgreSQL Support ===&lt;br /&gt;
&lt;br /&gt;
Has been merged for Akonadi server 1.3. We still need a volunteer for continuous testing and maintenance though.&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
&lt;br /&gt;
* Avoid examples using KJob::exec() due to its problematic side-effects.&lt;br /&gt;
* Examples in the ItemCreateJob docs (and maybe others) operate on items in the root collection which does not work at all&lt;br /&gt;
* Resurrect the server API docs (now at http://api.kde.org/kdesupport-api/kdesupport-apidocs/akonadi/server/html/index.html ).&lt;br /&gt;
&lt;br /&gt;
=== Migration of pre-Akonadi data and settings ===&lt;br /&gt;
&lt;br /&gt;
* KCal/KABC&lt;br /&gt;
** switch KRes resources to Akonadi KRes compat resources, use KRes Akonadi compat resource, basically injecting Akonadi inbetween&lt;br /&gt;
** Replace Akonadi KRes compat resources with their ported equivalent&lt;br /&gt;
** Application side does not need migration code, &amp;quot;only&amp;quot; port to Akonadi&lt;br /&gt;
* KMail&lt;br /&gt;
** Should migrate to one resource per account + one for previous local folders&lt;br /&gt;
** Problem: local folders are mixed mbox/maildir&lt;br /&gt;
*** Dedicated KMail compat resource?&lt;br /&gt;
*** Convert everything to maildir first?&lt;br /&gt;
** Flags are stored in proprietary binary format&lt;br /&gt;
* KNode&lt;br /&gt;
** Migrate every account to NNTP resource&lt;br /&gt;
** Local flags should be preserved, stored in proprietary binary format&lt;br /&gt;
** Local subscription state should be preserved (where is that stored?)&lt;br /&gt;
** Local folders using MBOX format + proprietary binary index&lt;br /&gt;
* Akregator&lt;br /&gt;
&lt;br /&gt;
=== Search &amp;amp; Virtual Collections ===&lt;br /&gt;
&lt;br /&gt;
Got their own page by now:&lt;br /&gt;
* [[Projects/PIM/Akonadi/VirtualCollections]]&lt;br /&gt;
* [[Projects/PIM/Akonadi/SearchInfrastructure]]&lt;br /&gt;
* [[Projects/PIM/Akonadi/SearchPolishing]]&lt;br /&gt;
&lt;br /&gt;
=== Workspace integration ===&lt;br /&gt;
&lt;br /&gt;
* Email notifier, based on UI of LionMail [[http://vizzzion.org/blog/2010/09/getting-email-done-the-stack-and-the-heap-of-lion-mail/]], in more detail:&lt;br /&gt;
** Write (or lend from Kontact Touch) ProxyModels to display email collections: new / unread and important, combination thereof&lt;br /&gt;
** Plasma Quick widgets for individual emails and collections&lt;br /&gt;
** UI integration&lt;br /&gt;
*** Konfiguration&lt;br /&gt;
*** Drag and Drop (from Collection onto desktop)&lt;br /&gt;
*** Theming / Animations&lt;br /&gt;
*** Streamlined notifications (MUST NOT get in the way)&lt;br /&gt;
** Activity support (notify off for certain activities, only selected folders for a given activity, etc)&lt;br /&gt;
The current Lion Mail code uses a dataengine to retrieve data from AKonadi. This needs to be ported to using one of the AKonadi models which are also used in Kontact Touch.&lt;br /&gt;
&lt;br /&gt;
* Agent monitoring and control&lt;br /&gt;
* Enable/disable logging?&lt;br /&gt;
* Plasma applet for notes / sticky notes&lt;br /&gt;
* Resource progress, e.g. like KIO progress&lt;br /&gt;
* Drag&amp;amp;Drop of Akonadi items: drop target should be able to retrieve payload&lt;br /&gt;
&lt;br /&gt;
== KMail Breakdown Plan ==&lt;br /&gt;
The current plan is to put some parts of KMail into a stand-alone&lt;br /&gt;
library, independent of KMail. This increases code reuse (for example, the message composer could be shared with Mailody) and makes the code a lot easier to maintain and to port to Akonadi.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Bodypart formatters||}}&lt;br /&gt;
{{FeatureDone|Reader Window||Andris}}&lt;br /&gt;
{{FeatureDone|Composer: Message Composer||Constantin,Leo}}&lt;br /&gt;
{{FeatureInProgress|Composer: GUI Window||Constantin}}&lt;br /&gt;
{{FeatureDone|Queue Manager for mailtransport||Constantin}}&lt;br /&gt;
{{FeatureInProgress|Templates: Core||Leo}}&lt;br /&gt;
{{FeatureTodo|Templates: GUI||}}&lt;br /&gt;
{{FeatureTodo|Port KMCommands||}}&lt;br /&gt;
{{FeatureDone|Port away from KMMessage and KMFolder* everywhere it is left|An idea might be: wrap KMMsgBase/KMMessage inside a reference counted Message class. Insulate everything else from it by wrapper functions. KMFolder should be easier...|all}}&lt;br /&gt;
{{FeatureInProgress|Migration application for index and other config||Casey}}&lt;br /&gt;
{{FeatureTodo|Port MDNs||}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The Road to World Domination ==&lt;br /&gt;
&lt;br /&gt;
Sort of related so the stuff above but with a scope for all of KDE PIM and beyond.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Share identity config GUI parts|eg. the signature configuration widget|}}&lt;br /&gt;
{{FeatureDone|Mailtransport Agent|Global shared outbox, central mail sending instance|Constantin}}&lt;br /&gt;
{{FeatureTodo|Recently sent to support in mailtransport|related to above, based on Akonadi/Nepomuk|}}&lt;br /&gt;
{{FeatureInProgress|Composer engine|Shared stuff for KMail/KNode/Mailody: Crypto, editor, editor actions, attachment model, message assembly, etc.|Constantin,Leo}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Akonadi FAQ ==&lt;br /&gt;
&lt;br /&gt;
This FAQ primarily deals with technical and design questions, if you have questions about using Akonadi (such as &amp;quot;I get error X when starting Akonadi&amp;quot;), please refer to [http://userbase.kde.org/Akonadi userbase.kde.org/Akonadi].&lt;br /&gt;
&lt;br /&gt;
=== Where do I find the Akonadi config files? ===&lt;br /&gt;
&lt;br /&gt;
''~/.config/akonadi/''&lt;br /&gt;
&lt;br /&gt;
=== Where does Akonadi store my data? ===&lt;br /&gt;
&lt;br /&gt;
Akonadi merely acts as a cache for your data, the actual content stays where it has always been, .ics/.vcf/MBOX files, local maildirs, IMAP- and groupware servers. There is only a limited amount of data stored exclusively in Akonadi:&lt;br /&gt;
* Data not supported by the corresponding backends, such as email flags in case of maildir/mbox. This is comparable to KMail's binary index files stored alongside these files in pre-Akonadi times.&lt;br /&gt;
* Internal meta-data used by application or resources, such as information about the last synchronization with a backend or translated folder names.&lt;br /&gt;
* Data that has been changed while the corresponding backend has been offline and has not yet been uploaded.&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the Akonadi database? ===&lt;br /&gt;
&lt;br /&gt;
''~/.local/share/akonadi/''&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the source code? ===&lt;br /&gt;
&lt;br /&gt;
There are three different parts of source code:&lt;br /&gt;
* The Akonadi server, which is KDE-independent. Currently, the code can be found at [http://websvn.kde.org/trunk/kdesupport/akonadi/ kdesupport/akonadi]. The server code will likely move to the [http://www.freedesktop.org/wiki/ freedesktop.org project] in the future, the move has already been [https://bugs.freedesktop.org/show_bug.cgi?id=15711 requested].&lt;br /&gt;
* The Akonadi KDE client libraries are in [http://websvn.kde.org/trunk/KDE/kdepimlibs/akonadi/ kdepimlibs/akonadi].&lt;br /&gt;
* Various agents, resources, the Akonadi console and much other misc stuff is in [http://websvn.kde.org/trunk/KDE/kdepim/akonadi/ kdepim/akonadi]&lt;br /&gt;
&lt;br /&gt;
=== Where can I find documentation? ===&lt;br /&gt;
&lt;br /&gt;
The documentation is mainly in the code itself, in the form of doxygen comments.&lt;br /&gt;
You can find the generated documentation on [api.kde.org api.kde.org], for example:&lt;br /&gt;
&lt;br /&gt;
* General documentation, including a design overview, is [http://api.kde.org/kdesupport-api/kdesupport-apidocs/akonadi-git/html/ here]&lt;br /&gt;
&lt;br /&gt;
: Note that some links in the above documentation which point to the server or the KDE client libraries are currently broken, use the links below to access that documentation.&lt;br /&gt;
* Documentation for the KDE Akonadi client library is [http://api.kde.org/4.x-api/kdepimlibs-apidocs/akonadi/html/index.html here]&lt;br /&gt;
* Documentation about the server is [http://api.kde.org/kdesupport-api/kdesupport-apidocs/akonadi-git/html/ here]&lt;br /&gt;
&lt;br /&gt;
=== Which DBMS does Akonadi use? ===&lt;br /&gt;
&lt;br /&gt;
So far only MySQL. There is some work on PostgreSQL support going on though. Basically, every database that is supported by QtSQL can be used, requiring minimal changes in the code at most. However, not all of them provide the features needed by Akonadi (see next two questions).&lt;br /&gt;
&lt;br /&gt;
=== Why not use sqlite? ===&lt;br /&gt;
&lt;br /&gt;
We tried. Really. It just can't handle the concurrent access very well.&lt;br /&gt;
&lt;br /&gt;
Please refer to [http://techbase.kde.org/Projects/PIM/Akonadi/Database#Sqlite] for more information on this subject.&lt;br /&gt;
&lt;br /&gt;
=== Why not use MySQL/Embedded? ===&lt;br /&gt;
&lt;br /&gt;
We tried that as well, there are two reasons for not using it: No support for the InnoDB engine (which we need for transaction support) and poor availability (only OpenSUSE provided usable packages, needed a patched QSQL driver).&lt;br /&gt;
&lt;br /&gt;
=== Do I need a running MySQL server? ===&lt;br /&gt;
&lt;br /&gt;
No. Akonadi starts its own local MySQL server (unless configured otherwise, see next question). All you need is having the 'mysqld' binary installed at runtime (usually found in the mysql-server package of your distribution).&lt;br /&gt;
&lt;br /&gt;
=== Can Akonadi use a normal MySQL server running on my system? ===&lt;br /&gt;
&lt;br /&gt;
Yes, it can. You find the corresponding settings in ''~/.config/akonadi/akonadiserverrc''.&lt;br /&gt;
&lt;br /&gt;
=== Can I connect multiple Akonadi instances to the same database to share my data between different machines? ===&lt;br /&gt;
&lt;br /&gt;
That does not work unfortunately. Akonadi does not store all relevant data in the database but also uses the file system for configuration and large payload data for example. Also, there is no mechanism to ensure multiple instances have exactly the same version and exactly the same agents and plug-ins installed etc., all of which would be necessary to work on the same database. Finally, there is no notification system to inform the other instances about changes which endangers consistency since the Akonadi server contains internal caches of data in the database. If you want multiple instances to synchronize, use a groupware server (not as bad as it sounds, Kolab for example works with many normal IMAP servers).&lt;br /&gt;
&lt;br /&gt;
If you try this despite the warnings, be aware that there is no safety mechanism in place to prevent you from doing that and you will likely mess up your data in funny ways.&lt;br /&gt;
&lt;br /&gt;
=== I don't like a database server because of backups/running on NFS/etc. ===&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;Deployment Issues&amp;quot; above, we are aware of that and working on it. Some of these, like backup/restore are already implemented. But please be aware that most of this issues also existed before (eg. with KMail's custom binary indexes).&lt;br /&gt;
&lt;br /&gt;
=== Can a single Akonadi instance be used by multiple users? ===&lt;br /&gt;
&lt;br /&gt;
No. There has to be one Akonadi server instance per user. However, it is possible to use a shared database server.&lt;br /&gt;
&lt;br /&gt;
=== Can I access the Akonadi server on a remote machine? ===&lt;br /&gt;
No. Akonadi is not a groupware server. It's a local cache only.&lt;br /&gt;
&lt;br /&gt;
=== What's the differences between Akonadi and EDS? ===&lt;br /&gt;
EDS (Evolution Data Server) is limited to contacts and calendar data, Akonadi is type-independent. Especially, Akonadi is designed to also handle high-volume data such as email. Akonadi and EDS also differ largely in their access protocol on a technical level (Corba/D-Bus vs. local socket with IMAP-like protocol/D-Bus) and also on a protocol level (type specific vs. generic).&lt;br /&gt;
&lt;br /&gt;
=== How do I create a collection? ===&lt;br /&gt;
&lt;br /&gt;
From the developers point of view, there is Akonadi::CollectionCreateJob for that, from the users point of view, most applications allow that, eg. Mailody or akonadiconsole.&lt;br /&gt;
&lt;br /&gt;
However, there is one limitation: Top-level collections can only be created by resources, not by normal applications. The reason for that is that every object (collection or item) is supposed to have an owning resource, that is a resource that is responsible for storing and retrieving that object. There is an ongoing discussion to remove this restriction though.&lt;br /&gt;
&lt;br /&gt;
So, if you want to create a collection eg. for testing purposes, add a resource first. Most Akonadi applications offer an option to do that, a module for KControl is planned as well.&lt;br /&gt;
&lt;br /&gt;
=== How do I disable automatic migration from KDE's traditional framework? ===&lt;br /&gt;
&lt;br /&gt;
The migration tool is controlled by standard KDE configuration file called ''kres-migratorrc''.&lt;br /&gt;
&lt;br /&gt;
Distributors or system administrators wanting to disable the automatism will probably want to that globally, e.g. by editing the installed default configuration file, or by using KDE's configuration hierachy and using a profile config between that and the user level.&lt;br /&gt;
&lt;br /&gt;
The quickest way to deactivate it for one user account only is to use KDE's ''kwriteconfig'' tool to set the respective configration value with a simple copy&amp;amp;paste of the following command:&lt;br /&gt;
&lt;br /&gt;
''kwriteconfig --file kres-migratorrc --group Migration --key Enabled --type bool false''&lt;br /&gt;
&lt;br /&gt;
Please note that at some point KDE applications such as Kontact, KOrganizer, KMail will be using Akonadi directly, at which point migration either has to be enabled or performed manually.&lt;br /&gt;
&lt;br /&gt;
As of KDE 4.4 (and its development releases and when building from SVN trunk) this already applies to KAddressBook and KMail's address book access.&lt;br /&gt;
&lt;br /&gt;
=== How do I completely disable Akonadi startup? ===&lt;br /&gt;
&lt;br /&gt;
{{warning|If you already have applications natively using Akonadi, you of course can't disable Akonadi startup. &amp;lt;i&amp;gt;KAddressBook&amp;lt;/i&amp;gt; (as of KDE 4.4 and its test versions), &amp;lt;i&amp;gt;Mailody&amp;lt;/i&amp;gt;, &amp;lt;i&amp;gt;KMail&amp;lt;/i&amp;gt; (as of KDE 4.4 and its test versions for address book related things) and &amp;lt;i&amp;gt;KPilot&amp;lt;/i&amp;gt; are applications that are already based on Akonadi.}}&lt;br /&gt;
&lt;br /&gt;
Other applications, like &amp;lt;i&amp;gt;KOrganizer&amp;lt;/i&amp;gt;, are not based on Akonadi yet, at the time of writing. Instead, they use the old KResource framework for storing contacts, calendars and notes.&lt;br /&gt;
During the KDE 4.2 beta time, these KResources were automatically migrated to Akonadi-based KResources, the so-called Akonadi compatibility resources. Therefore, applications like KOrganizer would use Akonadi indirectly through KResources, and therefore would start the Akonadi server when being started.&lt;br /&gt;
&lt;br /&gt;
If Akonadi doesn't start up correctly for you, the following should help you to disable Akonadi startup and use your old KResources again.&lt;br /&gt;
&lt;br /&gt;
First, disable automatic migration like described in the above FAQ entry.&lt;br /&gt;
Then, open &amp;lt;i&amp;gt;System Settings&amp;lt;/i&amp;gt;, go to the &amp;lt;i&amp;gt;Advanced&amp;lt;/i&amp;gt; tab and open the &amp;lt;i&amp;gt;KDE Resources&amp;lt;/i&amp;gt; config panel. There, you can configure which type of KResources are used for contacts, calendars and notes. If the migration to Akonadi was successful, you'll probably only see the &amp;lt;i&amp;gt;Akonadi Compatibility Resource&amp;lt;/i&amp;gt; as an active resource, and all others disabled.&lt;br /&gt;
&lt;br /&gt;
To disable Akonadi startup, enable your old resources again, then disable and delete the Akonadi compatibility resource.&lt;br /&gt;
&lt;br /&gt;
=== What is the relation between Akonadi and OpenSync? ===&lt;br /&gt;
&lt;br /&gt;
Akonadi and OpenSync focus on different aspects and complement each other. Akonadi provides a unified way to access PIM data for applications and a framework to implement powerful connectors to varies data sources. OpenSync focus is on syncing two sets of PIM data.&lt;br /&gt;
&lt;br /&gt;
An Akonadi plugin for OpenSync is currently under development, allowing to sync PIM data available through Akonadi with any other system supported by OpenSync, especially mobile phones.&lt;br /&gt;
&lt;br /&gt;
=== When should I use Akonadi? ===&lt;br /&gt;
&lt;br /&gt;
More precisely, when should you use for your application specific data instead of eg. just using a local file directly.&lt;br /&gt;
&lt;br /&gt;
Akonadi is especially useful when you need one the following:&lt;br /&gt;
&lt;br /&gt;
* Different backends for your data, like eg. a local file and a remote server. Akonadi provides a unified interface for application developers to access your data independent of the actual backend.&lt;br /&gt;
* Caching and change replay of remote data. Akonadi has support for that built in, giving you free offline support for any remote backend.&lt;br /&gt;
* Desktop-wide sharing of your data. As soon as more than one application (say your main applications and a plasmoid) accesses the same data you need to deal with locking, conflict detection, change notifications, etc. - or let Akonadi do that for you.&lt;br /&gt;
&lt;br /&gt;
However, if you are just looking for a simple way to store your application data without needing one of the above, using Akonadi usually means more implementation work for relatively little gain.&lt;br /&gt;
&lt;br /&gt;
=== Akonadi needs too much space in my home directory! ===&lt;br /&gt;
&lt;br /&gt;
An empty, unused Akonadi database needs about 100 Mb of disk space. This is due to the MySQL InnoDB log files which work similar to a journal in a modern file system. These files are constant in size and independent of the actual data stored in Akonadi. The default size is optimized for performance on average desktop hardware where the use of 100 Mb of disk space is no problem. In other cases, such as multi-user systems or embedded devices, this default might not be optimal though.&lt;br /&gt;
&lt;br /&gt;
The default size can be configured, globally or per-user. The global configuration file can be found in $PREFIX/share/config/akonadi/mysql-global.conf, the per-user file is in ~/.config/akonadi/mysql-local.conf and overwrites settings of the global file. In any of these files, you can change the settings '''innodb_log_file_size''' and assign it a smaller value than the default (64M).&lt;br /&gt;
&lt;br /&gt;
For this setting to take effect you need to restart Akonadi. With older Akonadi versions (&amp;lt;=1.1.1) you might need to manually remove the InnoDB log files from ~/.local/share/akonadi/db_data for this change to take effect. The log files do not contain data after a clean shutdown and thus can safely be removed while Akonadi is not running.&lt;br /&gt;
&lt;br /&gt;
An alternative approach especially for multi-user systems might be the use of a single, global MySQL server instance.&lt;br /&gt;
&lt;br /&gt;
=== My Akonadi resource seems to randomly hang/stop working! ===&lt;br /&gt;
&lt;br /&gt;
A very common problem of resources based on Akonadi::ResourceBase are &amp;quot;unguarded exit paths&amp;quot; from one of the methods you have reimplemented there. See the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void MyResource::retrieveItems( const Collection &amp;amp;collection )&lt;br /&gt;
{&lt;br /&gt;
  if ( someError )&lt;br /&gt;
    return;&lt;br /&gt;
  itemsRetrieved( myItems );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case of an error you leave retrieveItems() without telling Akonadi::ResourceBase that you are done with the task. Therefore, it is assumed the requested item retrieval takes a bit longer (which is not uncommon for resources for remote backends, results typically come in in a result slot connected to a job class for example) and waits until you announce the task is finished.&lt;br /&gt;
&lt;br /&gt;
The following example does it correctly:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void MyResource::itemAdded( const Akonadi::Item &amp;amp;item, const Akonadi::Collection &amp;amp;parent )&lt;br /&gt;
{&lt;br /&gt;
  if ( noNetwork ) { // transient error&lt;br /&gt;
    deferTask( i18n( &amp;quot;Offline, will retry later.&amp;quot; ) );&lt;br /&gt;
  } else if ( item_not_valid ) { // permanent error &lt;br /&gt;
    cancelTaks( i18n( &amp;quot;Got invalid crap, can't store that.&amp;quot; ) );&lt;br /&gt;
  } else {&lt;br /&gt;
    // store the item here&lt;br /&gt;
    Item newItem( item );&lt;br /&gt;
    newItem.setRemoteId( my_new_remote_id );&lt;br /&gt;
    changeCommitted( newItem );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following methods require explicit notification that a task has been completed:&lt;br /&gt;
* retrieveX&lt;br /&gt;
* any method indicating changes, ie. itemAdded|Changed|Moved|Removed(), collectionAdded|Changed|Moved|Removed()&lt;br /&gt;
* any custom task scheduled with ResourceBase::scheduleCustomTask()&lt;br /&gt;
&lt;br /&gt;
Refer to the API documentation of Akonadi::ResourceBase for the various ways to do that correctly, there are a few different ways, depending on the current task:&lt;br /&gt;
* Successful completion with convenience features, eg. changeCommitted(), itemsRetrieved() etc.&lt;br /&gt;
* Error cases with convenience features, eg. cancelTask(), deferTask()&lt;br /&gt;
* Only indicate completion, with everything else done manually, eg. changeProcessed(), taskDone()&lt;br /&gt;
&lt;br /&gt;
To confirm a resource is affected by this problem, the &amp;quot;Resource Schedulers&amp;quot; tab of akonadiconsole is very useful (needs to be enabled in the context menu first, causes too much slowdown otherwise). It shows the state of the internal task scheduler of your resource, allowing you to spot stuck tasks.&lt;br /&gt;
&lt;br /&gt;
== Information for Developers using Akonadi ==&lt;br /&gt;
&lt;br /&gt;
References to information for developers using or extending Akonadi.&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
* [[Development/Tutorials/Akonadi/Application|Application Development]]&lt;br /&gt;
* [[Development/Tutorials/Akonadi/Resources|Resource Development]]&lt;br /&gt;
* [[Development/Tutorials/Akonadi/SerializerPlugin|Serializer Plugin Development]]&lt;br /&gt;
* [[Development/Tutorials/Akonadi/CreatingAccountWizardPackages|Creating accountwizard packages]]&lt;br /&gt;
* [[Development/AkonadiPorting|Application Porting]]&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
&lt;br /&gt;
* [[Projects/PIM/Akonadi/Testing|Akonadi Testing Framework]]&lt;br /&gt;
* [[Projects/PIM/Akonadi/Development_Tools|Akonadi Development Tools]]&lt;br /&gt;
* [[Projects/PIM/Akonadi/Firstrun|Akonadi Firstrun]]&lt;br /&gt;
* [[Projects/PIM/Akonadi/Trashhandling|Akonadi Trashhandling]]&lt;br /&gt;
* [[Projects/PIM/Akonadi/Debug_IMAP|Debugging Akonadi IMAP Resource]]&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdepimlibs-apidocs/akonadi/html/index.html Client Library API documentation]&lt;br /&gt;
* [[Projects/PIM/Akonadi/Multi-Instance|Akonadi Multi-Instance Setup]]&lt;br /&gt;
&lt;br /&gt;
=== Projects ===&lt;br /&gt;
&lt;br /&gt;
* [[Projects/PIM/Akonadi/Bookmarks|Bookmark support based on Akonadi]]&lt;br /&gt;
* [[Projects/PIM/Akonadi/PortingStatus|Akonadi Port - List of Bugs and Features]]&lt;br /&gt;
&lt;br /&gt;
=== Contact &amp;amp; Getting Involved ===&lt;br /&gt;
&lt;br /&gt;
* #akonadi IRC channel on freenode&lt;br /&gt;
* kde-pim@kde.org mailing-list&lt;br /&gt;
* Google Summer of Code&lt;br /&gt;
** [[Projects/Summer of Code/2009/Ideas#KDE_PIM|Google Summer of Code 2009 Ideas]]&lt;br /&gt;
** TODO: add links for other years&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&lt;br /&gt;
* [http://pim.kde.org/akonadi/ http://pim.kde.org/akonadi/]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Akonadi Internals ==&lt;br /&gt;
&lt;br /&gt;
References to information for developers of Akonadi itself (the above section is of course also relevant for you).&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
&lt;br /&gt;
* [[Projects/PIM/Akonadi/Release_Howto|Akonadi Release Howto]]&lt;br /&gt;
* [[Projects/PIM/Akonadi/Database|Akonadi Database Internals]]&lt;br /&gt;
* [http://api.kde.org/kdesupport-api/kdesupport-apidocs/akonadi/html/ Akonadi Server API documentation]&lt;br /&gt;
&lt;br /&gt;
=== Meeting Notes ===&lt;br /&gt;
&lt;br /&gt;
* [[Projects/PIM/Akonadi/Meeting2008-11|Halloween Sprint 2008]]&lt;br /&gt;
* [http://community.kde.org/KDE_PIM/Meetings/Osnabrueck_7 Osnabrueck 7]&lt;br /&gt;
* [[Projects/PIM/Akonadi/Meeting2009-04|Akonadi April Sprint 2009]]&lt;br /&gt;
* [[Projects/PIM/Meetings/GCDS_2009|GCDS/aKademy 2009]]&lt;br /&gt;
* [[Projects/PIM/Akonadi/Meeting2009-10|Akonadi October Sprint 2009]]&lt;br /&gt;
* [http://community.kde.org/KDE_PIM/Meetings/Osnabrueck_8 Osnabrueck 8]&lt;br /&gt;
* [http://community.kde.org/KDE_PIM/Meetings/Akonadi-2010-05 Akonadi/KDE PIM pre45 sprint 2010]&lt;br /&gt;
&lt;br /&gt;
[[Category:PIM]]&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.9_Feature_Plan</id>
		<title>Schedules/KDE4/4.9 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.9_Feature_Plan"/>
				<updated>2012-05-25T11:09:52Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: /* kdepim */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.9 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.9 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.8 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*todo =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|KGlobalSettings|Make KGlobalSettings reread locale settings before calling settingsChanged().|lamarque@kde.org|Lamarque V. Souza}}&lt;br /&gt;
{{FeatureDone|Kate Part|Reworked Color Configuration|dhaumann@kde.org|Dominik Haumann}}&lt;br /&gt;
{{FeatureDone|KActivities|Encryption for private activities (not available via UI).|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureDone|KActivities|Linking files to activities in Dolphin, Konqueror, Folder View.|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureTodo|KActivities|Activities KIO.|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Thumbnail|fix for bookmarks|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|ksmserver|Port shutdown dialog to QML|lamarque@kde.org|Lamarque V. Souza}}&lt;br /&gt;
{{FeatureInProgress|ksmserver|Merge the new qml based screen locker|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureDone|plasma|MPRIS2 dataengine|alex.merry@kdemail.net|Alex Merry}}&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Lanczos Filter broken after screen size changes ({{bug |296065}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|GHNS support for KWin Scripts ({{bug |296774}}, Review 104877)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|KConf Update Script for KWin 4.9 ({{bug |296775}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for scripted KWin Effects on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297634}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for KWin Scripts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297635}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|GHNS support for Window Switching Layouts ({{bug |297636}}, Review 104894)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for Window Switcher Layouts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297637}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Update Documentation for Window Switcher Layouts ({{bug |297638}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|ThumbnailItem allows upscaling of Windows ({{bug |297864}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Increase ABI version for KDecorations ({{bug |299140}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Useraction menu closes when focus passes to another window ({{bug |81743}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: change focus only when moving mouse ({{bug |92290}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: kwin fulscreen / un-fullscreen system notifications ({{bug |124612}}, Review 104457)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Insufficient stacking order handling for deleted windows ({{bug |158262}}, Review 104519)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Use arrow keys to control cover switch. ({{bug |178595}}, Review 104438)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|No reason given why some desktop effects cannot be activated ({{bug |209213}}, Review 104847)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Dragging a title bar against a bottom panel twice makes it go under the panel on the second time ({{bug |210926}})|kwin-bugs-null@kde.org}}                                                                                                                            &lt;br /&gt;
{{FeatureDone|kwin|Wobbly windows wobbles strange after quick-maximization ({{bug |222102}})|kwin-bugs-null@kde.org}}                        &lt;br /&gt;
{{FeatureDone|kwin|&amp;quot;Move&amp;quot; command should allow off-screen window moving same as Alt + click trick ({{bug |229942}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Bug with shading always inactive windows ({{bug |242217}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Change title of menu item &amp;quot;Configure window behaviour...&amp;quot; ({{bug |249486}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Task switcher message when no windows looks ugly with stars ({{bug |260938}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Placement Policy 'under mouse' ({{bug |272162}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Synchronize Show Desktop wording in all tabbox effects ({{bug |273478}}, Review 104436)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|closing session crash ({{bug |282933}}, Review 104690)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Window Specific Settings dialog has no help function ({{bug |286783}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add &amp;quot;Present Windows - Window Class&amp;quot; to &amp;quot;Screen Edges&amp;quot; functions ({{bug |288960}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|[JJ] Select next window with arrow key in Alt+Tab ({{bug |291916}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|KWin crashed when I was switching windows ({{bug |292614}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Kill helper should be out of process ({{bug |295940}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Synchronize user actions menu with libtaskmanager ({{bug |296056}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Different binary name for KWin Active ({{bug |296084}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Window Switcher KCM needs to be reworked ({{bug |297639}}, Review 104525)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Document global JavaScript methods in KWin Scripting API documentation ({{bug |297640}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Elevate windows in addition to highlight ({{bug |297809}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|KWin crashes when interacting with Plasma ({{bug |298669}}, Review 104714)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add ABI check to KDecorations ({{bug |299141}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Effects cannot be configured ({{bug |299163}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Adding proper window thumbnail clipping to the QML tabbox ({{bug |299198}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Improve VSync strategy ({{bug |299274}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Screen Edge bindings for KWin Scripting ({{bug |299275}}, Review 104904)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Better QML selection list for Window Switcher layout ({{bug |299278}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add layout specification to D-Bus call for invoking TabBox ({{bug |299279}}, Review 104838)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Default Bindings for Switching between Windows of current Application ({{bug |299308}}, Review 104730)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Make desktop focus chains activities aware ({{bug |299309}}, Review 104649)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Desktop Zoom should be saved between sessions ({{bug |189956}}, Review 104597)|kwin-bugs-null@kde.org}}&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Refactor into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
{{FeatureDone|Dolphin|Allow to show any kind of metadata like ratings, tags, comments, image-sizes, music-artist, ... beside each item of the view.|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Use KMessageWidget for information- and error-messages (see http://agateau.com/2011/04/21/kde-ux-2011/ for details)|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Optionally remember the column-widths of the details view|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Allow to disable the expandable folders of the details view|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Implement inline renaming for the new view-engine|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Allow to optionally set a maximum number of lines for the icons-view|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
{{FeatureDone|Konsole|Add command line options for controlling the visibility of menubar and tabbar|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Rocs|Project Files to combine graphs and algorithms|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Extend graph data structure to support overlay graphs|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Stepped execution of algorithms|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|General unit test cleanup and overhauling|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|New Project Wizard - guided creation based on loaded plugins|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Project journal files|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|New Add-Node/Add-Link Toolbar for data types and pointer types|rocs-devel@kde.org|Rocs Developers}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve Cancel Construction and Undo actions|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureDone|Pairs|New memory game|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|KAlgebra Mobile|Many improvements, including Android and better Active support|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkdegames|[http://community.kde.org/Games/API_cleanup Major cleanup and rewrite] (done, except for the new highscore classes)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''Release team:''' please link to the [[Projects/Games/Porting_to_libkdegames_v5|porting instructions]]  for third-party developers|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|Granatier|improve config UI for player and arena selection|m-hias@gmx.de|Mathias Kraus}}&lt;br /&gt;
{{FeatureDone|Kajongg|tooltips giving playings hints|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|new config option: propose what to do|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|make it possible to replay a game from a screen shot (for better debugging)|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|improve Robot AI|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Add default voices|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Players can chat with each other from within kajongg|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Define a central game server, making it easier to play over the internet (no more tweaking of firewalls for the server side)|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureInProgress|Kajongg|Add support for other rule variants, starting with Classical Chinese variants|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureTodo|Kajongg|Print rulesets, also more than one in parallel for comparisons|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add the Gold Rush II championship game (20 levels), contributed by Gabriel Miltschitzky|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add solution files to some KGoldrunner games|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Simplify the XML descriptions of puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Add XML and Desktop files for seven new two-dimensional puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Add XML and Desktop files for three new three-dimensional puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Improve the quality and relevance of KSudoku hints|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Make Load and Save work correctly for all puzzle types, including display of small markers/notes and restart of the puzzle clock from a saved value|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Integrate the new generator/solver and the old KSudoku code more closely|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Make puzzle features easier to see and use by improving highlighting, control and settings in both 2-D and 3-D puzzles and adding keyboard input to 3-D puzzles|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KMahjongg|Make the BoardEditor running again|Coding@Christian-Krippendorf.de|Christian Krippendorf}}&lt;br /&gt;
{{FeatureDone|KMahjongg|Implement an option for random layouts|Coding@Christian-Krippendorf.de|Christian Krippendorf}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Gwenview|Fullscreen browse|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|Okular|Store annotations with documents {{bug |151614}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureInProgress|Okular|Print document with annotations {{bug |159005}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Annotations Screen support (embedded movies in PDF) {{bug |172847}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Aggressive page preloading {{bug |184196}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Hyphen-aware search {{bug |190433}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Multiple bookmarks per page {{bug |157198}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Allow the renaming of bookmark &amp;quot;parent&amp;quot; items|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Allow the page number selector to be added to the toolbar {{bug |279128}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Double click to select workds {{bug |187347}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Make Okular inhibit sleep and screen power management when in Presentation mode|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Behavior for left/right arrow keys (Review 104596)|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Remember the mouse mode on exit|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Make search from the current page the default|okular-devel@kde.org|}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|JuK|last.fm scrobbling|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|JuK|cover-fetching from last.fm|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureInProgress|JuK|MPRIS2 support|alex.merry@kmail.net|Alex Merry}}&lt;br /&gt;
{{FeatureDone|Dragon|MPRIS2 support|hein@kde.org|Eike Hein}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|Kopete|Add option to group all offline users into a &amp;quot;Offline Users&amp;quot; group|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
{{FeatureDone|Kopete|Show contact's status change in chat window|igor.poboiko@gmail.com|Igor Poboiko}}&lt;br /&gt;
{{FeatureDone|Kopete|Add context option &amp;quot;rename&amp;quot; to contacts and allow changing custom display name inline.|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Akonadi Google Resources|Move contacts and calendars resources from Akonadi Google project to kdepim-runtime|dan@progdan.cz|Dan Vratil}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|KTnef|Bring back KTnef from the KDE3 days. KTnef is a standalone TNEF attachment viewer|winter@kde.org|Allen Winter}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Akonadi Kolab Resources|Kolab resource using the Kolab libraries to kdepim-runtime|chrigi_1@fastmail.fm|Christian Mollekopf}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Extend Akonotes Format|Extend the akonotes format to support features required by zanshin and kolab|chrigi_1@fastmail.fm|Christian Mollekopf}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Import pim data|ImportWizard allows to import settings/mails/filters/calendar/addressbook from thunderbird/evolution/etc. when exists.|montel@kde.org|Laurent Montel}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|Now Playing|replace with QML version|alex.merry@kdemail.net|Alex Merry}}&lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add view profiles, incl. editor/manager|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureDone|Lokalize|Optimize TM fuzzy searching||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureDone|Lokalize|File search tab||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|.ts support||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|diagram auto layout support|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|diagram graphviz dot export |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureDone|Thumbnail|PO thumbnailer|shuizhuyuanluo@126.com|Ni Hui}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.9_Feature_Plan</id>
		<title>Schedules/KDE4/4.9 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.9_Feature_Plan"/>
				<updated>2012-05-02T14:27:04Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: /* kdepim */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.9 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.9 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.8 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*todo =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|KGlobalSettings|Make KGlobalSettings reread locale settings before calling settingsChanged().|lamarque@kde.org|Lamarque V. Souza}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|ksmserver|Port shutdown dialog to QML|lamarque@kde.org|Lamarque V. Souza}}&lt;br /&gt;
{{FeatureInProgress|plasma|MPRIS2 dataengine|alex.merry@kdemail.net|Alex Merry}}&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|&amp;quot;Move&amp;quot; command should allow off-screen window moving same as Alt + click trick (Bug 229942)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Quick Tile shortcuts should be toggle buttons (Bug 263755)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display application menu and title bar side by side for maximized windows (Bug 102607)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Insufficient stacking order handling for deleted windows (Bug 158262)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|No reason given why some desktop effects cannot be activated (Bug 209213)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Add support for appmenu-qt (Bug 266596)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Placement Policy 'under mouse' (Bug 272162)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Kill helper should be out of process (Bug 295940)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Decoration KCM should show comment for decoration (Bug 296041)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Lanczos Filter broken after screen size changes (Bug 296065)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|DesktopThumbnailItem for QML (Bug 296067)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Packages for Desktop Switching Layouts (Bug 296068)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Walk Through Desktop layout rendering desktop previews (Bug 296069)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Move ThumbnailBar from BoxSwitch to CoverSwitch (Bug 296070)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Drop BoxSwitch effect (Bug 296071)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Different binary name for KWin Active (Bug 296084)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Import Scripted Effect from All Effets Tab (Bug 296772)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|GHNS support for Scripted Effects (Bug 296773)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|GHNS support for KWin Scripts (Bug 296774)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|KConf Update Script for KWin 4.9 (Bug 296775)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Long caption in Thumbnail layout overlaps box for only one item (Bug 297028)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for scripted KWin Effects on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org (Bug 297634)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for KWin Scripts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org (Bug 297635)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|GHNS support for Window Switching Layouts (Bug 297636)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for Window Switcher Layouts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org (Bug 297637)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Update Documentation for Window Switcher Layouts (Bug 297638)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Switcher KCM needs to be reworked (Bug 297639)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Document global JavaScript methods in KWin Scripting API documentation (Bug 297640)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: kwin fulscreen / un-fullscreen system notifications (Bug 124612)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Use arrow keys to control cover switch. (Bug 178595)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Change title of menu item &amp;quot;Configure window behaviour...&amp;quot; (Bug 249486)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Task switcher message when no windows looks ugly with stars (Bug 260938)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Synchronize Show Desktop wording in all tabbox effects (Bug 273478)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Window Specific Settings dialog has no help function (Bug 286783)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add &amp;quot;Present Windows - Window Class&amp;quot; to &amp;quot;Screen Edges&amp;quot; functions (Bug 288960)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|[JJ] Select next window with arrow key in Alt+Tab (Bug 291916)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Synchronize user actions menu with libtaskmanager (Bug 296056)|kwin-bugs-null@kde.org}}&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Refactor into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
{{FeatureInProgress|Dolphin|Allow to show any kind of metadata like ratings, tags, comments, image-sizes, music-artist, ... beside each item of the view.|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|Dolphin|Use KMessageWidget for information- and error-messages (see http://agateau.com/2011/04/21/kde-ux-2011/ for details)|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Optionally remember the column-widths of the details view|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Allow to disable the expandable folders of the details view|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement inline renaming for the new view-engine|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Allow to optionally set a maximum number of lines for the icons-view|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Rocs|Project Files to combine graphs and algorithms|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Extend graph data structure to support overlay graphs|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Stepped execution of algorithms|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|General unit test cleanup and overhauling|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|New Project Wizard - guided creation based on loaded plugins|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Project journal files|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|New Add-Node/Add-Link Toolbar for data types and pointer types|rocs-devel@kde.org|Rocs Developers}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve Cancel Construction and Undo actions|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kajongg|tooltips giving playings hints|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|new config option: propose what to do|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|make it possible to replay a game from a screen shot (for better debugging)|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|improve Robot AI|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Add default voices|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Players can chat with each other from within kajongg|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Define a central game server, making it easier to play over the internet (no more tweaking of firewalls for the server side)|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureInProgress|Kajongg|Add support for other rule variants, starting with Classical Chinese variants|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureTodo|Kajongg|Print rulesets, also more than one in parallel for comparisons|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureInProgress|libkdegames|[http://community.kde.org/Games/API_cleanup Major cleanup and rewrite]|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureInProgress|KGoldrunner|Add the Gold Rush II championship game (20 levels), contributed by Gabriel Miltschitzky|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Add solution files to some KGoldrunner games, possibly using Get Hot New Stuff|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Simplify the XML descriptions of puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Add XML and Desktop files for seven new two-dimensional puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Add XML and Desktop files for three new three-dimensional puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Improve the quality and relevance of KSudoku hints|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Make Load and Save work correctly for all puzzle types, including display of small markers/notes and restart of the puzzle clock from a saved value|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Integrate the new generator/solver and the old KSudoku code more closely|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Make puzzle features easier to see and use by improving highlighting, control and settings in both 2-D and 3-D puzzles and adding keyboard input to 3-D puzzles|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Gwenview|Fullscreen browse|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|JuK|last.fm scrobbling|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|JuK|cover-fetching from last.fm|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureInProgress|JuK|MPRIS2 support|alex.merry@kmail.net|Alex Merry}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|Kopete|Add option to group all offline users into a &amp;quot;Offline Users&amp;quot; group|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
{{FeatureDone|Kopete|Show contact's status change in chat window|igor.poboiko@gmail.com|Igor Poboiko}}&lt;br /&gt;
{{FeatureDone|Kopete|Add context option &amp;quot;rename&amp;quot; to contacts and allow changing custom display name inline.|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Akonadi Google Resources|Move contacts and calendars resources from Akonadi Google project to kdepim-runtime|dan@progdan.cz|Dan Vratil}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|KTnef|Bring back KTnef from the KDE3 days. KTnef is a standalone TNEF attachment viewer|winter@kde.org|Allen Winter}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Extend Akonotes Format|Extend the akonotes format to support features required by zanshin and kolab|chrigi_1@fastmail.fm|Christian Mollekopf}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Now Playing|replace with QML version|alex.merry@kdemail.net|Alex Merry}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add view profiles, incl. editor/manager|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureDone|Lokalize|Optimize TM fuzzy searching||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureDone|Lokalize|File search tab||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|.ts support||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|diagram auto layout support|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|diagram graphviz dot export |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/PIM/Akonadi/Trashhandling</id>
		<title>Projects/PIM/Akonadi/Trashhandling</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/PIM/Akonadi/Trashhandling"/>
				<updated>2011-07-19T20:50:51Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: Trashhandling documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The akonadi trashhandling are a couple of convenience classes, to make it easy for developers building on akonadi, to provide a trashbin in their application. It's also meant to standardize the way trashed items are handled among several applications using the same akonadi resources.&lt;br /&gt;
&lt;br /&gt;
The uniform handling opens possibilities (which are not yet realized), like mapping the flags used to mark trash to remote locations (i.e. IMAP server), or creating a janitor agent which does automatic cleaning in a configured interval.&lt;br /&gt;
&lt;br /&gt;
The trashhandling consists of the following parts:&lt;br /&gt;
&lt;br /&gt;
=== TrashJob ===&lt;br /&gt;
&lt;br /&gt;
Mark entity as trash with the EntityDeletedAttribute and moves it to a configured trash collection (if configured).&lt;br /&gt;
&lt;br /&gt;
The default behaviour is to move the item to the trash collection which is configured in TrashSettings. If this trash collection is not available, the entity is kept in place.&lt;br /&gt;
&lt;br /&gt;
All sub entites of a collection which is marked as trash are also marked as trash, and get the parent collection of the collection which was marked as trash as restore collection. This ensures that it is possible to restore items from trash, which were originally moved to trash together with the parent collection.&lt;br /&gt;
&lt;br /&gt;
The job has also an option to automatically delete items which are already marked as trash.&lt;br /&gt;
&lt;br /&gt;
=== RestoreJob ===&lt;br /&gt;
&lt;br /&gt;
Restore the entity from the trash collection to the original collection and remove the EntityDeletedAttribute.&lt;br /&gt;
&lt;br /&gt;
By default the RestoreJob tries to move the entity back to the original location, which is saved in the EntityDeletedAttribute.&lt;br /&gt;
If this collection is not available anymore, it tries the original resource root as fallback, if also not available it aborts.&lt;br /&gt;
&lt;br /&gt;
For this case it is possible to configure a special restore collection on the job, to which the item is restored.&lt;br /&gt;
&lt;br /&gt;
If the move was successful the EntityDeletedAttribute is removed from the entity (and from all subentities).&lt;br /&gt;
&lt;br /&gt;
=== EntityDeletedAttribute ===&lt;br /&gt;
&lt;br /&gt;
Marks the entity as deleted and stores the restore collection/resource.&lt;br /&gt;
Resources could map this flag to an appropriate flag as the MarkAsDeleted flag in IMAP.&lt;br /&gt;
&lt;br /&gt;
=== TrashSettings ===&lt;br /&gt;
&lt;br /&gt;
Store a trashcollection for a resource.&lt;br /&gt;
&lt;br /&gt;
In the future further trash related settings, as the time before the janitor agent deletes items could be stored here.&lt;br /&gt;
&lt;br /&gt;
TODO: atm. the settings are never removed. Even if the configured resource or trash collection is removed.&lt;br /&gt;
&lt;br /&gt;
=== TrashFilterProxyModel ===&lt;br /&gt;
&lt;br /&gt;
Either shows all items with the EntityDeletedAttribute or hides all entities with the EntityDeletedAttribute.&lt;br /&gt;
It is using a KRecursiveProxyModel, so also trash items which are in a non trash collection are shown in the trash.&lt;br /&gt;
&lt;br /&gt;
=== StandardActions ===&lt;br /&gt;
&lt;br /&gt;
Provides 6 standard actions:&lt;br /&gt;
&lt;br /&gt;
* MoveItemToTrash&lt;br /&gt;
* MoveCollectionToTrash&lt;br /&gt;
* RestoreItemFromTrash&lt;br /&gt;
* RestoreCollectionFromTrash&lt;br /&gt;
* MoveToTrashRestoreCollection&lt;br /&gt;
* MoveToTrashRestoreItem&lt;br /&gt;
&lt;br /&gt;
While the first 4 are trivial, the last two provide a single action, which changes its behaviour depending if the EntityDeletedAttribute is set or not. As it doesn't make sense to restore entites which are not in trash or move entities to trash which are in trash, I believe it is the most common usecase and is what I use myself.&lt;br /&gt;
All new actions need the EntityDeletedAttribute fetched in order to work properly.&lt;br /&gt;
I had to add some bits to the internal structure of the standardactionmanager to make it possible to change description/icon/etc. for a single action, everything existing should continue to work as expected though.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Trash Janitor Agent (TODO) ===&lt;br /&gt;
Goes trough all collections, and deletes items after a configured period of time, if they are marked as trash.&lt;br /&gt;
This configuration is in TrashSettings on a per resource basis, but could be overridden by a configuration in the EntityDeletedAttribute&lt;br /&gt;
&lt;br /&gt;
This is not work in progress atm. but more a concept. I also don't plan to add this anytime soon, so feel free to do it if you need it now.&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/PIM/Akonadi</id>
		<title>Projects/PIM/Akonadi</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/PIM/Akonadi"/>
				<updated>2011-07-19T20:41:03Z</updated>
		
		<summary type="html">&lt;p&gt;Cmollekopf: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Akonadi TODO ==&lt;br /&gt;
The following list contains the things which need to be done for Akonadi.&lt;br /&gt;
&lt;br /&gt;
Note: The person noted in the &amp;quot;Contact&amp;quot; column is not necessarily the one implementing that feature, but the one who can tell you what to do and how to help, i.e. you can also contribute to those tasks ;-)&lt;br /&gt;
&lt;br /&gt;
There is also a more detailed page about bugs and missing features of things that are currently ported [[Projects/PIM/Akonadi/PortingStatus|here]].&lt;br /&gt;
&lt;br /&gt;
=== Core ===&lt;br /&gt;
&lt;br /&gt;
==== KDE 4.1 / Akonadi 1.0 ====&lt;br /&gt;
&lt;br /&gt;
Urgent tasks that need to be finished for the KDE 4.1 release ('''May 19th'''):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Item streaming in ItemSync/ResourceBase|As discussed in Osnabrueck|Tom/Volker}}&lt;br /&gt;
{{FeatureDone|Payload serialization format versioning|see below&lt;br /&gt;
tokoe@kde.org|Tobias}}&lt;br /&gt;
{{FeatureDone|API for additional item parts|As discussed in Osnabruck|Volker/Tobias}}&lt;br /&gt;
{{FeatureDone|Infrastructure for showing additional dialogs from agents/resources|As discussed in Osnabrueck|Tom}}&lt;br /&gt;
{{FeatureDone|Allow to limit ItemFetchJob to current cache content|Prevents search index feeder agents from downloading all remote data|vkrause@kde.org|Volker}}&lt;br /&gt;
{{FeatureDone|Fix API for item/collection modifications|See Osnabrueck meeting notes for details|vkrause@kde.org|Volker}}&lt;br /&gt;
{{FeatureDone|Plugin Versioning|For serializer plugins, also check using Qt plugin stuff instead of the libkdepim plugin framework|tokoe@kde.org|Tobias}}&lt;br /&gt;
{{FeatureDone|Tray app|small app to control the server and have a something that can report errors|tomalbers@kde.nl|Toma}}&lt;br /&gt;
{{FeatureDone|Backup support|Dump &amp;amp; Restore database contents, also useful when upgrading to a newer database version|tomalbers@kde.nl}}&lt;br /&gt;
{{FeatureDone|Akonadi Artwork|Icon for the tray app|tomalbers@kde.nl|Toma}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KDE 4.2 / Akonadi 1.1 ====&lt;br /&gt;
&lt;br /&gt;
That's the stuff we want to have in 4.2, very roughly ordered by priority. Releases are scheduled for early January 2009.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Server error reporting|Helpful error message when the server cannot be started or if there is some other problem communicating with it.|vkrause@kde.org|Volker}}&lt;br /&gt;
{{FeatureDone|KResource migration tool|For KABC and KCal resources, setting up Akonadi &amp;lt;-&amp;gt; KResource bridges where needed|Volker}}&lt;br /&gt;
{{FeatureDone|KResource bridges|Basically finished, needs more testing|Kevin}}&lt;br /&gt;
{{FeatureDone|Distribution Lists|Serializer Plugin and resource support|Tobias,Kevin}}&lt;br /&gt;
{{FeatureDone|Complete iCal resource|error handling, robustness, legacy formats, file montitoring|Volker}}&lt;br /&gt;
{{FeatureDone|Complete vCard resource|same as iCal + binary legacy format|Bertjan}}&lt;br /&gt;
{{FeatureDone|Item size|Needed by Mailody|toma@kde.org}}&lt;br /&gt;
{{FeatureDone|LINK/UNLINK commands|Managing item references in virtual collections|vkrause@kde.org|Volker}}&lt;br /&gt;
{{FeatureDone|Akonadi Testrunner|Running tests in a self contained Akonadi setup|igor_trindade@yahoo.com.br|Igor}}&lt;br /&gt;
{{FeatureDone|Remote file support for iCal/vCard resources|Replaces net/remote KRes resources|Bertjan}}&lt;br /&gt;
{{FeatureDone|Solid integration|Switch online/offline state in ResourceBase automatically|Bertjan}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KDE 4.3 / Akonadi 1.2 ====&lt;br /&gt;
&lt;br /&gt;
Stuff that went into KDE 4.3 and Akonadi server 1.2.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Fix unit tests|Make unittests work without destroying the production database|Igor/Volker}}&lt;br /&gt;
{{FeatureDone|Filesystem Backend|Store content data in files instead of the database, transfer filehandles instead of data to the client|Andras}}&lt;br /&gt;
{{FeatureDone|IMAP resource||Kevin}}&lt;br /&gt;
{{FeatureDone|Kolab proxy resource||Andras}}&lt;br /&gt;
{{FeatureDone|RID based operations|Item/collection retrieval and modification based on remote identifiers|Volker}}&lt;br /&gt;
{{FeatureDone|Microblog Support|Type library, serializer plugin, identi.ca/twitter resources|Tom}}&lt;br /&gt;
{{FeatureDone|ResourceBase::collectionsRetrievalDone is missing|I'm working around by calling collectionsRetrievedIncremental() with empty collection lists|Volker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KDE 4.4 / Akonadi 1.3 ====&lt;br /&gt;
&lt;br /&gt;
The following is being worked on for KDE 4.4 and Akonadi server 1.3.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Port KAddressBook|Replace with KContactManager|Tobias}}&lt;br /&gt;
{{FeatureDone|Resource testing framework|Automated, shareable tests for resources|Igor/Volker}}&lt;br /&gt;
{{FeatureInProgress|Review change notifications|See the various discussions about shortcomings in that area|Volker,Steve}}&lt;br /&gt;
{{FeatureDone|Collection statistics for sub-trees|Provide a CollectionStatus object covering the full sub-tree in the model, allowing accumulated unread counts etc.|Kevin}}&lt;br /&gt;
{{FeatureDone|Favorite Folder Model|see current KMail|Kevin}}&lt;br /&gt;
{{FeatureDone|Batch jobs for modifying/deleting collections/items|it would be great to have jobs which perform operations on several entities in one go|Volker}}&lt;br /&gt;
{{FeatureDone|Collection streaming support in ResourceBase/CollectionSync|Similar to what is available for items already|Volker}}&lt;br /&gt;
{{FeatureDone|MBox resource||Bertjan}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Scheduled for KDE 4.5 / Akonadi 1.4 ====&lt;br /&gt;
&lt;br /&gt;
Stuff that is planned for inclusion in 4.5, partly already available in the akonadi-ports branch.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Port KOrganizer|Port from KResource to Akonadi|Frank/Sebastian}}&lt;br /&gt;
{{FeatureDone|Account creation wizard|as discussed in Berlin, see below|Volker,Laurent,Tom}}&lt;br /&gt;
{{FeatureInProgress|KMail port|KMail using Akonadi|everyone}}&lt;br /&gt;
{{FeatureInProgress|Remote Search|Delegating searches to resources, see below|Volker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Post KDE 4.5 /Akonadi 1.4 ====&lt;br /&gt;
&lt;br /&gt;
This stuff is currently not considered for 4.5 due to lack of resources. Of course it will be added nevertheless if someone implements it. The list is completely unsorted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Error reporting|Akonadi::Job basically has only one error code: Unknown|Tobias}}&lt;br /&gt;
{{FeatureInProgress|Port KNotes|File resource, serializer plugin, KNotes application, Kontact plugin|}}&lt;br /&gt;
{{FeatureTodo|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|}}&lt;br /&gt;
{{FeatureTodo|CollectionFetchJob/ItemFetchJob should be able to retrieve entities by flags/mimetype|&lt;br /&gt;
This is problematic with change notifications, as they have to know about the filtering with the \Seen flag as well.&lt;br /&gt;
This type of filtering would be possible with full Nepomuk interface though. We don't want yet another query language here. The plan is to fix the nepomuk agent and use that as semi-public interface for now.|}}&lt;br /&gt;
{{FeatureTodo|Nepomuk integration|Generic Item tag/rate/comment, etc.|Tom}}&lt;br /&gt;
{{FeatureTodo|Sync collection tree after creating setting up a resource|see AgentInstanceCreateJob|}}&lt;br /&gt;
{{FeatureTodo|Support standard commands for QUndo framework||}}&lt;br /&gt;
{{FeatureTodo|Conflict detection in resources|See Osnabrueck meeting notes for details|}}&lt;br /&gt;
{{FeatureInProgress|Action framework|see below|vkrause@kde.org|Volker}}&lt;br /&gt;
{{FeatureInProgress|Fix API docs|The libakonadi move as well as the huge API changes following it broke lots of the docs technical and content-wise, see below|Tobias}}&lt;br /&gt;
{{FeatureInProgress|Migration|Data and settings from pre-Akonadi times, see below|}}&lt;br /&gt;
{{FeatureInProgress|Extended notifications|Item change notification do not yet include their source collections (real and virtual)|}}&lt;br /&gt;
{{FeatureTodo|Alternative for Akonadi::ResourceBase|Not using the scheduler to avoid the serialization of operations, see RSS resource. (This will get very complicated. Maybe use a proxy ResourceBase for this, which is thread-pooled?)|}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Supported Types ===&lt;br /&gt;
&lt;br /&gt;
Overview on the current state of support for various types:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Serializer !! Multipart Support !! Models !! Views !! Resources !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|Email||yes||partial||MessageModel, MessageCollectionModel, threading proxy model||?||maildir, IMAP||threading agent&lt;br /&gt;
|-&lt;br /&gt;
|News||yes (1)||partial (1)||(1)||(1)||NNTP||&lt;br /&gt;
|-&lt;br /&gt;
|Contact||yes||no||ContactModel||-||vCard, facebook, KRes||&lt;br /&gt;
|-&lt;br /&gt;
|Events||yes||no||EventModel||-||iCal, KRes||&lt;br /&gt;
|-&lt;br /&gt;
|Notes||no||no||-||-||-||not started yet&lt;br /&gt;
|-&lt;br /&gt;
|Feeds||yes||no||Feeds, Items||?||OPML||GSoC in playground/pim&lt;br /&gt;
|-&lt;br /&gt;
|Bookmarks||yes||no||-||-||local bookmarks, del.icio.us||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(1) see Email&lt;br /&gt;
&lt;br /&gt;
=== Mail specific extensions ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Share mail flag code|Standard actions, standard flag enum/constants, Nepomuk interaction|}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Event/Todo/Journal specific extensions ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Todo proxy model|See KOrganizers To-Do view|Bruno?}}&lt;br /&gt;
{{FeatureDone|Subtype identification|See discussion on kde-pim mailinglist|Kevin}}&lt;br /&gt;
{{FeatureInProgress|Agenda view|KOrganizer agenda view based on Akonadi|Sergio,Kevin}}&lt;br /&gt;
{{FeatureTodo|Month view|KOrganizer month view based on Akonadi|Bruno?}}&lt;br /&gt;
{{FeatureTodo|Timeline view|KOrganizer timeline view based on Akonadi|}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources, Agents and others ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KResource Akonadi bridge|for applications using KCal or KABC|kevin.krammer@gmx.at|Kevin}}&lt;br /&gt;
{{FeatureDone|Akonadi KResource bridge|for data accessed through KCal or KABC resources|kevin.krammer@gmx.at|Kevin}}&lt;br /&gt;
{{FeatureTodo|Expire Agent||}}&lt;br /&gt;
{{FeatureDone|MBOX Resource||Bertjan}}&lt;br /&gt;
{{FeatureDone|Extend IMAP Resource||Kevin/Andras}}&lt;br /&gt;
{{FeatureInProgress|POP3 Resource||Thomas}}&lt;br /&gt;
{{FeatureInProgress|RSS Resource|in akonadi-ports branch ([[Projects/PIM/RSS_framework_for_Akonadi|Details]])|Dmitry/Frank}}&lt;br /&gt;
{{FeatureInProgress|Filter Agent||Szymon}}&lt;br /&gt;
{{FeatureTodo|Search||}}&lt;br /&gt;
{{FeatureTodo| History resource||}}&lt;br /&gt;
{{FeatureInProgress|Filter Rule GUI|Used by filters and searches|Szymon}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Resource status overview (this should list all resources existing in KDE3 or already under development for Akonadi):&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! Resource !! Retrieve Collections !! Retrieve Items !! Change Collections !! Change Items !! Configuration !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|iCal||yes (4)||yes (1) (2)||no||yes||yes||remote file support, file watching with conflict handling&lt;br /&gt;
|-&lt;br /&gt;
|vCard||yes (4)||yes (1) (2)||no||yes||yes||remote file support, file watching with conflict handling&lt;br /&gt;
|-&lt;br /&gt;
|maildir||yes (1) (4)||yes (1) (2)||?||?||yes||&lt;br /&gt;
|-&lt;br /&gt;
|mbox||no||no||no||no||no||not started yet, code exists in KMail&lt;br /&gt;
|-&lt;br /&gt;
|IMAP||yes (1) (4)?||yes (1) (2)||no||no||no||code exists in kio_imap4 and Mailody, support for extensions: quota, ACL, annotations missing, what about Kolab and Scalix?&lt;br /&gt;
|-&lt;br /&gt;
|NNTP||yes (4)||yes (2)||n/a||n/a||yes||Needs support for local collection names and collection hierarchy&lt;br /&gt;
|-&lt;br /&gt;
|Local Bookmarks||?||?||?||?||(3)||Code in akonadi/resources&lt;br /&gt;
|-&lt;br /&gt;
|OpenChange||?||?||?||?||?||Code in akonadi/resources&lt;br /&gt;
|-&lt;br /&gt;
|Facebook||?||?||?||?||?||Code in playground/pim&lt;br /&gt;
|-&lt;br /&gt;
|del.icio.us||?||?||?||yes||no||Code in playground/pim&lt;br /&gt;
|-&lt;br /&gt;
|KABC||yes(6)||yes||no||yes||yes||&lt;br /&gt;
|-&lt;br /&gt;
|KCal||yes(6)||yes||yes(7)||yes||yes||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# only full sync supported currently, need optimization&lt;br /&gt;
# does not yet honor cache policy&lt;br /&gt;
# still relies on QSettings for configuration and/or doesn't provide configuration over D-Bus&lt;br /&gt;
# does not yet provide correct access control settings&lt;br /&gt;
# only adding new items, not changing existing ones&lt;br /&gt;
# availability of child collections depend on whether the KResource plugin has subresources&lt;br /&gt;
# child collections can be added or removed if the KCal plugin can have subresources&lt;br /&gt;
&lt;br /&gt;
=== KResource Migration Status ===&lt;br /&gt;
&lt;br /&gt;
Everything without migration support is implicitly converted to use the compat bridge currently.&lt;br /&gt;
&lt;br /&gt;
[[Image:Akonadi-Kres.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== KABC migration status ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! KResource !! Feature equivalent agent !! Migration support !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|directory|| || ||vCard dir in development&lt;br /&gt;
|-&lt;br /&gt;
|file||vCard file||4.2||binary format no longer supported, migrated to compat bridge instead&lt;br /&gt;
|-&lt;br /&gt;
|groupdav||||||&lt;br /&gt;
|-&lt;br /&gt;
|groupwise||||||&lt;br /&gt;
|-&lt;br /&gt;
|kolab||||||&lt;br /&gt;
|-&lt;br /&gt;
|ldapkio||||||&lt;br /&gt;
|-&lt;br /&gt;
|net||vCard file||TODO||&lt;br /&gt;
|-&lt;br /&gt;
|scalix||||||&lt;br /&gt;
|-&lt;br /&gt;
|slox||||||&lt;br /&gt;
|-&lt;br /&gt;
|xmlrpc||||||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== KCal Migration Status ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
! KResource !! Feature equivalent agent !! Migration support !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|blog||||||&lt;br /&gt;
|-&lt;br /&gt;
|bugzilla||||||&lt;br /&gt;
|-&lt;br /&gt;
|groupdav||||||&lt;br /&gt;
|-&lt;br /&gt;
|groupwise||||||&lt;br /&gt;
|-&lt;br /&gt;
|kabc (birthday)||birthdays||4.3||&lt;br /&gt;
|-&lt;br /&gt;
|kolab||||||&lt;br /&gt;
|-&lt;br /&gt;
|localdir||||||&lt;br /&gt;
|-&lt;br /&gt;
|local||iCal file||4.2||&lt;br /&gt;
|-&lt;br /&gt;
|remote||iCal file||TODO||remote supports different URLs for upload and download, the iCal file agent doesn't, is this needed at all?&lt;br /&gt;
|-&lt;br /&gt;
|featureplan||||||probably obsolete since we don't use the XML featureplan anymore&lt;br /&gt;
|-&lt;br /&gt;
|scalix||||||&lt;br /&gt;
|-&lt;br /&gt;
|slox||||||&lt;br /&gt;
|-&lt;br /&gt;
|xmlrpc||||||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Akonadi Braindump ==&lt;br /&gt;
Ideas/notes etc. on various open issues in Akonadi.&lt;br /&gt;
&lt;br /&gt;
=== Akonadi Standard Actions ===&lt;br /&gt;
&lt;br /&gt;
Idea: Have something like KStandardAction for Akonadi that not only includes the representation of the action but also its state management and the actual operations. Like libakonadi that should be splitted into a generic, type-independent part and be extensible for type-specific actions. This will enable code sharing among many applications and guarantee consistent actions everywhere.&lt;br /&gt;
&lt;br /&gt;
State management: watch selection models of a collection and/or item model.&lt;br /&gt;
&lt;br /&gt;
Use KXMLGUI for context menus in standard views to allow easy extensibility with custom actions.&lt;br /&gt;
&lt;br /&gt;
Generic actions:&lt;br /&gt;
* new collection [done]&lt;br /&gt;
* new virtual collection&lt;br /&gt;
* delete collection [done for single selection]&lt;br /&gt;
* copy collection [done]&lt;br /&gt;
* cut collection&lt;br /&gt;
* paste collection [done]&lt;br /&gt;
* synchronize collection [done for single selection]&lt;br /&gt;
* synchronize resource&lt;br /&gt;
* synchronize everything&lt;br /&gt;
* show collection properties dialog [done]&lt;br /&gt;
* delete item(s) [done]&lt;br /&gt;
* copy item(s) [done]&lt;br /&gt;
* cut item(s)&lt;br /&gt;
* paste item(s) [done]&lt;br /&gt;
* paste native data&lt;br /&gt;
* tag item(s)&lt;br /&gt;
* comment item&lt;br /&gt;
* rate item(s)&lt;br /&gt;
* configure resource&lt;br /&gt;
* add resource? (would need a type parameter, etc.)&lt;br /&gt;
* delete resource&lt;br /&gt;
* manage local subscriptions [done]&lt;br /&gt;
* move to submenu&lt;br /&gt;
* copy to submenu&lt;br /&gt;
&lt;br /&gt;
The list is definitely long enough to make this worthwhile.&lt;br /&gt;
&lt;br /&gt;
=== Collection Model / Collection View ===&lt;br /&gt;
&lt;br /&gt;
Ideas/missing features/bugs of the collection model/view:&lt;br /&gt;
&lt;br /&gt;
* Enable/disable status columns&lt;br /&gt;
* Show status after the name (see KMail)&lt;br /&gt;
* &amp;lt;s&amp;gt;Size column&amp;lt;/s&amp;gt;&lt;br /&gt;
* Save/restore layout&lt;br /&gt;
* &amp;lt;s&amp;gt;Custom collection icons (see KMail, also needed for resource defined special folders (eg. Inbox)&amp;lt;/s&amp;gt;&lt;br /&gt;
* Status tooltips (see KMail in 3.5.9) [still missing quota info]&lt;br /&gt;
* Quick search&lt;br /&gt;
* &amp;lt;s&amp;gt;Favorite folder view as proxy model on top of the normal collection model (FlatCollectionProxyModel might be helpful for there)&amp;lt;/s&amp;gt;&lt;br /&gt;
* Accumulated statistics (unread, total, size)&lt;br /&gt;
* Fix dnd: move/copy/cancel menu always shows up and never has any effect&lt;br /&gt;
&lt;br /&gt;
=== Compatibility ===&lt;br /&gt;
&lt;br /&gt;
Notes on how to keep long-term protocol, source and binary compatibility.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;Detect server version in Akonadi::Session, might be useful in case of protocol extensions/changes&amp;lt;/s&amp;gt;&lt;br /&gt;
* What about database server version updates?&lt;br /&gt;
* &amp;lt;s&amp;gt;Versioning or any other kind of serialization format meta data, we'll need that in case of changes in serialization formats (see eg. Robert's compression patch where this is needed)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;We currently use 32 bit ids, probably hard to change later on, is that enough?&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Plugin versioning&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resource API issues ===&lt;br /&gt;
&lt;br /&gt;
Notes/ideas/complaints about the Akonadi::ResourceBase API:&lt;br /&gt;
&lt;br /&gt;
* Extremely error prone:&lt;br /&gt;
** Scheduler dead-locks when a requested operation is not correctly announced as finished, esp. a problem in error cases.&lt;br /&gt;
** Using the result methods multiple times or when not requested asserts&lt;br /&gt;
* &amp;lt;s&amp;gt;Item streaming is missing, requiring all data to be in memory at once&amp;lt;/s&amp;gt;&lt;br /&gt;
* Non-incremental updates need to know the results of ItemSync to not have to provide all data, even for already existing/unchanged items.&lt;br /&gt;
&lt;br /&gt;
=== API / BC issues ===&lt;br /&gt;
&lt;br /&gt;
Smaller stuff that should be fixed before the ABI freeze and is not yet listed above:&lt;br /&gt;
&lt;br /&gt;
* Cleanup the D-Bus format used by NotificationMessage&lt;br /&gt;
* No mentioning of &amp;quot;IMAP&amp;quot; in the public API, we are not using IMAP&lt;br /&gt;
* Naming and installed location of libraries, headers and executables (see discussion on kde-pim ML)&lt;br /&gt;
* &amp;lt;s&amp;gt;Payload part labels are QStrings, attribute types are QByteArray&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Deployment issues ===&lt;br /&gt;
&lt;br /&gt;
* Multiple access: Should multiple Akonadi instances' mysqlds access a single set of  data files the mysql will likely corrupt the data.  This can happen in any NFS+YP installation where users can log onto any machine and access shared homes.  MySQL relies on filesystem locking to prevent multiple access. [http://dev.mysql.com/doc/refman/6.0/en/multiple-servers.html MySQL multiple instance docu].&lt;br /&gt;
* [http://dev.mysql.com/doc/refman/6.0/en/innodb-restrictions.html InnoDB tables should not be used on NFS].&lt;br /&gt;
* NFS speed: MySQL documentation recommends against locating its data files on network shares.&lt;br /&gt;
* AppArmor: Distros' AppArmor profiles prevent MySQL from writing outside its defined data directory (usually /var/lib/mysql).  This is a problem at least with *buntu and openSUSE.  These will need to be adapted.   It is possible to daisy-chain profiles so that MySQL started by Akonadi receives a different profile to MySQL running standalone.  An empty profile has all rights.  Another possibility is to adapt the general MySQL profile so it can write to ${XDG_DATA_HOME}/akonadi(usually ${HOME/}.local/share/akonadi).  Both support for profile chaining and ${HOME} may depend on the version of AppArmor installed.  What about SELinux?&lt;br /&gt;
* Backup: MySQL data files should not be backed up without telling the mysqld process, otherwise a corrupt backup will be made.  LOCK TABLES and FLUSH TABLES at the least.  A dump can be made or mysqlhotbackup may be used in some circumstances. We should consider sysadmins' backup techniques when planning/promoting Akonadi, as a simple rsync cronjob with running Akonadi will not work. [http://dev.mysql.com/doc/refman/6.0/en/backup.html MySQL backup advice].&lt;br /&gt;
&lt;br /&gt;
=== Account Creation Wizard ===&lt;br /&gt;
&lt;br /&gt;
Notes on the resource configuration wizard discussion.&lt;br /&gt;
&lt;br /&gt;
* WizardBase class&lt;br /&gt;
* Wizard discovery via .desktop files&lt;br /&gt;
* A wizard can configure multiple resources (eg. IMAP + LDAP for Kolab) and non-resources (mailtransport)&lt;br /&gt;
* Optionally hide resources completely covered by wizards in the Add Account dialog&lt;br /&gt;
* List wizards in the Add Account dialog&lt;br /&gt;
* Store Account -&amp;gt; Resources information to offer deletion of depending resources&lt;br /&gt;
&lt;br /&gt;
=== PostgreSQL Support ===&lt;br /&gt;
&lt;br /&gt;
Has been merged for Akonadi server 1.3. We still need a volunteer for continuous testing and maintenance though.&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
&lt;br /&gt;
* Avoid examples using KJob::exec() due to its problematic side-effects.&lt;br /&gt;
* Examples in the ItemCreateJob docs (and maybe others) operate on items in the root collection which does not work at all&lt;br /&gt;
* Resurrect the server API docs (now at http://api.kde.org/kdesupport-api/kdesupport-apidocs/akonadi/server/html/index.html ).&lt;br /&gt;
&lt;br /&gt;
=== Migration of pre-Akonadi data and settings ===&lt;br /&gt;
&lt;br /&gt;
* KCal/KABC&lt;br /&gt;
** switch KRes resources to Akonadi KRes compat resources, use KRes Akonadi compat resource, basically injecting Akonadi inbetween&lt;br /&gt;
** Replace Akonadi KRes compat resources with their ported equivalent&lt;br /&gt;
** Application side does not need migration code, &amp;quot;only&amp;quot; port to Akonadi&lt;br /&gt;
* KMail&lt;br /&gt;
** Should migrate to one resource per account + one for previous local folders&lt;br /&gt;
** Problem: local folders are mixed mbox/maildir&lt;br /&gt;
*** Dedicated KMail compat resource?&lt;br /&gt;
*** Convert everything to maildir first?&lt;br /&gt;
** Flags are stored in proprietary binary format&lt;br /&gt;
* KNode&lt;br /&gt;
** Migrate every account to NNTP resource&lt;br /&gt;
** Local flags should be preserved, stored in proprietary binary format&lt;br /&gt;
** Local subscription state should be preserved (where is that stored?)&lt;br /&gt;
** Local folders using MBOX format + proprietary binary index&lt;br /&gt;
* Akregator&lt;br /&gt;
&lt;br /&gt;
=== Search &amp;amp; Virtual Collections ===&lt;br /&gt;
&lt;br /&gt;
Got their own page by now:&lt;br /&gt;
* [[Projects/PIM/Akonadi/VirtualCollections]]&lt;br /&gt;
* [[Projects/PIM/Akonadi/SearchInfrastructure]]&lt;br /&gt;
&lt;br /&gt;
== KMail Breakdown Plan ==&lt;br /&gt;
The current plan is to put some parts of KMail into a stand-alone&lt;br /&gt;
library, independent of KMail. This increases code reuse (for example, the message composer could be shared with Mailody) and makes the code a lot easier to maintain and to port to Akonadi.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Bodypart formatters||}}&lt;br /&gt;
{{FeatureDone|Reader Window||Andris}}&lt;br /&gt;
{{FeatureDone|Composer: Message Composer||Constantin,Leo}}&lt;br /&gt;
{{FeatureInProgress|Composer: GUI Window||Constantin}}&lt;br /&gt;
{{FeatureDone|Queue Manager for mailtransport||Constantin}}&lt;br /&gt;
{{FeatureInProgress|Templates: Core||Leo}}&lt;br /&gt;
{{FeatureTodo|Templates: GUI||}}&lt;br /&gt;
{{FeatureTodo|Port KMCommands||}}&lt;br /&gt;
{{FeatureDone|Port away from KMMessage and KMFolder* everywhere it is left|An idea might be: wrap KMMsgBase/KMMessage inside a reference counted Message class. Insulate everything else from it by wrapper functions. KMFolder should be easier...|all}}&lt;br /&gt;
{{FeatureInProgress|Migration application for index and other config||Casey}}&lt;br /&gt;
{{FeatureTodo|Port MDNs||}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The Road to World Domination ==&lt;br /&gt;
&lt;br /&gt;
Sort of related so the stuff above but with a scope for all of KDE PIM and beyond.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Item !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Share identity config GUI parts|eg. the signature configuration widget|}}&lt;br /&gt;
{{FeatureDone|Mailtransport Agent|Global shared outbox, central mail sending instance|Constantin}}&lt;br /&gt;
{{FeatureTodo|Recently sent to support in mailtransport|related to above, based on Akonadi/Nepomuk|}}&lt;br /&gt;
{{FeatureInProgress|Composer engine|Shared stuff for KMail/KNode/Mailody: Crypto, editor, editor actions, attachment model, message assembly, etc.|Constantin,Leo}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Akonadi FAQ ==&lt;br /&gt;
&lt;br /&gt;
This FAQ primarily deals with technical and design questions, if you have questions about using Akonadi (such as &amp;quot;I get error X when starting Akonadi&amp;quot;), please refer to [http://userbase.kde.org/Akonadi userbase.kde.org/Akonadi].&lt;br /&gt;
&lt;br /&gt;
=== Where do I find the Akonadi config files? ===&lt;br /&gt;
&lt;br /&gt;
''~/.config/akonadi/''&lt;br /&gt;
&lt;br /&gt;
=== Where does Akonadi store my data? ===&lt;br /&gt;
&lt;br /&gt;
Akonadi merely acts as a cache for your data, the actual content stays where it has always been, .ics/.vcf/MBOX files, local maildirs, IMAP- and groupware servers. There is only a limited amount of data stored exclusively in Akonadi:&lt;br /&gt;
* Data not supported by the corresponding backends, such as email flags in case of maildir/mbox. This is comparable to KMail's binary index files stored alongside these files in pre-Akonadi times.&lt;br /&gt;
* Internal meta-data used by application or resources, such as information about the last synchronization with a backend or translated folder names.&lt;br /&gt;
* Data that has been changed while the corresponding backend has been offline and has not yet been uploaded.&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the Akonadi database? ===&lt;br /&gt;
&lt;br /&gt;
''~/.local/share/akonadi/''&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the source code? ===&lt;br /&gt;
&lt;br /&gt;
There are three different parts of source code:&lt;br /&gt;
* The Akonadi server, which is KDE-independent. Currently, the code can be found at [http://websvn.kde.org/trunk/kdesupport/akonadi/ kdesupport/akonadi]. The server code will likely move to the [http://www.freedesktop.org/wiki/ freedesktop.org project] in the future, the move has already been [https://bugs.freedesktop.org/show_bug.cgi?id=15711 requested].&lt;br /&gt;
* The Akonadi KDE client libraries are in [http://websvn.kde.org/trunk/KDE/kdepimlibs/akonadi/ kdepimlibs/akonadi].&lt;br /&gt;
* Various agents, resources, the Akonadi console and much other misc stuff is in [http://websvn.kde.org/trunk/KDE/kdepim/akonadi/ kdepim/akonadi]&lt;br /&gt;
&lt;br /&gt;
=== Where can I find documentation? ===&lt;br /&gt;
&lt;br /&gt;
The documentation is mainly in the code itself, in the form of doxygen comments.&lt;br /&gt;
You can find the generated documentation on [api.kde.org api.kde.org], for example:&lt;br /&gt;
&lt;br /&gt;
* General documentation, including a design overview, is [http://api.kde.org/kdesupport-api/kdesupport-apidocs/akonadi-git/html/ here]&lt;br /&gt;
&lt;br /&gt;
: Note that some links in the above documentation which point to the server or the KDE client libraries are currently broken, use the links below to access that documentation.&lt;br /&gt;
* Documentation for the KDE Akonadi client library is [http://api.kde.org/4.x-api/kdepimlibs-apidocs/akonadi/html/index.html here]&lt;br /&gt;
* Documentation about the server is [http://api.kde.org/kdesupport-api/kdesupport-apidocs/akonadi-git/html/ here]&lt;br /&gt;
&lt;br /&gt;
=== Which DBMS does Akonadi use? ===&lt;br /&gt;
&lt;br /&gt;
So far only MySQL. There is some work on PostgreSQL support going on though. Basically, every database that is supported by QtSQL can be used, requiring minimal changes in the code at most. However, not all of them provide the features needed by Akonadi (see next two questions).&lt;br /&gt;
&lt;br /&gt;
=== Why not use sqlite? ===&lt;br /&gt;
&lt;br /&gt;
We tried. Really. It can't handle the concurrent access very well, in the best case this means ''very'' slow operations, but we've also seen deadlocks and failing transactions. Once that's fixed in sqlite, adjusting Akonadi to use it again instead of MySQL is no problem.&lt;br /&gt;
&lt;br /&gt;
=== Why not use MySQL/Embedded? ===&lt;br /&gt;
&lt;br /&gt;
We tried that as well, there are two reasons for not using it: No support for the InnoDB engine (which we need for transaction support) and poor availability (only OpenSUSE provided usable packages, needed a patched QSQL driver).&lt;br /&gt;
&lt;br /&gt;
=== Do I need a running MySQL server? ===&lt;br /&gt;
&lt;br /&gt;
No. Akonadi starts its own local MySQL server (unless configured otherwise, see next question). All you need is having the 'mysqld' binary installed at runtime (usually found in the mysql-server package of your distribution).&lt;br /&gt;
&lt;br /&gt;
=== Can Akonadi use a normal MySQL server running on my system? ===&lt;br /&gt;
&lt;br /&gt;
Yes, it can. You find the corresponding settings in ''~/.config/akonadi/akonadiserverrc''.&lt;br /&gt;
&lt;br /&gt;
=== Can I connect multiple Akonadi instances to the same database to share my data between different machines? ===&lt;br /&gt;
&lt;br /&gt;
That does not work unfortunately. Akonadi does not store all relevant data in the database but also uses the file system for configuration and large payload data for example. Also, there is no mechanism to ensure multiple instances have exactly the same version and exactly the same agents and plug-ins installed etc., all of which would be necessary to work on the same database. Finally, there is no notification system to inform the other instances about changes which endangers consistency since the Akonadi server contains internal caches of data in the database. If you want multiple instances to synchronize, use a groupware server (not as bad as it sounds, Kolab for example works with many normal IMAP servers).&lt;br /&gt;
&lt;br /&gt;
If you try this despite the warnings, be aware that there is no safety mechanism in place to prevent you from doing that and you will likely mess up your data in funny ways.&lt;br /&gt;
&lt;br /&gt;
=== I don't like a database server because of backups/running on NFS/etc. ===&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;Deployment Issues&amp;quot; above, we are aware of that and working on it. Some of these, like backup/restore are already implemented. But please be aware that most of this issues also existed before (eg. with KMail's custom binary indexes).&lt;br /&gt;
&lt;br /&gt;
=== Can a single Akonadi instance be used by multiple users? ===&lt;br /&gt;
&lt;br /&gt;
No. There has to be one Akonadi server instance per user. However, it is possible to use a shared database server.&lt;br /&gt;
&lt;br /&gt;
=== Can I access the Akonadi server on a remote machine? ===&lt;br /&gt;
No. Akonadi is not a groupware server. It's a local cache only.&lt;br /&gt;
&lt;br /&gt;
=== What's the differences between Akonadi and EDS? ===&lt;br /&gt;
EDS (Evolution Data Server) is limited to contacts and calendar data, Akonadi is type-independent. Especially, Akonadi is designed to also handle high-volume data such as email. Akonadi and EDS also differ largely in their access protocol on a technical level (Corba/D-Bus vs. local socket with IMAP-like protocol/D-Bus) and also on a protocol level (type specific vs. generic).&lt;br /&gt;
&lt;br /&gt;
=== How do I create a collection? ===&lt;br /&gt;
&lt;br /&gt;
From the developers point of view, there is Akonadi::CollectionCreateJob for that, from the users point of view, most applications allow that, eg. Mailody or akonadiconsole.&lt;br /&gt;
&lt;br /&gt;
However, there is one limitation: Top-level collections can only be created by resources, not by normal applications. The reason for that is that every object (collection or item) is supposed to have an owning resource, that is a resource that is responsible for storing and retrieving that object. There is an ongoing discussion to remove this restriction though.&lt;br /&gt;
&lt;br /&gt;
So, if you want to create a collection eg. for testing purposes, add a resource first. Most Akonadi applications offer an option to do that, a module for KControl is planned as well.&lt;br /&gt;
&lt;br /&gt;
=== How do I disable automatic migration from KDE's traditional framework? ===&lt;br /&gt;
&lt;br /&gt;
The migration tool is controlled by standard KDE configuration file called ''kres-migratorrc''.&lt;br /&gt;
&lt;br /&gt;
Distributors or system administrators wanting to disable the automatism will probably want to that globally, e.g. by editing the installed default configuration file, or by using KDE's configuration hierachy and using a profile config between that and the user level.&lt;br /&gt;
&lt;br /&gt;
The quickest way to deactivate it for one user account only is to use KDE's ''kwriteconfig'' tool to set the respective configration value with a simple copy&amp;amp;paste of the following command:&lt;br /&gt;
&lt;br /&gt;
''kwriteconfig --file kres-migratorrc --group Migration --key Enabled --type bool false''&lt;br /&gt;
&lt;br /&gt;
Please note that at some point KDE applications such as Kontact, KOrganizer, KMail will be using Akonadi directly, at which point migration either has to be enabled or performed manually.&lt;br /&gt;
&lt;br /&gt;
As of KDE 4.4 (and its development releases and when building from SVN trunk) this already applies to KAddressBook and KMail's address book access.&lt;br /&gt;
&lt;br /&gt;
=== How do I completely disable Akonadi startup? ===&lt;br /&gt;
&lt;br /&gt;
{{warning|If you already have applications natively using Akonadi, you of course can't disable Akonadi startup. &amp;lt;i&amp;gt;KAddressBook&amp;lt;/i&amp;gt; (as of KDE 4.4 and its test versions), &amp;lt;i&amp;gt;Mailody&amp;lt;/i&amp;gt;, &amp;lt;i&amp;gt;KMail&amp;lt;/i&amp;gt; (as of KDE 4.4 and its test versions for address book related things) and &amp;lt;i&amp;gt;KPilot&amp;lt;/i&amp;gt; are applications that are already based on Akonadi.}}&lt;br /&gt;
&lt;br /&gt;
Other applications, like &amp;lt;i&amp;gt;KOrganizer&amp;lt;/i&amp;gt;, are not based on Akonadi yet, at the time of writing. Instead, they use the old KResource framework for storing contacts, calendars and notes.&lt;br /&gt;
During the KDE 4.2 beta time, these KResources were automatically migrated to Akonadi-based KResources, the so-called Akonadi compatibility resources. Therefore, applications like KOrganizer would use Akonadi indirectly through KResources, and therefore would start the Akonadi server when being started.&lt;br /&gt;
&lt;br /&gt;
If Akonadi doesn't start up correctly for you, the following should help you to disable Akonadi startup and use your old KResources again.&lt;br /&gt;
&lt;br /&gt;
First, disable automatic migration like described in the above FAQ entry.&lt;br /&gt;
Then, open &amp;lt;i&amp;gt;System Settings&amp;lt;/i&amp;gt;, go to the &amp;lt;i&amp;gt;Advanced&amp;lt;/i&amp;gt; tab and open the &amp;lt;i&amp;gt;KDE Resources&amp;lt;/i&amp;gt; config panel. There, you can configure which type of KResources are used for contacts, calendars and notes. If the migration to Akonadi was successful, you'll probably only see the &amp;lt;i&amp;gt;Akonadi Compatibility Resource&amp;lt;/i&amp;gt; as an active resource, and all others disabled.&lt;br /&gt;
&lt;br /&gt;
To disable Akonadi startup, enable your old resources again, then disable and delete the Akonadi compatibility resource.&lt;br /&gt;
&lt;br /&gt;
=== What is the relation between Akonadi and OpenSync? ===&lt;br /&gt;
&lt;br /&gt;
Akonadi and OpenSync focus on different aspects and complement each other. Akonadi provides a unified way to access PIM data for applications and a framework to implement powerful connectors to varies data sources. OpenSync focus is on syncing two sets of PIM data.&lt;br /&gt;
&lt;br /&gt;
An Akonadi plugin for OpenSync is currently under development, allowing to sync PIM data available through Akonadi with any other system supported by OpenSync, especially mobile phones.&lt;br /&gt;
&lt;br /&gt;
=== When should I use Akonadi? ===&lt;br /&gt;
&lt;br /&gt;
More precisely, when should you use for your application specific data instead of eg. just using a local file directly.&lt;br /&gt;
&lt;br /&gt;
Akonadi is especially useful when you need one the following:&lt;br /&gt;
&lt;br /&gt;
* Different backends for your data, like eg. a local file and a remote server. Akonadi provides a unified interface for application developers to access your data independent of the actual backend.&lt;br /&gt;
* Caching and change replay of remote data. Akonadi has support for that built in, giving you free offline support for any remote backend.&lt;br /&gt;
* Desktop-wide sharing of your data. As soon as more than one application (say your main applications and a plasmoid) accesses the same data you need to deal with locking, conflict detection, change notifications, etc. - or let Akonadi do that for you.&lt;br /&gt;
&lt;br /&gt;
However, if you are just looking for a simple way to store your application data without needing one of the above, using Akonadi usually means more implementation work for relatively little gain.&lt;br /&gt;
&lt;br /&gt;
=== Akonadi needs too much space in my home directory! ===&lt;br /&gt;
&lt;br /&gt;
An empty, unused Akonadi database needs about 100 Mb of disk space. This is due to the MySQL InnoDB log files which work similar to a journal in a modern file system. These files are constant in size and independent of the actual data stored in Akonadi. The default size is optimized for performance on average desktop hardware where the use of 100 Mb of disk space is no problem. In other cases, such as multi-user systems or embedded devices, this default might not be optimal though.&lt;br /&gt;
&lt;br /&gt;
The default size can be configured, globally or per-user. The global configuration file can be found in $PREFIX/share/config/akonadi/mysql-global.conf, the per-user file is in ~/.config/akonadi/mysql-local.conf and overwrites settings of the global file. In any of these files, you can change the settings '''innodb_log_file_size''' and assign it a smaller value than the default (64M).&lt;br /&gt;
&lt;br /&gt;
For this setting to take effect you need to restart Akonadi. With older Akonadi versions (&amp;lt;=1.1.1) you might need to manually remove the InnoDB log files from ~/.local/share/akonadi/db_data for this change to take effect. The log files do not contain data after a clean shutdown and thus can safely be removed while Akonadi is not running.&lt;br /&gt;
&lt;br /&gt;
An alternative approach especially for multi-user systems might be the use of a single, global MySQL server instance.&lt;br /&gt;
&lt;br /&gt;
=== My Akonadi resource seems to randomly hang/stop working! ===&lt;br /&gt;
&lt;br /&gt;
A very common problem of resources based on Akonadi::ResourceBase are &amp;quot;unguarded exit paths&amp;quot; from one of the methods you have reimplemented there. See the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void MyResource::retrieveItems( const Collection &amp;amp;collection )&lt;br /&gt;
{&lt;br /&gt;
  if ( someError )&lt;br /&gt;
    return;&lt;br /&gt;
  itemsRetrieved( myItems );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case of an error you leave retrieveItems() without telling Akonadi::ResourceBase that you are done with the task. Therefore, it is assumed the requested item retrieval takes a bit longer (which is not uncommon for resources for remote backends, results typically come in in a result slot connected to a job class for example) and waits until you announce the task is finished.&lt;br /&gt;
&lt;br /&gt;
The following example does it correctly:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void MyResource::itemAdded( const Akonadi::Item &amp;amp;item, const Akonadi::Collection &amp;amp;parent )&lt;br /&gt;
{&lt;br /&gt;
  if ( noNetwork ) { // transient error&lt;br /&gt;
    deferTask( i18n( &amp;quot;Offline, will retry later.&amp;quot; ) );&lt;br /&gt;
  } else if ( item_not_valid ) { // permanent error &lt;br /&gt;
    cancelTaks( i18n( &amp;quot;Got invalid crap, can't store that.&amp;quot; ) );&lt;br /&gt;
  } else {&lt;br /&gt;
    // store the item here&lt;br /&gt;
    Item newItem( item );&lt;br /&gt;
    newItem.setRemoteId( my_new_remote_id );&lt;br /&gt;
    changeCommitted( newItem );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following methods require explicit notification that a task has been completed:&lt;br /&gt;
* retrieveX&lt;br /&gt;
* any method indicating changes, ie. itemAdded|Changed|Moved|Removed(), collectionAdded|Changed|Moved|Removed()&lt;br /&gt;
* any custom task scheduled with ResourceBase::scheduleCustomTask()&lt;br /&gt;
&lt;br /&gt;
Refer to the API documentation of Akonadi::ResourceBase for the various ways to do that correctly, there are a few different ways, depending on the current task:&lt;br /&gt;
* Successful completion with convenience features, eg. changeCommitted(), itemsRetrieved() etc.&lt;br /&gt;
* Error cases with convenience features, eg. cancelTask(), deferTask()&lt;br /&gt;
* Only indicate completion, with everything else done manually, eg. changeProcessed(), taskDone()&lt;br /&gt;
&lt;br /&gt;
To confirm a resource is affected by this problem, the &amp;quot;Resource Schedulers&amp;quot; tab of akonadiconsole is very useful (needs to be enabled in the context menu first, causes too much slowdown otherwise). It shows the state of the internal task scheduler of your resource, allowing you to spot stuck tasks.&lt;br /&gt;
&lt;br /&gt;
== Information for Developers using Akonadi ==&lt;br /&gt;
&lt;br /&gt;
References to information for developers using or extending Akonadi.&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
* [[Development/Tutorials/Akonadi/Application|Application Development]]&lt;br /&gt;
* [[Development/Tutorials/Akonadi/Resources|Resource Development]]&lt;br /&gt;
* [[Development/Tutorials/Akonadi/SerializerPlugin|Serializer Plugin Development]]&lt;br /&gt;
* [[Development/Tutorials/Akonadi/CreatingAccountWizardPackages|Creating accountwizard packages]]&lt;br /&gt;
* [[Development/AkonadiPorting|Application Porting]]&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
&lt;br /&gt;
* [[Projects/PIM/Akonadi/Testing|Akonadi Testing Framework]]&lt;br /&gt;
* [[Projects/PIM/Akonadi/Development_Tools|Akonadi Development Tools]]&lt;br /&gt;
* [[Projects/PIM/Akonadi/Firstrun|Akonadi Firstrun]]&lt;br /&gt;
* [[Projects/PIM/Akonadi/Trashhandling|Akonadi Trashhandling]]&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdepimlibs-apidocs/akonadi/html/index.html Client Library API documentation]&lt;br /&gt;
&lt;br /&gt;
=== Projects ===&lt;br /&gt;
&lt;br /&gt;
* [[Projects/PIM/Akonadi/Bookmarks|Bookmark support based on Akonadi]]&lt;br /&gt;
* [[Projects/PIM/Akonadi/PortingStatus|Akonadi Port - List of Bugs and Features]]&lt;br /&gt;
&lt;br /&gt;
=== Contact &amp;amp; Getting Involved ===&lt;br /&gt;
&lt;br /&gt;
* #akonadi IRC channel on freenode&lt;br /&gt;
* kde-pim@kde.org mailing-list&lt;br /&gt;
* Google Summer of Code&lt;br /&gt;
** [[Projects/Summer of Code/2009/Ideas#KDE_PIM|Google Summer of Code 2009 Ideas]]&lt;br /&gt;
** TODO: add links for other years&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&lt;br /&gt;
* [http://pim.kde.org/akonadi/ http://pim.kde.org/akonadi/]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Akonadi Internals ==&lt;br /&gt;
&lt;br /&gt;
References to information for developers of Akonadi itself (the above section is of course also relevant for you).&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
&lt;br /&gt;
* [[Projects/PIM/Akonadi/Release_Howto|Akonadi Release Howto]]&lt;br /&gt;
* [[Projects/PIM/Akonadi/Database|Akonadi Database Internals]]&lt;br /&gt;
* [http://api.kde.org/kdesupport-api/kdesupport-apidocs/akonadi/html/ Akonadi Server API documentation]&lt;br /&gt;
&lt;br /&gt;
=== Meeting Notes ===&lt;br /&gt;
&lt;br /&gt;
* [[Projects/PIM/Akonadi/Meeting2008-11|Halloween Sprint 2008]]&lt;br /&gt;
* [http://community.kde.org/KDE_PIM/Meetings/Osnabrueck_7 Osnabrueck 7]&lt;br /&gt;
* [[Projects/PIM/Akonadi/Meeting2009-04|Akonadi April Sprint 2009]]&lt;br /&gt;
* [[Projects/PIM/Meetings/GCDS_2009|GCDS/aKademy 2009]]&lt;br /&gt;
* [[Projects/PIM/Akonadi/Meeting2009-10|Akonadi October Sprint 2009]]&lt;br /&gt;
* [http://community.kde.org/KDE_PIM/Meetings/Osnabrueck_8 Osnabrueck 8]&lt;br /&gt;
* [http://community.kde.org/KDE_PIM/Meetings/Akonadi-2010-05 Akonadi/KDE PIM pre45 sprint 2010]&lt;br /&gt;
&lt;br /&gt;
[[Category:PIM]]&lt;/div&gt;</summary>
		<author><name>Cmollekopf</name></author>	</entry>

	</feed>