Projects

Shared-Desktop-Ontologies (since 2009): An effort to create an open standard for semantic desktop vocabularies.

Nepomuk (since 2006) – Bringing the semantic desktop to KDE. Started as subproject of a larger Europeean research project, the Nepomuk module has found its place in the core of KDE and aims to slowly refactor the way we handle everyday data. I am the original author, maintainer, and main developer of the Nepomuk libraries, the Nepomuk service system, the Nepomuk virtual filesystem integration, and the semantic desktop extensions.

Soprano (since 2006) – The RDF storage and parsing/serialization framework for Qt4 is used in the Nepomuk project for all data storage. I have been the maintainer and core developer of Soprano since my rewrite for version 2.0.

K3b (1998-2010) – Being the original author of K3b, I maintained it for 11 years in which the CD/DVD burning application became the de-facto standard for Linux. K3b is shipped with most major Linux distributions as the default burning application.

FF/M (2005-2006) – An extension of the FF (Fast Forward) action-planning system to allow the usage of external modules (plugins) in planning domains. The development started as part of my diploma thesis.

Astras (1999-2002) – The Airport Surface TRAffic Simulator, emerged from a software project at the university and became the first product of the company Atrics. Astras is a simulation of the airport forefield and is used as a training tool for airport controllers at the Unique Aiport in Zurich.

Recent Posts

Nepomuk Tasks: KActivityManager Crash

After a little silence during which I was occupied with Eastern and OpenLink related work I bring you news about the second Nepomuk task: the KActivityManager crash.

Ivan Cukic already “fixed” the bug by simply not using Nepomuk but an SQLite backend (at least that is how I understood it, correct me if I am wrong). However, I wanted to fix the root of the original problem.

Soprano provides the communication channel between Nepomuk and its clients. It is based on a very simple custom protocol going through a local socket. So far QLocalSocket, ie. Qt’s implementation was used. The problem with QLocalSocket is that it is a QObject. Thus, it cannot live in two threads at the same time. The hacky solution was to maintain one socket per thread. Sadly that resulted in complicated maintenance code which was impossible to get right. Hence crashes like #269573 or #283451 (basically any crash involving The Soprano::ClientConnection) were never fixed.

A few days ago I finally gave up and decided to get rid of QLocalSocket and replace it with my own implementation. The only problem is that in order to keep Windows compatibility I had to keep the old implementation around by adding quite a lot of #ifdefs.

And now I could use some testers for a Soprano client library that does only create a single connection to the server instead of one per thread. I already pushed the new code into Soprano’s git master. So all you need to do is run KDE on top of that.

Oh, and while at it I finally fixed the problem with re-connecting of clients. So now a restart of Nepomuk will no longer leave the clients with dangling connections, unable to perform queries. That fix, however, is in kdelibs.

Well, the day was long, I am tired, and this blog post feels a little boring. So before in addition to that it gets too long I will stop.

  1. Nepomuk Tasks: Let The Virtuoso Inferencing Begin 8 Replies
  2. Akonadi, Nepomuk, and A Lot Of CPU 8 Replies
  3. Nepomuk Tasks – Sponsor a Bug or Feature 58 Replies
  4. Keeping Your GitHub Fork Up-To-Date 1 Reply
  5. Virtuoso Open-Source Moved to GitHub 5 Replies
  6. You do not need to know RDF or FOAF to use WebID 2 Replies
  7. WebID – A Guide For The Clueless 7 Replies
  8. Nepomuk Gives Back Your CPU Cycles… 27 Replies
  9. Something Like Goodbye 19 Replies