Module Proposal: Zeitgeist
- From: Seif Lotfy <seif lotfy com>
- To: desktop-devel-list gnome org
- Subject: Module Proposal: Zeitgeist
- Date: Tue, 17 Apr 2012 22:47:46 +0200
Zeitgeist is an event logging framework. It stores user activity in a structured manner and provides a powerful DBus API to query and monitor the log. Zeitgeist as such does not have a graphical component, but is intended to integrate wherever it makes sense. Just like Tracker, Folks and GStreamer, Zeitgeist does not provide a UI. And is not a going to be used by the user directly, but rather would allow developers to harnest the feature it provides and make something useful out of it in their UX.
It has been 3 years and 8 month since Zeitgeist started under the GNOME umbrella. We proposed Zeitgeist for inclusion in 2010 but we got rejected due to several reasons including but not limited to:
- Not enough integration with GNOME applications
- Project hosting difficulties
- Immaturity of the project.
Zeitgeist is not meant for searching through your files and folders, but rather as a log for user activities. This can be used for:
- Sorting search results according to frequency/recency
- Populating dashboards
- Finding files/contacts/etc... that are used together
- History browser
- Associating locations to items (used at location X or Y)
- scheduling activities (files/contacts/et...) can be set (See Task pooper)
People have expressed interest in using it within GNOME, we want to help and make it happen. We think all these use cases could be address.
We already have GNOME specific developments
- We already log everything that pushes into Gtk.RecentlyUsed.
- For better logging we have Totem, Rhythmbox, and gedit deploying loggers as a soft-dependency in the form of plugins.
- We worked with gedit and some GNOME designers to develop the Dashboard plugin  to address the empty slate problem.
- Additionally, the team wrote several plugins for GNOME Shell 
- Integration with telepathy-folks is currently under development.
- Discussion about a possible Gtk Recenet Manager revamp with an optional Zeitgeist backend. 
Another deployment in development is a feature that we think would enrich the developer story for folks, which is giving folks the ability to actually provide developers with some interaction details for each individual.  This is under development and hopefully can be merged soon.
We also provide a logger for Telepathy as part of the zeitgeist-datasources package. It will soon be shipped directly with Telepathy-Logger as a soft-dependency.
We have moved to freedesktop.org
so we can play nicely with GNOME, KDE, Ubuntu as well as others. 
Since we are not a GNOME dependency some projects hesitate to integrate with us.
It is a chicken and egg problem. Applications don't want to depend on us since we are not GNOME upstream (thus only soft-dependencies) and GNOME hesitates to accept Zeitgeist since no application fully depends on it.
For example: We want to use Zeitgeist in GNOME Clocks will to store "alarms" as scheduled activities. However we are not sure if we can do that without Zeitgeist being an external dependency.
Another example, Epiphany integration: Zeitgeist could take over storing Epiphany history. However due to the uncertain state of Zeitgeist in GNOME we can not move on.
I would like to quote Xan Lopez: if GNOME decides to use it throughout I'd be happy to add support for it in Epiphany.Some interesting facts about Zeitgeist:
Proposal to become a blessed dependency
- It is a dependency for Ubuntu Unity
- Many application specific plugins that make use of what Zeitgeist has got to offer.
- Integration into Phonon, the KDE multimedia framework and various deployments within KDE
- Deploying in Dawati 
- Paid dedicated developers
- Previously ported from Python to Vala without breaking API
With this appliation I would like to address the possibility of accepting Zeitgeist as a blessed dependency.
- Xapian (Soft)
- python-rdflib (only for compiling the ontologies)
What most people think of as Zeitgeist is split in two processes zeitgeist-daemon and zeitgeist-datahub. The daemon does not do any active monitoring for events, it only manages the log database and exposes a DBus interface for inserting, deleting, querying events, and monitoring for changes. The datahub monitors the system and pushes events into the daemon. This architecture makes the datahub expendable if we one day move to an architecture where apps themselves (or something else) push events into Zeitgeist. Indeed it's already the case that we have plugins for some apps that makes them push events into the daemon.
] [Thread Prev