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
