Releasing Zeitgeist Datasources 0.8.0

One behalf of Zeitgeist Team I am happy to release zeitgeist-datasources 0.8.0

Zeitgeist Datasources are a collection of extensions/ addons/plugins which log the activities of the user and insert it in the zeitgeist engine which can be later used for lot of useful tasks. These extensions insert lots of extra events apart from the ones logged by zeitgeist-datahub

The extensions present are

  • Eye of GNOME
  • gedit
  • Totem
  • Rhythmbox
  • Tomboy
  • Chrome
  • Emacs
  • Firefox 4.0
  • Geany
  • Telepathy
  • Vim
  • XChat
  • Bazaar

Get the release tarball from here

Few of the extensions require Zeitgeist 0.8.0 to build.

Launchpad project Page

More info about Zeitgeist

Package for Ubuntu would be available on Zeitgeist PPA. I have built it in my PPA, it needs to be tested and then copied to the Zeitgeist PPA. If you have added the PPA, then you should get the update

GNOME.Asia was held in Bangalore from 28th March to 3st April. It included a hackfest from 28th March to 1st April and two days of GNOME.Asia summit on April 2nd and April 3rd.

On 1st of April I attended AndroidCamp and was drenched by the time I came back home. only to find myself not well to attend on the first day of the summit. The first day was cut short to half because you Cricket World Cup Finals. India was in finals, the summit is in India and India is a country where cricket is religion and you expect people to turn up? 🙂

As I heard from Manu, the first day turnout was huge. That day India won the World Cup (YAY!). Next day I somehow managed to get up and head towards the venue (only 30 kms from my home).  I was one of the few people who reached the venue before 10AM on Sunday.

The first session I attended was from Allan Day on Designing the next generation desktop. Then I proceeded to another hall where Andre Klapper was giving his talk on Contributing to GNOME Documentation. He had some examples which was more easy to understand than plain talk on concepts and theory.

By the time Andre finished his talk, I met more friends – Yuvraj, Sindhu and Shashi. Next talk was from Yuvi who was talking on GStreamer 101. He explained GStreamer from a newbie perspective and slowly his talk started carrying more geeky explanation (expected). He continued even after his session got over by explaining his he got into GSoC on the Cheese project. He is the REAL motivator 🙂

When Yuvi finished his talk, Manu and Sankar were waiting for me outside the hall. This is the first time I met both of them even though Manu is from my college. There were more students from my college – two names I can remember is Vikas and Saurabh. Looks like LUG Manipal bore some substantial results.

After these session, I had a golden moment of my life when I went and met Vincent Untz. He is the current Godfather of GNOME. We both talked a bit on Zeitgeist when Allan Day and Andreas Nilsson also joined the conversation for a minute or two before we all moved for lunch.

The only two talks I attended in second half was on GDK(entered late so didn’t remember much) and another on DLNA in GNOME3 world by Arun Raghvan. I could not attend any other talk because I came out to talk to our friends when we met after a long time.

I am a bit sad that I missed a few talks. One of them was by Manu on Libyui and Contributions made by a newbie to free desktop’s empathy by Chandani Verma. I should have stayed back and also attended the Lightening talks. All the slides are available here

The event was well organized. I could not see any kind of chaos or anarchy. The openSUSE stall was filled up with students asking for it’s CD. I saw many students trying out openSUSE and guess what – most of them had Ubuntu installed. Whenever I glanced here or there, I could see people using Ubuntu everywhere 🙂

Android Camp Bangalore

I got up in the morning only to find there was no electricity. Not sure if this is somewhat related to April Fool prank, but was enough to piss me off.  Checked my watch – 9:30AM and the unconference is supposed to start in half an hour! I needed to get ready and travel more than 18 kms. The next one and an half hour involved running all around the house to get ready, gulping down breakfast, hunting for buses and then finally messing up with an autorickshaw driver when he started using his random number generator for determining the fare.

Finally I managed to reach the place by 11AM. The event AndroidCamp was of an un-conference style. Upon entering the first bad news I got was that I missed a session on Arduino which went excellent.

The rest of the first half session were pretty boring except one from Kashif Razzaqui. His talk was on his experience when developing apps using cross-platforms development tools like Titamium and PhoneGap. He nearly blasted off on the technologies which I think all the geeks love to do. I can see from everyone’s face that they were really enjoying his session. He pointed out how developing anything with Titanium is a total PITA. He did use some funny and amusing quotes like

Those Apple fanboys have to use objective C which cannot be even called a programming language

If Java and XML gives you a hardon, then something is really wrong.

Not sure if both of the quotes is exact as he said, but the audience did chuckle and smile at these jokes. No one at the event did a “Well Actually”

Then Kiran told us that the food van had got lost and the driver is circling the neighborhood searching for the venue. How not, even we all had so much of problems locating the venue. During that time Kashif put up a video of Android during Google IO.

After the lunch when all of us are supposed to sleep, two sessions caught everyone’s excitement. Since I was in the “Geek” room I missed the Firmware and Rooting talk in “Suits” room. Later two sessions happened in Suits room – “Android-scripting” and “Android Rants”.

The session android-scripting was taken by Sajjad ‘geohacker’ Anwar. He is the person who works on OpenStreetMap, writes python code and contributes to Ubuntu Accessibility. He explained how and when scripting can be useful using python than writing Java code. People put up points about speed, performance of this idea, all of which was answered by him. Good job.

Sajjad Anwar presenting android-scripting

The next session was about “Android Rants, The reluctant skeptics” by Supreeth which was basically a session to tell what all issues you have with Android. Some of the topics discussed were

  • Battery
  • Upgrades
  • Fragmentation
  • iOS and Apple as a competitor
  • WP7 as a competitor

I think this was the topic where people took part with utmost interest. Comments came from all the sides of the room. Supreeth had to stop them many times to make sure that the discussion did not turn unruly or offt-topic. I don’t think any aspect of mobile ecosystem was left out during this talk which includes Android, Google, Motorola, iPhone, iPad, Blackberry, Nook, Windows Phone 7, Nokia, Palm, HP and every other entity even remotely associated with mobile phones.

The last session was the Feedback session. This was the session where everyone ended up speaking even though I thought that only a few people might express their opinion. The thing most requested was keeping such events on weekends as getting day-off is really tough for most of the people especially when it is Friday.

All the day I kept a track of the April Fool pranks starting from cyanogen quitting Android to GNOME3 getting delayed to Google Motion. On returning home, I stumbled across one excellent-brilliant-kickass article I am Jef Spaleta by Jono Bacon. This was the day! Lastly if you didn’t notice even WordPress has a small prank (for hosted blogs)


VCS Wars: I have my own place

Till date I have used many version control systems with widely ranging usage periods. There are a few which I would like to try out in the future, but that would happen when I start caring more about my VCS than the code.

The first VCS I used was SourceSafe for a very short duration, then Team Foundation. The real taste of VCS was from subversion. Then I moved to git and bzr and of late used Rational Clearcase

SourceSafe and Team Foundation

I got the pleasure of using SourceSafe once when I had to get a few files. I did it only two times as far as I remember. It was for getting some legacy code for reference as far as I can remember. Now as people who have to deal with it call it a PAIN, so I am lucky to have never dealt with it again.

Team Foundation this was my first real source control system on which I laid my hands on. I still remember the shelving capabilities and a few more features. Anyway not interested anymore.


This was the first version control system which I used for learning. Even though it was centralized version control system, I still found it superior to TFS (probably I learnt what it was or I never tried our TFS properly). A reason why I was able to learn it was it was simpler than its brothers which were of distributed nature. Still branching is one thing which I was never able to understand properly using svn.

Last year 5 of subversion developers met and decided on the future of their baby. They came to the conclusion that by somehow putting themselves in DVCS planet would be useless. They have a place of their own. I still see subversion having the biggest foothold in corporate sector amongst all the open-source VCS/DVCS

Rational Clearcase

Probably the (or one of the) crappiest VCS/DVCS (no clue where it fits in) I have ever used till date. Just put some 20 files, each of 300 lines and hit Check-in, go for coffee, return and find that the check-in hasn’t completed. Okay fine, I exaggerated. Whatever be the case, Clearcase is alive just because it has IBM behind it and then know how to stuff their crap on enterprise sector. (Lotus Notes anyone?)

It is said that Clearcase handles binary files better than other VCS. I can find very limited use-cases for this feature. What is the advantage when it cannot handle regular text files properly?

Sadly, Clearcase also has a place of it’s own.


No experience till date. Used it once when I wanted the latest code of django-piston. It is used by Python (don’t contribute), Mozilla(don’t contribute there), OpenOffice (no interest in Office Suits). This sums up my experience of hg, so it’s better to keep my mouth shut on something I never used rather than quoting from external sources.


Git is fast. Git is lovely. Git is wonderful. As people say “Git won the DVCS wars in 2008 and left every other DVCS high and dry”. It’s branching and merging awesomeness is unmatched. It is Fast. To me, git became so widespread due to many reasons and one of the very important one is – github. It was because of github, most of the people got a place to host their projects and share it with their friends. It is a social network for programmers.

So as powerful git is, it comes at a price. It is pretty tough to understand. If you never had any experience with any version control system, you might need to put in extra effort. The concept that multiple branches are contained in the same repository together and the concept of remotes had made me dizzy when I started using git. Till date I keep on telling people that git tracks changes and not files. This is apparently visible when you find your file in both the list of “Changes to be committed” and “Changed but not updated”.

I always held the opinion that git is a spaceship – Incredibly tough to control for people who don’t know what to do. Once you learn how to control it, its a pretty smooth journey.

So now asking the same question for git?Does it have it’s place. Yawn! Isn’t the answer obvious?


These days I am spending most of my time on Bazaar (next is Git as usual). The initial impressions are the it is slow (due to additional runtime costs?) It has it’s own share of problems like slowness etc which everyone talks about. You will find a lot of people using it as a punching bag. Google for it, it is useless to rehash the old thing again.

I am going to talk a bit on the good sides of Bazaar. First it has a lot of good UI tools. I mean Bazaar Explorer is really great when compared to any other Git UI tools. I know most power users like command-line, but I use Bazaar Explorer to commit as I keep a diff and commit window open side by side, look at the changes and write the commit messages. I think many more newcomers might find easier to adopt bazaar since it has better UI tools. For Git, gitk looks pathetic, giggle looks fine, but is still behind, only gitg is of the quality I expected. Still gitg can be improved a lot.

Second advantage that bazaar got is that it is easier to use. I have taught bazaar to a few of my friends and they were pretty quick to pick it up. I found that bzr adjusts better to my workflow. Since in bazaar every branch rests in a separate directory, I have found less head-banging amongst the developers.

I found that a lot of advantages of bazaar are tied with it’s launchpad integration. I have never used it outside launchpad. It would be great if someone using it on GNU Savannah might explain their experience.

We in Zeitgeist development use bazaar a lot since it is hosted on Launchpad.  Me and Federico are the two people who know git pretty well (Federico is the champ). Since zeitgeist alone is nothing more than a white elephant, integration of zeitgeist in applications leads us to use git also when sending patches. There are cases when “I have many changes in the source but git diff isn’t showing anything”. Probably git has too much power and sometimes it can lead to panic. It takes time to learn and utilize the full power of git.

I still find bazaar to be a great DVCS for people who don’t have much experience using a Version control system or are not so much technical. The target audience can probably include artists too. This is why I say “Bazaar has it’s own place and trying to compete with git is useless“.


One of my close friend told me – DVCS is religion, never talk about it publicly. You invite wrath.

A bit of autotools bashing

Even programmers need to have some fun.

<m4n1sh> mhr3: I loath autotools

<m4n1sh> the best line in is

<m4n1sh> # end of magic

<m4n1sh> the whole thing is magic

<mhr3> m4n1sh, apparently you’re doing magic

<mhr3> autotools themselves are nice and clean if you dont

<m4n1sh> I am still to come across a single build system which doesn’t play with your blood pressure

<mhr3> yea.. there isn’t one

<mhr3> it’s number one feature of all of them

<m4n1sh> is that the basic requirement for all of them?

<m4n1sh> or stop pathetic programmers from creating pathetic applications?

<mhr3> don’t know if it’s requirement, but surely it’s the first feature that gets implemented in any of them

A Re-Introduction to Zeitgeist

While the Zeitgeist team has assembled together at Aarhus, Denmark for their 2011 hackfest, I am sitting at home due to shortage of time for Visa application. This hasn’t stopped me from continuing my work and mythbusting is also a very much-needed action.

Recently I came across a post on Linux Insider in which the author has written up a post named GNOME Activity Journal: Not a Big History Buff.

Instead of screaming and accusing of spreading FUD (which isn’t a sure shot solution for every problem), I thought I might reply with the solution. Putting it nicely as a blog post might help everyone.

WARNING: This is a tl;dr post.

The post has many errors, some minor misnomer and few factual errors. I would like to clear and doubts and for some points – add more commentary.

1) Architecture and component description

The Activity Journal was first introduced as GNOME Zeitgeist. It is a tool for easily browsing and finding files on your computer. It keeps a chronological journal of all file activity and supports tagging and establishing relationships between groups of files.

Right now Gnome Activity Journal(also called simply as Activity Journal) is a separate component from Zeitgeist. Zeitgeist is an umbrella term. The engine is the core component which logs events and exposes them via a DBus API. Activity Journal fetches this data from the Engine’s DBus API using the Python bindings.

Zeitgeist does not provide support for file tagging as Zeitgeist is not a file tracker. It is an event logger.

2) Logger or file search?

It is a history logger but not a true searching tool.

True. Use find command for searching files. You can search within the file if some event contains that file (like file was opened, close, modified). This functionality is provided by Zeitgeist fts extension. fts – Full text search.

3) Work of Activity Journal

Activity Journal is a tool for browsing and finding files on your computer.

Activity Journal is well.. an Activity Journal and not a file search tool.

4) Zeitgeist in GNOME3

The concept behind Zeitgeist is planned as an integral part of the upcoming release of the GNOME 3 shell.

Sadly, Zeitgeist is not a Gnome Project. Gnome-Activity-Journal  was rejected in a meeting in May 2010 and was announced by Vincent Untz on Wed, 2nd June 2010.  Since Activity Journal was rejected, so it did not make much sense to take in Zeitgeist engine too. Later, Seif asked whether we should apply again, but most of the team was not much interested as by that time Zeitgeist modules had not undergone any massive change which could got zeitgeist accepted in Gnome.

My take on re-application was “Don’t re-apply just for the sake of re-applying”

5) Zeitgeist and Gnome-shell

GNOME shell developers are touting this as one of the major changes in the new shell’s GUI

Citation needed!

Zeitgeist does have integration with Gnome Shell but still, any integration work takes time. Keep your fingers crossed.

6) Storage of events

The application stores your file access history in one central database for quick access. Any application can easily add its own data to the mix. But I found that not all programs are invited into this database.

Zeitgeist is written in Python and uses SQLite as database. This database is kept at $XDG_DATA_HOME/zeitgeist/activity.sqlite and can be opened with Sqliteman (at your own risk)

Yes, any application can add its own data to the daemon. These plugins in every applications are called dataproviders or datasources. Many of the dataproviders are present and most of them are packaged in Zeitgeist PPARhythmbox and Banshee dataproviders are upstream.

If you see that not all files are present in the database, you should understand that those applications are not pushing their information in the daemon. A plugin/extension/addin/addon is needed for that application whose work is to push the events to the daemon.

Thirdly, events in the daemon can also be pushed passively by zeitgeist-datahub which is a zeitgeist-extension and runs along with the daemon. It pushes data from GtkRecentManager to zeitgeist daemon. So all data which is available in GtkRecentManager is also present in zeitgeist daemon provided datahub is running along with the daemon (by default it does)

Zeitgeist is not magic. Some way or the other the event has to be logged. It is logged by many way or the other. Either by datahub or explicitly by extensions. We try out best to have extensions for every application, but still it would take some more time to come up with extensions for all major applications.

7) How events can be logged?

It is certainly a better option than looking through a file manager window filtered by date. But the journal app fails to track all of my files.

Reason is as explained. Try opening a file via command line – it doesn’t show up in zeitgeist daemon since datahub cannot find that event. Those files needs to be present in GtkRecentManager.

8 ) Dataproviders

For example, I use Note Case Manager to keep all my notes and gathered snippets of information. Activity Journal shows no record that I opened the Note Case database.

Then you need a plugin for Note Case Manager. I use Tomboy and you can see that it is tracked by the Tomboy dataprovider.

9) Not everything is logged

Also, the journal ignores files opened under Wine.

Yes. Wine is not supported. It is planned but not a very high priority as most people use Wine mostly for playing Games. We have limited manpower and endless list of action-items.

10) Where are events logged?

The tracking occurs even if you do not open the journal app.

Yes. This is because Journal is just a front end. The zeitgeist engine keeps on running even if you close the Journal. The events are not logged in Journal but in engine and journal fetches the data from the engine. Hope this makes it clear.

11) Activity Journal plug-ins

The Blacklist Manager lets you add and remove items from the Zeitgeist blacklist. It, too, appears to be worthless, as you cannot actually do anything with it.

The Blacklist API in its current form is sort of useless. I admit it as I have been assigned to work on it. We have still not reached on a grand consensus on the API since it is hard to come up with a good one. I was supposed to implement in this hackfest but could not attend.

12) Availability of Journal plug-ins

So far, it seems no other plug-ins are available to download and add. The journal’s interface has no menu option to import or create plug-ins.

True. If you can think of a functionality, please file a bug against gnome-activity-journal project on Launchpad and set it to Wishlist. We can implement them if feasible.

13) Extra Dataproviders for web usage

The skimpy online  documentation suggests that the journal will also track Web sites visited.

(The link is broken). It can track the websites you visited if you install the Firefox or chrome dataprovider. Right now none of them are packaged as we found it a bit tough. We are progressing towards it.

14) Pinning

I never figured out exactly what pinning a file does.

Pinning a file makes it accessible for your “Today” since people work on the stuff within the last 2-3 days which people want to keep in view. It is useful to pin stuff so that if you are not using them, they will always be visible for you.

15) Current version of Activity Journal

However, a more developed version within the GNOME 3 Shell or an improved version beyond for the current GNOME shell might add to this app’s importance in my computing routine.

Activity Journal 0.6 is out. Download it or install it from our Zeitgeist PPA.

16) Further clarification and Ubuntu Developer Week session

Me an Seif are taking a session on Rocking with Zeitgeist during Ubuntu Developer Week. Be there if you want to ask any questions. Note down the timings:  Tuesday 1st March 19:00 UTC.

Dream desktop: Slowly moving closer and closer

This is just the tip of the iceberg. Zeitgeist holds immense possibilities as I explain others

Using Zeitgeist you can keep a log of all the files you opened with exact times, create statistics, learn your workflow and make yourself more efficient. Zeitgeist does not log only files but any activity or event like receiving calls, dropping calls, starting a track in your favorite media player. The possibilities are immense. The sky is the limit

We have many more new dataproviders including XChat. If you have patience, wait for a release or if your hand is itching, you can get them from Zeitgeist PPA

In case you face a problem, ping us on #zeitgeist on or ask the question on with zeitgeist as the tag.