Category Archives: Zeitgeist

In Progress: New GNOME Shell Journal extension

Its been a while since I worked on the Journal extension for GNOME. When I left it it looked like this

But with the new GNOME Shell layout (which is pretty awesome btw) exposing the Journal wouldn’t have been that easy. I sat down today to try to find a way to revive it and I think it was successful.

Notice that now there is a “Recent” button right above the “Show Apps” button in the dash. I limited the items to 5 items per row to make things look nicer.

When the Documents, Music, Videos, etc… labels above the groups is clicked one is navigated to a second view with all recently used stuff.

To show this I will display 2 other screenshots from a bigger screen. Notice that while there is a lot of real-estate wasted I still looks very clean imho.  Too many icons in one row kinda cluttered the screen :/

after clicking on “Documents” highlighted on in the picture above we end up with the following view:

Here one can navigate back to the recently used overview with the back button.

This is still work in progress and you can check out my code here on github: https://github.com/seiflotfy/gnome-shell-zeitgeist-extension and help me clean it up… :D

 

 

Zeitgeist: Playing with Berkeley DB

While doing some scaling optimization the Zeitgeist team decided to give Berkeley DB a try. But porting from SQLite to Berkeley is not easy. However thanks to the Berkeley SQL API porting one can use the SQLite queries. All we did was change the Makefile and add a new vapi (which is a straight copy of the sqlite3.vapi but with dbsql.h as a referenced header instead of sqlite3.h).

The results are not good though. But maybe its because we need to optimize the queries a bit more. Nevertheless you will find the code on freedesktop under the branchname berkeley tonight.

If you like a challenge, try to optimize the Berkeley optimization yourself, but be aware this is not for beginners and it may break you DB.

To build it make sure you get Berkeley db (on Debian and Ubuntu):

  • sudo apt-get install libdb-sql-dev
Get the latest Zeitgeist trunk code and create a new branch:
Download the following patch and apply (make sure you replace path to patch):
  • git am –signoff < /path/to/patch

Download the following vapi and place it into:

  • cp /path/to/vapi /usr/share/vala/vapi/dbsql.vapi
Configure and compile Zeitgeist:

  • sh autogen.sh –prefix=/usr/ –disable-fts && make

Now run it and make sure you are NOT using the default datapath:

  • ZEITGEIST_DATA_PATH=/home/seif/.local/share/zeitgeist-bdb/ src/zeitgeist-daemon –replace –log-level=debug –no-datahub

you will find a generate_events.py script in the zeitgeist tools folder as well as other benchmarking scripts. Feel free to poke around.

Zeitgeist in GNOME

Words can not express how happy the Zeitgeist team is to see our little project with the Empathy and Folks developers merged into GNOME and finally bring some neat Zeitgeist features to the user.

Thanks to everyone who has contributed to Zeitgeist, Folks and Empathy, including Collabora, Intel, Canonical and RedHat for their code and design contributions. I think the new design is very clean – check out Guillaume Desmottes blog post for screenshots.

P.S: Stay tuned for our next release (release within 2 weeks) which will log telepathy interaction events out of the box (as part of the datahub). If you want to start logging now check out our standalone logger from the datasources repo on freedesktop.

 

Zeitgeist scalability & efficiency bootcamp results

As Trever blogged yesterday, the Zeigeist team has been busy with tweaking the DB and the engine. During that process tools and benchmarks have been developed to make the tweaking and testing more interesting. Trever will be blogging about that tomorrow so make sure to check his blog.

Our end goal is  trying to scale the engine to be able to handle a few billion events just as fast as it can handle a few hundred thousand. While we are not there yet we managed to have some pretty nice stable results for the first iteration. A lot of results show more than 100% speed enhancement. In other words a lot of queries from our standard benchmarks now consume more than 50% less time to execute. Here are some graphs of our benchmarks.

Green indicates the 0.9 release

Yellow indicates the new trunk

Most notable performance enhancement is querying Zeitgeist with a specified timeframe (from data x to date y).

 

Same queries with an open timeframe also improved

 

We also have a copy of the Synapse queries benchmarked

The queries here are typical queries used to extract info from Zeitgeist. So right now the team is really happy with the initial results. For Synapse on my local DB (over a year old), all my synapse queries perform under 0.08 seconds. We still can get more out of this. The trick here was improving our indexes and our sql query generator.

Next month we will be going through another iteration.

 

 

On first interactions with open source communities…

I think it is safe to assume that as an open source project, striving to grow our community, we should make first interactions of new contributors with us a pleasant one.
So when commenting on a new contribution or attempt, we should try to either say something positive or don’t say anything.

  • If the contribution is  not useful then sugar coat you criticism. Because while the contribution might be bad, the person who did the contribution showed initiative to help out. We need to harvest this momentum and help integrate the person into the community.
  • If the contribution is useful then praise the developer. Making him feel useful. I learned from Lydia Pintscher to not only praise good contributors, but grant them autonomy to play around. This would allow them to master their craft, which will lead to them feeling like they have a purpose to stay.

What do you think?

Zeitgeist: Hello Freedesktop.org

For as long as Zeitgeist has existed it has been hosted on Launchpad. We made use of almost every Launchpad feature and grew to love Bazaar. The tight integration between Bazaar and Launchpad should be a taken as a grand example to the community, and the the team hacking on Launchpad and Bazaar has been always very responsive, supportive and above all incredibly approachable. The Zeitgeist team hosted all of its projects on Launchpad which made our development process very agile. I really need to thank the Launchpad team for hosting the project from its inception.

During the course of the last 3 and half years, Launchpad served us well and allowed us to handle:

  • ca. 748 unique bugs reported
  • ca. 231 merges
  • ca. 53 code contributions

We hope that many other great projects will find a valuable home on Launchpad. Without Launchpad, Zeitgeist would have not reached the level it has now.

But time changes and projects grow. The Zeitgeist team has a stable developer base of minimum 7 people putting several hours a week into Zeitgeist development and deployment. With these efforts comes the need of a vendor neutral platform hosted and serviced in a way that serves the interest of the project best.

Due to the deployment efforts being made to get Zeitgeist integrated with applications, our developers got more and more exposed to git. A stream of developers expressed their desire to work with us, however they were very uncomfortable or unfamiliar with bazaar and Launchpad, due to the popularity of git. That is something we do not understand in the core team, but still something we respect and will act on.

We couldn’t find a good direct replacement for Launchpad honestly, but since Bugzilla is something like the defacto standard for most people we decided to host Zeitgeist on Freedesktop.org (I must admit in-patch commenting in Bugzilla is sweeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeet).

We needed to wait until we finished the 0.9 release of Zeitgeist as well as narrow down the bugs to be less then 10 to make the transition as smooth as possible.

Now that Zeitgeist 0.9 is released, all our development will take place on Freedesktop.org and will be mirrored to launchpad, this means no code will be pushed directly to Launchpad, but rather Launchpad will pull from the git repositories. There the Zeitgeist Ubuntu guys (including me) will be syncing bugs and keeping everything intact. So bugs reported in Launchpad will be ported to FDO. But not the other way around.

We did not turn our backs on Launchpad, its just time for us to remove any barriers to getting the widest adoption of and contributions to Zeitgeist

On the road toward Zeigeist 1.0, FDO will be a great home for the project and we look forward to many great new contributions.

So please feel free to have a look at:
http://cgit.freedesktop.org/zeitgeist/

P.S: I would like to thank Trever Fisher and Manish Sinha for their efforts porting the code base.

Zeitgeist 0.9 and more…

Since the Zeitgeist team is kinda recovering from last month, and no one really feels like blogging, I am here to sum up what has been up the last 2 months. (Also I think a blog post from my side is long overdue)

Privacy Manager

A lot of users are scared of “logging”, and since Zeitgeist is considered an event logger, we ended up having some users trying to disable Zeitgeist all in all breaking Unity searching and so on.
Fact is, if you want searching to be sorted properly, the search provider needs to know what files you recently or frequently used. Also some people want to have some of their stuff logged and others things not (blacklisting folders).
Activity Log Manager which we already had developed in python last year has been ported to Vala. This nifty tool allows you to blacklist application, folders, mime-types from being logged as well as the option to delete parts of your log. The port to Vala happened so we can patch it into the Settings Manager to give it an more integrated feel with the System in Ubuntu and Dawati.
It has received very good reviews and there are some very interesting new development efforts/ideas in the make (right now one in a state of flux which I hope I can get out of soon).

Here are some screenshots of the current stand of ALM

(dialog for deleting history)

(dialog for blacklisting folders and file types)

(dialog for blacklisting applications)

Zeitgeist 0.9

Last year we started porting Zeitgeist from python to Vala. Mostly for the sake of easier deployment as well as improving startup time. As a side effect also memory consumption decreased and during the development more optimizations have been made.
It was a very intense operation sponsored by Collabora and Canonical as well as the awesome unpaid Zeitgeist developers.
So a big thanks goes to Collabora, Canonical, Michal Hruby, Siegfried Gevatter, Manish Sinha, Mikkel Kamstrup, Trever Fischer, Stefano Candori, Moritz Neeb, as well as everyone else who tested Zeitgeist, provided bug reports or contributed in any other way.

We released some alphas and a beta. But now the real deal is out. We still have some nice optimization in the queue that we will release with the next Zeitgeist version. So don’t hesitate to try it out.

Gedit – Dash 0.1

At last you can try it out the gedit plugin that Hylke and I have been working on for the last couple of days..

In an experiment to for alternative “open file” dialogs we started experimenting with the Dash. When you open a new tab you will be greated with the following page. The thumbnails generated skip “comments” and “imports” and try to jump directly to some code or text from your work.

If you start typing you will see results in a new view…

Clicking on Most or Recently Used will take you back to the Dash.

This plugin depends on “zeitgeist” and the “zeitgeist-fts-extension“. You can get the code from launchpad

bzr branch lp:~seif/gedit/dash

or just download the following tarball and place the content in ~/.local/share/gedit/plugins

In the following days I will be talking more with the gedit guys and gnome designers on maybe a new layout for gedit. And hopefully get the dash into gedit-plugins upstream soon…

Zeitgeist – from Python to Vala

The title says it all… You can read the announcement on Michal Hruby’s blog post. Zeitgeist has been ported from Python to Vala with its latest 0.9 cycle

We started 2 weeks before the desktop summit and are now confident enough to go public alpha with our work. With the focus of the desktop environments shifting to mobiles and handhelds, we were dealing with some resistance in terms of deployments due to Python’s slow start up times. In terms of code and performance Zeitgeist is now in Vala.

For those who don’t know Vala, its source-to-source compiled to C which is then compiled with a platform’s standard C compiler, such as gcc.

It has a noticeable faster start-up time, and less memory consumption than before. A normal Zeitgeist instance that used to run for 2 days using 15-20 MB now uses around 3.5 – 7 MB (this is on my computer though).

Also Zeitgeist now allows you to read (not write) directly from the DB. We will be updating our wrapper libs to support reading from the DB directly soon… This means apps that retrieve data from the DB don’t need to do it over D-Bus. However if you want to push an event into Zeitgeist you will have to do it over D-Bus. More or less you will retrieve your info faster now too…

The only thing not ported yet is the FTS extension but we managed to make it a stand-alone process that reads from the DB directly. We will have a nice awesome port soon so don’t worry. We are also working on an alternative extension with the Tracker guys for the FTS.

The fun part is, all libs are still compatible which means WE DID  NOT BREAK THE API

All your current apps that use Zeitgeist should be able to run normally with this new release. Except for GAJ where we you need to grab the latest code from trunk.

For all you Git lovers another big surprise now is that we got some mirror hosting on freedesktop.org too. We have some manpower to keep launchpad and freedesktop in sync for a while. So for all Ubuntu fans keep using Launchpad. For all you others use Bugzilla :P

This Zeitgeist release has been sponsored by

AND


Last but not least I would like to thank the rest of the always awesome team for making this happen…

Now get it while its hot… Zeitgeist 0.9 Alhpha

We have a little donation button on our website if you feel like donating something to the team http://zeitgeist-project.com/ for the next hackfest

Gedit – Dash (Almost there)

So now after three days of hacking around we are almost done with the gedit “plugins”. I say plugins (plural) because I divided the Dash plugin in 2. One for the “notebook” part, to handle the tabs properly in the new “form” (still a bit buggy though) and the other one for the actual Dash.

It now looks like this…

Still to do is actually having the thumbs avoid showing the headers of the files (imports, license, etc.. and somehow skip to the classes)

Also we are playing with the idea of a search for the dash… This work has not been reviewed by Hylke yet and is more or less me taking a stab in the dark. This way you open a tab and can start typing to search. Then select your result and it opens. For the search we use Zeitgeist since we need to cover stuff you “Downloaded” using the Firefox datasource or stuff you opened with gedit before…