KubuntuFileSearchWithKat

Summary

Improve Kubuntu File Search Using Kat

Scope

Bring Kat up to 1.0 by integrating it with clucene engine, giving it a great user interface and integrating with Konqueror and KDE.

Use Cases

Krissy wants to find her dissertation which is lost somewhere on her computer, Kat will let her find it easily using some search strings.

Introduction

The goal of the Kat project is to design and develop a complete desktop search environment for KDE that would let you search your own computer in the same way you would search the Internet.

The search abilities of the environment will not be limited to the retrieval of information stored in the file system. A modern computer contains lots of information that is stored outside the file system, like email addresses, contact information, playlists, rss feeds and others.

In order to allow the maximum grade of flexibility, the Kat API is being rewritten around the concept of atomic information. Different information object can be built using small bricks called tags.

In order to simplify the development of different backends for Kat, the storage layer has been redesigned as a pluggable system. At least 2 backends will be developed directly by the Kat team: SQLite3 and CLucene. Other backends, like PostgreSQL and MySQL are planned.

Also the information spaces and objects have been redesigned as plugins. This means that the ability to manage a new information object can be added to Kat without modifying the API.

Rationale

The actual search abilities of KDE are rather limited. A modern operating environment needs the ability to allow the users to find the bits of information they are searching for in a simple and intuitive way.

The population of the repository has to be performed automatically, without user intervention, in the less invasive way possible. The file system, for example, has to be indexed during computer idle times and a change in a file or directory has to be notified to the indexer that will update the information stored for that file or directory. Kat already does this using the inotify kernel module.

The population of a repository containing information about emails, contacts and schedules, has to be performed in collaboration with the applications normally used for accessing that kind of information, namely KMail and KContact.

The GUI of the Kat desktop search environment has to be redesigned with usability in mind. Moreover the functionalities of Kat should be melted into the KDE operating environment, so that it will be possible to use them even without knowing anything about Kat. The first of this kind of integrations is surely the one regarding Konqueror and the default Open File dialog.

Design

As mentioned before, the old API showed its limits and has been redesigned with the goal of flexibility in mind. The design of the new API will allow developers to provide plugins for both the repositories (the storage layer) and the spaces (the information management layer).

The API is being rewritten and documented using Apidox. You can see the progress of this effort on our wiki:

http://kat.mandriva.com/wiki/index.php/Explanation_of_the_new_API

and also on our automated apidox webpages:

http://kat.mandriva.com/apidox/

We are perfectly aware that the Kat API, in order to be accepted and used by other developers must be fully and professionally documented.

We have also started to build a complete set of test suites, so that every single method of every single class will be tested before the changes are committed to SVN.

The indexer/scheduler has to be completely rewritten in order to use less resources and be more reliable. Lots of new plug-ins have to be implemented for the MIME types still not managed by Kat.

The actual full text indexer has to be enhanced by using clucene. The client GUI has to be simplified and redesigned following the rules of usability. The search features of Kat have to be embedded in KDE, especially in Konqueror and in the standard FileOpen dialogue so that all application can use them directly.

Implementation plan

Our implementation plan is the following:

1. Finish the implementation of the new API

2. Finish the implementation of the new File System Space daemon

3. Redesign the GUI

4. Integrate Kat with Konqueror

Milestones:

*31 January 2006

  • Release 0.7.0 New Kat API with Apidox documentation New indexer New query system

*28 February 2006

  • Release 0.8.0 New GUI New scheduler to start the daemon on idle times of the PC

*31 March 2006

*30 April 2006

  • Release 1.0.0 Fix all critical bugs Finish i18n translations

Packages Effected

kat, clucene, konqueror, kdelibs

Notes

The license for all of Kat code is GPL v2

Minor (maintenance) releases will be made between major releases

Homepage: http://kat.mandriva.com

SVN repository: http://websvn.kde.org/trunk/playground/base/kat/

IRC channel: #kat on irc.freenode.net

Comments

  • MikkelKamstrupErlandsen : There's also the option of using Tracker as indexing engine. Tracker communicates over DBus and it is an easy task to write a client for it Python (I know because I did a very-close-to-fully-functional one for Gnome with PyGTK). My Kat and KDE knowledge is not very good so I don't know if this is feasible. You might want to check out the IntegratedDesktopSearch spec.

KubuntuFileSearchWithKat (last edited 2008-08-06 16:16:23 by localhost)