Die semantische Suche Nepomuk war seit ihrer Einführung in KDE heftig umstritten – sowohl bei Benutzern als auch bei Anwendungsentwicklern. Mit den KDE Applications 4.13 weicht sie nun einer neuen Lösung namens Baloo. Auch die legt einen holprigen Start hin.
Desktop-Umgebungen sind recht dumm. Das merkt der Anwender spätestens dann, wenn er eine Datei sucht, sich aber partout nicht mehr an ihren Namen erinnern kann. Abhilfe soll der so genannte semantische Desktop schaffen.
Semantische Suche
Ein solcher Desktop merkt sich, wann welche Daten angefallen sind und in welcher Beziehung sie zueinander stehen. Dank dieser Informationen kann ein User beispielsweise eine Datei auf der Festplatte suchen lassen, die der Kollege Müller im März per E-Mail geschickt hatte.
Auch die KDE-Entwickler wollten ihrer Desktop-Umgebung eine passende semantische Suche spendieren. Sie griffen dabei auf die Ergebnisse des Forschungsprojekts Nepomuk (Networked Environment for Personalized, Ontology-based Management of Unified Knowledge, Abbildung 1, [1]).
Das Projekt hatte die Europäische Union von 2006 bis 2008 mit mehreren Millionen Euro finanziert. Es sollte alles Notwendige liefern, um die Entwicklung eines semantischen Desktops voranzutreiben und zu vereinfachen.
Nepomuk, RDF und andere Kalamitäten
So schrieb Nepomuk beispielsweise das Resource Description Framework, kurz RDF, zur Beschreibung und Speicherung der Beziehungen vor [2]. Die Implementierung von Nepomuk in KDE sammelt bei allen KDE-Anwendungen Informationen über die gespeicherten Daten ein, verknüpft sie, bereitet sie auf und stellt sie dann der eigentlichen Suchfunktion zur Verfügung.
Seit der Einführung von Nepomuk unter KDE 4 beklagten viele Benutzer immer wieder dessen schlechte Performance und mangelnde Stabilität. Anwendungsentwickler wiederum fanden das API zu kompliziert und wünschten sich zusätzliche Funktionen. Die KDE-Entwickler besserten im Laufe der Jahre zwar nach, viele Anwender deaktivierten Nepomuk aber auch weiterhin. Insbesondere bei der Interaktion mit Akonadi, dem Unterbau der PIM-Programme, erzeugte Nepomuk eine zu hohe Last.
Virtuoso, Vishuoso und ein Neustart
Als wesentlichen Bremsklotz identifizierten die KDE-Entwickler die im Hintergrund werkelnde Virtuoso-Datenbank, in der Nepomuk seine RDF-Daten einlagerte. Virtuoso selbst ging zwar recht flott zu Werke, beanspruchte aber extrem viel Hauptspeicher. Die KDE-Entwickler begannen daher, einen eigenen RDF-Speicher namens Vishuoso zu implementieren [3]. Dabei stolperten sie jedoch immer wieder über die Vorgaben aus dem Forschungsprojekt der EU. Die waren teilweise vage, lückenhaft und mitunter sogar doppelt [4].
Aus diesen Gründen entschlossen sich die KDE-Entwickler zu einem radikalen Schritt: Sie warfen RDF samt dem alten Nepomuk über Bord und entwickelten einen Nachfolger namens Baloo [5]. Im Gegensatz zu Nepomuk soll die Software mit dem Namen eines Dschungelbuch-Protagonisten (“Probier’s mal mit Gemütlichkeit”) weniger Ressourcen verbrauchen, zuverlässiger zu Werke gehen und schneller bessere Suchergebnisse liefern. Intern ist Baloo modular aufgebaut, sodass sich zukünftig einfacher neue Funktionen hinzufügen und die vorhandenen leichter verbessern lassen. Zudem soll das generalüberholte Design Ausfälle verhindern.
Die KDE-Entwickler haben Baloo allerdings nicht komplett neu programmiert, sondern Codeteile wiederverwendet. Sie bezeichnen daher Baloo auch als die “nächste Generation der Nepomuk-Suche”. Die Änderungen an der Programmierschnittstelle fallen daher ebenfalls überschaubar aus, Anwendungsentwickler sollen ihre Software relativ einfach anpassen können.
Relationen und Stores
Baloo verwaltet Relationen zwischen zwei “eindeutig identifizierbaren Bezeichnern” (Uniquely Identifiable Identifiers). Ein File »Datei« besitzt beispielsweise den Unique Identifier »file:x« , während Akonadi für die meisten PIM-Daten einen Unique Identifier der Form »akonadi:?item=x« erstellt.
Jede Relation wandert wiederum in einen eigenen, für sie passenden Data Store. Im einfachsten Fall ist das eine Tabelle mit zwei Spalten in einer SQlite-Datenbank. Das Speicherformat und das API der Data Stores schreibt Baloo absichtlich nicht vor. Das hat den Vorteil, dass sich der Data Store auf die zu speichernden Informationen maßschneidern lässt und Baloo so Daten optimal speichert.
Die eigentliche Suche führen die so genannten Search Stores aus. Jeder Search Store kümmert sich nur um ganz bestimmte Daten. So sucht beispielsweise einer ausschließlich nach Dateien (File Search), während ein Kollege in E-Mails wühlt (E-Mail Search) und ein dritter in Kontakten fahndet (Contact Search). Jeder dieser Search Stores muss ein vorgegebenes API anbieten, über das sich die Suche anstoßen lässt. Zusätzlich dürfen sie aber auch noch weitere eigene APIs bereitstellen.
Derzeit verwaltet Baloo selbst ausschließlich Dateien und bringt dafür einen passenden Search Store und einen Data Store mit. Die gesammelten Daten landen in einer SQlite-Datenbank. Bei der Suche hilft zusätzlich die Software Xapian, welche den gesammelten Datenbestand indexiert. Akonadi speichert bereits alle seine PIM-Daten selbst, die Suche in diesem Bestand übernimmt jeweils ein Search Store für die Kontakte und für die E-Mails [6]. Dank dieser neuen Architektur aus einzelnen Data- und Search-Stores soll Baloo nur noch wenig Speicher mit Beschlag belegen und extrem schnell Suchergebnisse liefern.
Ein ungezähmter Bär auf der freien Wildbahn
Bereits nach zwei Monaten Entwicklungszeit lief die neue semantische Suche so stabil, dass sich die KDE-Entwickler dazu entschlossen, Baloo anstelle von Nepomuk den KDE Applications 4.13 beizulegen. Wer schon die KDE SC 4.13 nutzt – beispielsweise mit Kubuntu 14.04 von der Heft-DVD –, sucht auch schon mit Baloo, vorausgesetzt die entsprechende Anwendung unterstützt die neue semantische Suche.
Umgestellt sind bereits unter anderem die Kontact-Programme, der Dateimanager Dolphin, Gwenview und der Plasma Desktop. Den aktuellen Stand verrät die Wiki-Seite unter [7]. Steigt ein Anwender auf die KDE Applications 4.13 um, migriert diese bereits alle vorhandenen Tags, Bewertungen und Kommentare nach Baloo. Dafür zuständig ist der »nepomukbaloomigrator« .
Holpriger Start mit vielen Problemen
Schon kurz nach der Veröffentlichung der KDE Applications 4.13 mehrten sich in Internetforen die Problemmeldungen (etwa [8]). Offenbar erzeugt der Indexer auf einigen Systemen eine extrem hohe Last, frisst dabei mächtig viel Hauptspeicher und foltert die Festplatte. Im Gegensatz zu Nepomuk lässt sich Baloo jedoch nicht mehr abschalten.
Als Workaround raten die Entwickler dazu, das Homeverzeichnis von der Suche auszunehmen (Abbildungen 2 und 3). Da Baloo ausschließlich das Heimatverzeichnis betrachtet, schaltet diese Maßnahme gleichzeitig auch die Indexierung ab. Unter Umständen starten allerdings trotzdem die beiden Dienste »baloo_file_cleaner« und »baloo_file_extractor« , die munter weiter das System belasten und sogar in bestimmten Situationen vorhandene Dateien und Dokumente beschädigen können.
Der Anwender sollte daher zusätzlich auch noch den automatischen Start von Baloo abschalten. Unter Kubuntu reicht dazu der folgende Befehl völlig aus:
sudo mv /usr/share/autostart/baloo_file.desktop /usr/share/autostart/baloo_file.desktop.backup
Eine andere Möglichkeit wäre, die versteckte Datei »$HOME/.kde/share/config/baloofilerc« (Abbildung 4) zu öffnen und darin »Indexing-Enabled=true« auf »false« zu setzen. Schließlich lässt sich der Indexer auch manuell anhalten [9]:
qdbus org.kde.baloo.file /indexer suspend
Dieser Befehl kann auf einigen Systemen jedoch den kompletten KDE-Desktop zu Fall bringen. Einige Nutzer griffen sogar zur ganz harten Keule und ersetzten die Baloo-Programmdateien durch Symlinks auf »/dev/true« , doch empfehlenswert scheint das nicht.
Diskussionen
Wer die Links wie in Listing 1 umbiegt, muss folglich mit “interessanten” Seiteneffekten rechnen. Auf Notebooks, die gerade an einer Batterie nuckeln, pausiert Baloo übrigens automatisch. Der stets aktive Indexer sorgte auch auf der Open-Suse-Mailingliste für heftige Diskussionen [10]. Jos Poortvliet, Mitglied der KDE Marketing Working Group, sah sich schließlich zu einer Erklärung in seinem Blog genötigt.
Listing 1
Baloo töten
01 sudo mv /usr/bin/baloo_file_extractor /usr/bin/baloo_file_extractor.backup 02 sudo mv /usr/bin/baloo_file_extractor /usr/bin/baloo_file_cleaner.backup 03 sudo ln -s /bin/true /usr/bin/baloo_file_extractor 04 sudo ln -s /bin/true /usr/bin/baloo_file_cleaner
Unter dem Titel “Stürme und Wassergläser” [11] weist er zunächst den Vorwurf zurück, Baloo sei zu wenig getestet worden. Der Hauptentwickler Vishesh Handa und viele andere Helfer hätten alles dafür getan, eine stabile Suchfunktion auszuliefern. Es habe auch vor der Release explizit die öffentliche Aufforderung zum Testen gegeben [12]. Es sei daher frustrierend, dass viele Leute mit dem Finger auf die Entwickler zeigen würden. Wer keine Zeit zum Testen hätte, müsse akzeptieren, dass sein System ungetestet ist. Die KDE-Entwickler würden eine Software genau dann veröffentlichen, wenn sie auf den Systemen aller Tester laufen würde.
Überwältigend – leider für das System
Jos Poortvliet gesteht aber auch ein, dass die neue Suche das I/O-System auf bestimmten Systemen “überwältigt”. Der neue Indexer kann zwar mehrere Gigabyte in wenigen Minuten indexieren, verschluckt sich aber an sehr großen Dateien. Als Beispiel nennt Jos Poortvliet Textdateien über 20 MByte. Solche Dateien klassifiziert der Indexer als “schlechte Dateien” und fasst sie anschließend nicht mehr an. Um sich schneller durch den Dateibestand zu fräsen, bearbeitet der Indexer allerdings immer 40 Dateien in einem Schub.
Baloo aus den KDE Applications 4.13 verwendet dabei einen Timeout von 5 Minuten. Sind die überschritten, teilt der Indexer die 40 Dateien in zwei Gruppen. Anschließend versucht er, jede der beiden Gruppen erneut zu indexieren. Beschäftigt er sich wieder 5 Minuten mit einer der beiden Gruppen, teilt er auch diese Gruppe auf. Das ganze Spiel läuft so lange, bis der Indexer auf die problematische Datei gestoßen ist.
Durch den langen Timeout ist der Indexer jedoch relativ lange beschäftigt. Die Entwickler haben deshalb mittlerweile den Timeout auf 2 Minuten reduziert. Zudem soll der Indexer mit den problematischen Dateien besser umgehen können. Die Änderungen dürften die meisten Anwender jedoch erst mit der nächsten Version der KDE Applications erreichen.
Mehr Konfiguration, wenn es der User wünscht
Darüber hinaus hat Lindsay Mathieson den recht kargen Konfigurationsdialog überarbeitet [13]. Bei Redaktionsschluss war jedoch noch nicht bekannt, ob, wann und wie er in den KDE Applications landet. Im Gegensatz zur aktuellen Version erlaubt er nicht nur das Abschalten des Indexers, sondern auch das einfache Definieren von Ausnahmeregeln für Verzeichnisse, Dateien und MIME-Typen (Abbildung 5). Den Suchdienst Baloo wollen die KDE-Entwickler noch erweitern und um weitere Anwendungen ergänzen. So soll es mit Balooctl ein Kommandozeilentool zum Starten und Stoppen des Dienstes geben (analog zu Nepomukctl und Akonadictl, [14]).
Roadmap
Geplant ist zudem eine Rechtschreibkorrektur, die Unterstützung von entfernbaren Datenträgern und das Milou-Plasmoid zu einer kompletten Suche [15] zu erweitern. Des Weiteren arbeiten die KDE-Entwickler an einer Portierung von Baloo auf die KDE Frameworks 5. Diese Version soll vollständig kompatibel zur aktuellen Version sein.
Die KDE-Entwickler treiben Baloo weiter voran. Benutzer und Programmierer weerden sich mit der semantischen Suche anfreunden müssen. Ob sie schließlich wirklich schneller und stabiler arbeitet, muss sie jedoch erst noch in der Praxis beweisen, wenn weitere KDE-Anwendungen sie nutzen.
Infos
- Nepomuk-Projekt: http://nepomuk.semanticdesktop.org
- RDF: http://www.w3.org/RDF/
- Vishesh Handa, “Nepomuk in 4.13 and beyond”: http://mail.kde.org/pipermail/nepomuk/2013-December/004858.html
- Jos Poortvliet, “KDE’s Next Generation Semantic Search”: http://dot.kde.org/2014/02/24/kdes-next-generation-semantic-search
- Baloo: https://community.kde.org/Baloo
- Baloos Architektur: http://community.kde.org/Baloo/Architecture
- Von Nepomuk auf Baloo portierte (KDE-)Anwendungen: http://community.kde.org/Baloo/NepomukPort
- Ask Ubuntu – “How to turn off baloo”: http://askubuntu.com/questions/437635/how-to-turn-off-baloo-in-kde-4-13
- KDE-Forum – “How do I pause indexing?”: https://forum.kde.org/viewtopic.php?f=154&t=120047#p304335
- Baloo-Diskussion auf der Suse-Mailingliste: http://lists.opensuse.org/archive/opensuse-kde/2014-05/msg00008.html
- Jos Poortvliet, “Teacups and Storms”: http://blog.jospoortvliet.com/2014/05/teacups-and-storms.html
- “Come and help us test”: http://dot.kde.org/2014/03/12/applications-413-coming-soon-help-us-test
- Überarbeiteter Baloo-Dialog: https://gitorious.org/baloo-kcmadv
- Markus Feilner, “Pannenhelfer – Kontact-Debugging”: Linux User 07/14
- Ausstehende Tasks: http://community.kde.org/Baloo/Tasks










