After months of improving my skills with Python and PyGTK and reading documents about semantic web and its integration with Desktops Interfaces (like GNOME or KDE) a lot of improvements have been made in Vazaar. This is an overview of the current state of development.
The presentation layer, the GUI, is more difficult to develop than I’ve ever thought. Althought the concept is simple: given any kind of data, transform them into triples (subject, predicate, object) and operate with them, the time consumed to create an infrastructure around the program has been very high.
As resources can be added at any time, I had to develop a system of queues (qIn and qOut). Furthermore, I had to deal with very high responsiveness times. It’s very annoying when the GUI gets frozen because the kernel is working in other stuff. So I had to implement threads (one thread for the kernel and another thread for the GUI). Along the way, I’ve found a lot of code (see source code in Launchpad) which has helped me to carry on.
In some way, I would like to forget these kind of glitches when I’m developing a Desktop application (not a kernel module). Maybe I’ve learnt something about gtk threads but nothing interesting for this project. Never mind…
I’m still reading some documents and asking about how to create a data model around NEPOMUK. By using the semantic web paradigm things change a lot. There are no database records or tables. Instead there are thousands (or hundreds of thousands) of triples.
But it looks easiest than I thought, at the moment.
Everything is a resource (even collections). A resource has a unique identifier (UUID objects according to RFC 4122). Every resource belong to a unique Nepomuk class. They are a small subset of classes with their properties. Examples of Nepomuk classes are:
- nfo:Feed
- nfo:Website
- nfo:RemoteDataObject
- nfo:Image
- nfo:Audio
- nfo:Clipboard (this class doesn’t belong to NFO but I need it until I find a smart solution for copypaste operations).
Read the rest of this entry »