Tag Archives: gnome

A snippet of the GNOME Zeitgeist Todo list

Since Alex Gabriel the maintainer of Mayanna is on vacation we got stuck with some issues! So while he is gone we started working on the old GNOME Zeitgeist again. The development is great. Me more or less absent because of work, Mr RainCT joined the developers during the week and almost finished the DBUS bindings. The code is cleaner. We have a daemon running and we are looking forward to write several UI’s that communicate with the daemon! So whoever feels like writing in a UI in MONO, C, Vala or Javascript DBUS is there for you.

Here is a shor t snippet of our TODO List for the next couple of days:

TODO:

- Backend:
+ Add on Tracker support.
+ Extend DB to support location of usage
+ Auto Tagging e.g: tasks, locations, and relations.
+ Finish the D-Bus interface. (We need to insert items via DBUS , maybe patch up the datasink to have an insert in string tuples)
+ Reduce the amount of “changed” signals send.
+ Fix the Firefox DB detection (see comment in code).
+ Is RecentlyUsedDocuments the best place for text/plain files?

- Frontend:
+ Separate it from the backend and let it only use D-Bus for communication.
+ Do not show an item twice one beneath the other.
+ Use a generic CellRenderer to display stars for bookmarking instead of checkboxes!
+ create a bar displaying the related files to currently opened files (inspired by Gimmie)

GNOME-Zeitgeist meets Mayanna THE ULTIMATE FAQ

Perhaps as a result the recent news about GNOME 3.0 mentioning GNOME-Zeitgeist (Yay!). A lot of people have been visiting our IRC channel lately asking about the project. In the chats that evolved we told them about our merging with the Mayanna project which led to some questions regarding Mayanna. Since many people have the same questions, we compiled this little FAQ.

1. Why do you merge again? I didn’t get that part.

We have a little problem in GNOME-Zeitgeist. Our dataprovides reside in the same process as everything else and therefor block our GUI quite undesirably. Mayanna provides a solution to our problem that involves little work and has some additional benefits. More of it in Q5

2. What is this Mayanna no one was talking about just 5 minutes ago?

Mayanna is not Mayanna-legacy (an optimized fork of Gimmie). Instead it’s a complete rewrite without any of the obvious problems Gimmie used to have. Mayanna is basically a plugin architecture (plugin platform) written in python to manage and view objects-of-interest (emails, files, contacts, events, tasks, whatever).

3. What is Mayanna/Zeitgeists’s goal?

Both have the ultimate goal of providing you a personal interface to all the information you store on your PC and on the web. Complete with means to organize and search the stuff and with enhanced interaction subroutines.

4. Plugins eh? Like Add-ons in Firefox right? Now what use would that be, an application just babysitting plugins, doing nothing of itself?

Not exactly like Add-ons and well, not exactly plugins either. A plugin in Mayanna is a thin wrapper around so called Services which is used to manage them more easily. So what does a Service? It creates, manipulates or displays Items (the internal representation of the aforementioned objects-of-interest).

5. So every thing’s a plugin, right. Why not supply the GUI via plugin also?

In fact, that’s exactly the thing we want to do. Of cource Mayanna itself will have to provide a GUI to manage the services and to set some preferences. But apart from that the GUI will be supplied by plugins (some of which the Mayanna project will write). Why? Because everyone uses their computer differently and Mayanna wants to supply more than one possible solution to your every day computing needs. Different solutions require different GUIs. That’s why the Mayanna Team dances the plugin dance.

6. So what is that solution you mentioned in Q1?

Mayanna’s Services can be run in separate processes and it’s modular design makes merging very easy. Some parts of GNOME-Zeitgeist will be ported to Mayanna’s plugin system, others become core parts of Mayanna. The plugin parts will be a default part of Mayanna that comes with the application. We see Mayanna as a very robust framework for building apps. It isn’t quite a MVC, but its something equally neat. Besides, we really like the idea and realization of Mayanna and see the potential which lies in it’s services working together and using one another. We think Zeitgeist may very well profit from 3rd party services that way.

7. What about the name “GNOME-Zeitgeist”?

Although we (and a lot of other people) like the name Zeitgeist, Mayanna has a much broader scope and calling the combination of the two “Zeitgeist” or “GNOME-Zeitgeist” would be misleading and hurting the project in the long run. We know of course about the publicity connected with the name “GNOME-Zeitgeist” (we read the news as well) and we expect to lose some of that while merging. This FAQ is part of our effort to keep as much of it as possible and in the meantime to extend it to the Mayanna Project. The newly created plugin will still bear the name Zeitgeist. So it should not be forgotten. Zeitgeist will be the AI and partly a UI of Mayanna.

8. What about the developers?

The GNOME-Zeitgeist and Mayanna maintainers have worked together before and helped each other set the first milestones of their respective projects. With this reunion the developer teams will merge (as team Zeitgeist) to improve the Mayanna engine as well as the Zeitgeist algorithms.

9. What about GNOME 3.0

It is still our aim to be included in GNOME 3.0 as is the aim of the Zeitgeist (GNOME-Zeitgeist and Mayanna) developers. We see this merge as an important step towards that goal.

10. So how is it going?

It’s done. The most part that is. We are in the progress of tieing together the last lose ends on the Item producing part and looking forward to hacking away at the GUI code. Memory consumption is low as ever and we even see some improvements compared to the old code.

Bringing back some old code

I used to work an Gimmie under the mentorship of Alex Graveley and then started Mayanna with Alex Gabriel. At some point while staying busy on that trying to figure out the memory leaks I ended up prototyping this.

Here is a quick demo of a semi working sidebare.

Clutter UI gets minor update

I just tried to understand more about clutter by improving my first clutter prototype. Now I can scroll left and right! Before I could only move in one direction! Sometimes it jumps though but ends up on the right item. Will check it out later.

I am trying to find some middle ground between this view and Kalle Perssons mockup.

Here is the Video.

New thoughts on GNOME-Zeitgeist

After a not so perfect exam I decided to go crazy on Zeitgeist. Here are my new thoughts:

1. Clutter: First I decided to fiddle around with clutter ending up with THIS. So now I learned more about clutter and decided to give Zeitgeist a nice alternative UI. Most probably Kalle Perrsons mock up. The concept will is zooming into each day only showing 5 days at a time. Its pretty simple.

2. More data providers: Problem is, for me to log the activity, the application used to edit or open the file has to insert its data into gtk RecentlyUsed. Most GNOME applications do that. However some of the applications I use don’t, e.g: Eclipse, VLC, Firefox and Rhytmbox. We will write plugins for them if we find the file (mostly XML or SQLite) with its usage history. Once found we will drop a file monitor taken from “Gimmie” on it and scan for changes to notify Zeitgeist to log. It is done with Tomboy already (Just copied it from Gimmie). We will be applying this mechanism on the current Firefox and Evolution plugin. Soon Rhythmbox and Pidgin plugins will be written. Once done we can start working on a ……..

3. GTK Bar: My idea would be implementing a bottom bar (I will call it activity-bar) displaying the timeline of my day, which I can scroll through. This could actually replace my task bar. This is just an idea though! A little search bar on the side wouldn’t hurt. There will be an icon to open a more sophisticated view of your activity history (the current Zeitgeist view). One should be able to quick tag data/activities in the activity-bar.

4. Tags: Tagging in Zeitgeist works like charm. Even the most common tags are displayed as filters on the top bar. However tagging itself can be a pain in the ass. We need to be able to multi select items and tag them all together.

5. Automatic tagging: Wouldn’t it be neat if once could set up some kind of task manager that can get activated. During the time its running every activity should be tagged with the task name, until its deactivated. Even activities should have their blacklists like in relationships to prevent tagging some unrelated items.

6. Nautilus tagging: It would be cool if one could tag items from Nautilus and write them into the Zeitgeist database.

7. Related Items: We were thinking of how one could define relationships between Data. We came up with three categories of relationships:

  • Tags: Items sharing the same tags are definitely related.
  • RDF: After reading about Organise Framwork I got in contact with Sebastian Faubel and I was impressed. We hit it off really well and are currently planing a workshop in Nuernberg to work somehow on finding an intersection point for both Projects. If we can feed the data we collected with RDF, figuring out relationships should be easy as hell.
  • Behaviour based relationships: Will not write about it here since it is part of my BSc Thesis and Thorsten’s PhD work. But it is possible…

Another feature should be a blacklist to determine that some items should not be related. No one wants to see porn and work together in one window.

8. Plugin Manager: We need to be able to activate/deactivate data providers thus enabling/disabling logging.

9. Provide GNOME Do with our logs: By now everyone is using or heard of GNOME Do and with docky rocking I thought why only provide the user with applications and songs why not use Zeitgeist to figure out which docs and websites have been used lately and display them in the dock. Thus making a point 3 irrelevant.

10. Time machine functionality: Why not store the first occurrence of an editable file and then for every following activity of this file store the “diff”, making it easy to restore any kind of editable file by applying the patches sequentially from the first occurrence till the timestamp. I know there are projects like wizbit out there tackling this issue, but they do more complex stuff. For these purposes i think its enough!

Federico has been helping us out alot lately and I hope we can find some time to give him a better demonstration of what Zeitgeist can do soon.

As for now I will leave you with my thoughts and call my girlfriend :)

Playing with Clutter

To learn clutter i started fiddling around trying to build a new UI for Zeitgeist. A pre-alpha-protoype would turned out to be….Zeitgeist UI 2

its in the bzr repo just pull from there.

try it be running sh zeitgeist2.sh (there is a 2 hidden there)

Here is another mockup from Kalle Persson

Zeitgeist improvements

To sum up we finally added evolution sent mail support! Though a bit buggy it is still pretty usable. Firefox now also takes ur bookmarks into Zeitgeist. I created a new mockup of how i would like the UI to be. This will require clutter so stay tuned for the UI makeover! Here is a quick dirty ugly mockup

rect3414

Another cool feature I am working on is the relationship managment! After talking to David Siegel he introduced me to predix. I did not start implementing it yet into Zeitgeist. I got in contact with my friend Diego from school and we started looking for an algorithm that can determin data relationships and behaviour patterns based on a timeline of uniformly distributed data activities. We both agreed on “A priori” being the best solution however Diego started implementing his own idea of “temprature based” relationships. As in the closer the events to each other the higher the possibility of them of being related. This was then extended by a frequency/priority variable. Its stil lnot very stable but its a good start! It managed to figure out that youtube, facebook and my bankaccount have a relationships ( I usually check them in specidifc time intervals but not in that same order )

That is it for now got to study.

Gnome Jounrnal Update #7

Natan Yellin and I have been organizing a lot in the code. Natan stumbled up on SpiffGtkWidgets and managed to integrate it into the code. Although the display is amazing its pretty slow. Thus Natan and I decided to hack on it and upload our patches :) .

A couple of new features will be added and/or are under development, most importantly:

  1. Search! We need to be able to search
  2. Bookmarking! I took out the bookmarking code to re-implement it at some point.
  3. Tags! Tagging items would be really a cool feature however we need a database for it
  4. Two new Iconviews Placeholders. “Frequently Used” and “Bookmarked”. I think the names say it all!
  5. We are considering of storing History in an sqlight database! We need the communities opinion on it
  6. Option of choosing a backend engine such as Tracker

Another very important thing is the naming of the Project! right now alot of the code is still related to mayanna-legacy! However since I will be also working on the new mayanna version I think renaming the classes and projects would be a good choice since alot of the original code has been changed and reduced. My suggestions would be:

  • Gnome Zeitgeist (The options of bookmarking and frequently used should encourage this name)
  • Gnome Reflaction (the a is on purpose :-) ) .. à la reflection in/for action
  • Gnome Did (sounds too much like Gnome Do though)
  • Gnome Timeline
  • Gnome Useline

More to come! Need to take a Nap