Hi folks,

I have started updating the Wiki with information about the new architecture 
of Kat 0.7.0 (Lilith). Please have a look at this page and report about lacks 
of clarity and also errors/typos contained in it:

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

If you don't understand a concept, please use the mailing list to report your 
doubts. If you have suggestions about ways to enhance the page, please don't 
hesitate.

Bye

Roberto

Here the text of the page I have reviewed today (please ignore the rest of the 
page. It has still to be reviewed):

Introduction
A system that has to be developed incrementally over an extended period of 
time should be designed with expandability and modularity in mind. 
Expandability means considering how the future capabilities of the system can 
be achieved within the context of the current system design and 
implementation. Expandability also means including the potential for 
unplanned capabilities. 
Modularity means that every module can be modified without the need of 
modifying other parts of the architecture. In a distributed development 
environment, modularity also means that a team can safely focus on the 
development of a module without having to maintain a strict connection with 
the other teams. Every developer involved in a distributed project knows what 
it means. 
Kat Desktop Search is such a system and version 0.7.0 (Lilith) marks a 
watershed in the history of the project, having been completely redesigned in 
order to offer the highest levels of expandability, modularity, flexibility 
and reliability. 
First of all, the new API (Application Programming Interface) has been 
redesigned in order to allow the management of any kind of information 
objects, not only files and directories. 
In Kat, every information item (representing an information object) is defined 
as a series of couples tag/value. The tags that can be used for describing a 
particular item are defined by the handler of the information space the item 
belongs to. 
The global set of information objects contained in a computer has been divided 
in subsets called information spaces, each of which differs from the others 
in terms of objects handled and ways to extract information from them. 
Examples of information spaces in Kat are the file system and the email 
system. For a list of the information spaces handled by Kat, please read the 
chapter about the Space class. 
The objects in charge of handling the various information spaces, called 
miners, are built as plugins in Kat's architecture, so that adding a handler 
for a new information space does not require changes in the architecture 
itself but only the implementation of a plugin. 
Every miner has not only to define the tags that can be used to represent the 
items that belong to the space, but also the way information can be extracted 
from the information objects. 
An extreme emphasis on modularity and expandability can also be noticed in the 
design of the persistence layer, being it based on a plugin architecture that 
allows the rapid implementation of new repository plugins. 
Kat 0.7.0 includes two repository backends: 
- SQLite3 
- CLucene 
Other backends, like PostgreSQL and MySQL, are in our agenda and may become 
available soon. 
The information about the filesystem space is updated automatically whenever a 
file/directory is created, deleted or modified. This is done by reacting to 
the notification messages emitted by the inotify kernel module present in all 
linux kernels after version 2.6.12. 
The component of Kat in charge of maintaining the filesystem space up-to-date 
is the kat filesystem daemon, a KDED daemon which is run automatically at 
startup and continues to run in background without interfering with the 
normal activities of the computer. Particular attention has been paid in 
order to maintain the memory footprint and the CPU usage at the lowest levels 
possible. 
Every miner has to define its own way to extract the information from the 
objects it manages. The email miner (currently under development), for 
example, collaborates with the email applications in order to populate and 
update its information space. 
Other miners, like the Google miner (also under development) do not populate 
the information space. They simply return collection of information items in 
response to a query.


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Kat-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kat-development

Reply via email to