== Dev Week -- Rocking with Zeitgeist -- manish and seiflotfy -- Tue, Mar 1st, 2011 == {{{#!irc [19:01] manish, ready [19:01] ? [19:01] yes [19:01] Logs for this session will be available at http://irclogs.ubuntu.com/2011/03/01/%23ubuntu-classroom.html following the conclusion of the session. [19:01] Hello everyone [19:01] This session will introduce you to zeitgeist [19:01] and its related to components [19:01] the agenda is here https://wiki.ubuntu.com/UbuntuDeveloperWeek/Sessions [19:01] scroll down [19:01] I will post it here [19:01] What is Zeitgeist and what it is not - 10 mins [19:02] Security Implications - 5 mins [19:02] Technologies used - 5 mins [19:02] Components of Zeitgeist - 10 mins [19:02] Integration of Zeitgeist in applications - 10 mins [19:02] Latest release numbers and installing zeitgeist - 5 mins [19:02] and finally FAQ for 15 mins [19:03] I have allocated FAQ for 15 mins because I see there are a lot of confusion reguarding what zeitgeist is [19:03] Let us start with first [19:03] What is zeitgeist? [19:03] Zeitgeist is an event logger which keeps a track of your activities while you are using your computer (any supported computing device). [19:03] Events such as opening files, closing files, recieveing calls, sending a message on Instant Messenger (GTalk, Yahoo etc) are logged by Zeitgeist. [19:04] The logging can be configured, so you have the complete control on what is logged and what is not. [19:04] This data can then be used for variety of useful activities. [19:04] Some of the possibilities are having a complete skype, empathy, pidgin call log. [19:04] Finding out with you converse the most. [19:04] You can check which applications you launch the most and how many times you have opened a specific file. [19:05] People ask me - what are the possibilities of the things we can do with this [19:05] I reply - The possibilities are endless, the sky is the limit [19:05] I am hoping on you people to come up with innovative ideas after this session [19:05] after coming to know what zeitgeist is exactly an what it is not [19:05] so now what zeitgeist is not? [19:06] First and formost - Zeitgeist is not a search engine!!! [19:06] remember this [19:06] it is an event logged [19:06] *logger [19:06] If you have some file on your system, then don't expect zeitgeist to search for it. [19:07] It is not the work of zeitgeist to scan you disks and find files. [19:07] It's work is to track your activities and log it. [19:07] As opposed to general misconception, zeitgeist doesn't track files [19:07] Zeitgeist deals with events and not files. [19:07] There are events where no file is involved like recieveing a call. [19:07] UndiFineD asked: are there apps for mobiles, to be keeping track of my android [19:08] actually work is going on to port it to phones too [19:08] we had a prototype for Maemo [19:08] and android [19:08] but sadly Maemo's future is not clear after it got merged with Meego which again is a bit confusing [19:08] we are working on android [19:09] http://zeitgeist-android.com/ [19:09] since Android doesn't use the standard linux stack, some work is needed for making it run on android [19:09] esp testing the port is very important [19:09] darkdevil71 asked: is it a key logger ? [19:10] darkdevil71, no its not [19:10] darkdevil71: I will come to it. It is the next topic. The security implication [19:10] darkdevil71: it doesnt track each and every key you press [19:11] it just logs your activity [19:11] most opening and closing of files [19:11] and some other events [19:11] which events you want to send is configurable [19:11] though the api is still a bit crippled [19:11] Next is - Security Implications [19:11] You might heard that Zeitgeist is a malware/spyware which tracks your activities. [19:11] This is not an exact definition of malware/spyware. [19:12] Malwares record your activity, steal your data without your approval and sneak into the system without system. They have a destructive intention. [19:12] Contrast this with zeitgeist, it records events so that it can be used for constructive purposes. [19:12] It's like nuclear technology. [19:12] Use it constructively, it will benefit mankind, use it destructively and you will be harmed. [19:12] One concern people raise is that if some malware is installed, then it can steal the zeitgeist data. [19:13] In this scenario, if a malware is installed, then you are at a bigger risk than just getting your zeitgeist data stolen. [19:13] Your pidgin passwords are stored in plain text in your home directory. [19:13] (last when I used pidgin) [19:13] Your browser's history is very easily accessible. [19:13] If you have not set the master password in Firefox, then even your passwords are available to the malware. [19:14] any questions related to security implications? [19:15] Next up we have - Technologies used in Zeitgeist [19:15] Zeitgeist is written using Python and uses sqlite to store the events. [19:15] It exposes an API using DBus using which other applications can communicate with it. [19:16] Below the hood, it is basically dependent on glib which makes zeitgeist portable. [19:16] Get a proper port of dbus and glib on windows and zeitgeist should run there without much issues. [19:17] or in this case any other OS [19:17] Next up - Components of zeitgeist [19:18] Zeitgeist is not a single project [19:18] but a collection is components [19:18] helper libraries etc [19:18] a framework more or less [19:18] yeah [19:18] the core part is the engine [19:18] or the daemon [19:19] At the core of zeitgeist is an engine which stores all the events and acts as the store. [19:19] It recieves and provides relevant information(events) to other process. [19:19] The information is exposed via a DBus Session bus. [19:19] If the zeitgeist server is not running, the first time an application invokes a method over DBus, the daemon is started. [19:20] I don't remember the exact name what this is called - autostarting a session bus when first call is made. Hope someone can tell me on #ubuntu-classroom-chat [19:20] The second component is called the datahub [19:20] I know sounds dangerous a bit [19:21] it is a passive logger [19:21] there needs to be some component which keeps on pushing data to the daemon [19:21] or the daemon is nothing more than a white elephant [19:21] Thanks to aquarius that is called DBus activation -- autostarting a session bus when first call is made. [19:21] coming back [19:22] so datahub is a logger [19:22] which also runs as a daemon [19:22] and looks at the recently used files [19:22] and pushes them in the daemon [19:23] so basically when you open a file by double clicking using nautilus datahub comes in picture [19:23] I wont go much in the geekery of implementation [19:23] for adventurous people - "bzr branch lp:zeitgeist-datahub" is your friend [19:24] one more thing I forgot was telling you people about our website, sorry [19:24] http://zeitgeist-project.com/ [19:24] Download section: http://zeitgeist-project.com/download/ [19:24] development - http://zeitgeist-project.com/development/ [19:24] and we are always available at #zeitgeist on freenode [19:25] next up - Activity Journal [19:25] it was formely called gnome-activity-journal [19:25] it is a GUI viewer for your events [19:25] like a dashboard [19:26] With proper zeitgeist extensions you can even have more detailed logs including when you joined an IRC channel or when you received or dropped a call over your IM client. [19:26] you can install it, it is in the repos [19:26] as gnome-activity-journal [19:26] If you right click on any event and select "More Information", you can come to know what other files were opened or which other activity you were engaged in during this event. You can delete the event if you do not like it. [19:26] next up is - Dataproviders [19:27] Dataproviders are small extension/addins/addons/plugins into applications which can push events to zeitgeist. [19:27] we also call it datasources [19:27] same thing [19:27] Datahub cannot push everything to the daemon. [19:27] It mostly tracks opening of files by double-clicking from file browser. [19:27] Using data-providers more *relevant* events can be added like "Creating a new playlist", "Buying a track from foo music store" [19:27] next up is - Extensions [19:28] When we say extensions, it refers to zeitgeist daemon extensions. [19:28] means the extensions for the daemon [19:28] and not the client [19:28] Zeitgeist extensions are those components using which you can control he behavior of how the daemon behaves. You can expose additional information via DBus. [19:28] In a nutshell, you this is your tool of trade if you are not satisfied with how zeitgeist behaves. One size doesn't fit all. :) [19:28] If you want to have an inner scoop of extensions behavior, check [19:28] http://milky.manishsinha.net/2010/11/27/zeitgeist-daemon-extensions-explained/ [19:29] chadadavis asked: facilities for plugins, e.g. Facebook to include external activity streams? [19:29] chadadavis: yes [19:29] that is what I was telling about dataproviders [19:29] I or you can write dataprovieders [19:29] which can probably run as a daemon pulling data from all your web apps [19:29] and logging them in zeitgeist [19:30] which is again browsable [19:30] chadadavis: nice idea. Added to my TODO [19:30] MickStep asked: is it likly that a syncing service will every be created for zeitgeist, like tomboy created snowy [19:30] MickStep: yes. We were working on it [19:30] but due to some shortage of time [19:30] personal lie [19:31] and other important priorities related to zeitgeist pushed this feature a bit below our priority queue [19:31] thanks for bringing it up [19:31] will look into it [19:31] People, ask your questions :) [19:31] jderose asked: Speaking of syncing, are alternate storage backends a possibility for Zeitgeist, like say desktopcouch? [19:31] jderose: right now none. It can be looked into [19:32] but the thing is that is not worth the effort as of now. Since right now we are spending our time in deploying zeitgeist [19:32] integration with applications [19:33] for you call, you can add our zeitgeist ppa or latest packages. Sadly most of the packages are for Maverick [19:33] https://launchpad.net/~zeitgeist/+archive/ppa [19:33] this PPA [19:33] there are many zeitgeist-datasources-* packages [19:33] like one for tomboy [19:34] if you install that package [19:34] zeitgeist-datasource-tomboy [19:34] then your opened, closed notes will appear in GAJ :) [19:34] if you install the -xchat datasource [19:34] it will show you which all channels you joined [19:34] when you talked [19:34] when you quit, parted [19:35] cando_ is the current maintainer of gnome-activity-journal [19:35] there are many datasources/dataproviders have a look at them in the PPA [19:36] next is Language bindings [19:40] by language bindings I mean, language specific wrappers over zeitgeist api [19:40] you can use zeitgeist using it's python client [19:40] which is shipped along with the daemon [19:40] for C/Vala we have libzeitgeist [19:40] http://launchpad.net/libzeitgeist [19:40] for mono (C#) we have zeitgeist-sharp http://launchpad.net/zeitgeist-sharp [19:40] Qt - libqzeitgeist [19:40] http://gitorious.org/kde-zeitgeist/libqzeitgeist [19:40] and we also have for javascript [19:40] but still it is not not yet mature [19:40] needs work [19:40] next is Zeitgeist integration [19:40] 1) Unity [19:40] okay I will come to it [19:40] now lets goto questions [19:40] techbreak_ asked: its in gsoc ? [19:40] if you asked if zeitgeist is in gsoc, then we are trying, not sure if we need to apply independently [19:40] it doesnt make sense [19:40] we need zeitgeist integration in applications like kde, gnome apps [19:40] zeitgeist will be offering some work over several organizations [19:40] such as KDE, GNOME and hopefully Ubunut [19:40] UndiFineD asked: can we read out data from zeitgeist, if so could we get some statistics, maybe people would like to compare productivity [19:40] UndiFineD: yes. you can [19:40] use the API [19:40] if you like, you can use the language of your choice [19:40] Python, C, Vala, C#, Javascript [19:41] as I can see in the -chat channel, there is some confusion [19:41] zeitgeist doesnt look for any data [19:41] it just sits and waits for events to be pushed [19:41] when asked it hands out events [19:42] the pushing it done by datasources [19:42] jeyd asked: what about the xchat datasource in LUCID? [19:43] jeyd: we need to put that too. I can see that -datasources package is there for lucid [19:43] and the lucid package doesnt have xchat [19:43] * manish puts this in TODO [19:43] for more info https://launchpad.net/~zeitgeist/+archive/ppa/+packages [19:44] godbyk asked: Does Zeitgeist only pay attention to the channel part/join events and ignore what was actually said in the channel? [19:44] godbyk: it wont log each and every line you said [19:44] use your irc client's logging functionality [19:45] techbreak_ asked: which language it is written inn ? [19:45] as I said zeitgeist is written in Python [19:46] MickStep asked: What is the simplest example you can provide for how to write a dataprovider [19:46] there is one [19:46] I will use Python's example [19:47] you can check it in git. [19:47] git.gnome.or [19:47] this one [19:48] http://git.gnome.org/browse/rhythmbox/tree/plugins/rbzeitgeist/rbzeitgeist/__init__.py [19:48] the RB plugin [19:48] We have implemenation for Unity [19:48] Unity makes use of Zeitgeist in its dash where it provides the user with easy access to its most and recently used data (files/folders/applications) as well as searching over the Zeitgeist FTS (Full Text Search) extension. [19:48] There is more development going on to bring the same features to a contacts dash where the user can browse his contacts by most/recently used. [19:49] a snapshot by seiflotfy [19:49] http://zeitgeist-project.com/wp-content/uploads/2010/12/unity-most-used-apps.png [19:49] then we have it integrated in Synapse === sre-su_ is now known as sre-su [19:49] the uber-cool launcher written by mhr3 and his team [19:49] Other than heavily depending on the Zeitgeist FTS (Full Text Search) extension for searching, you can also browse recent items which were logged by Zeitgeist, in case you close a document by mistake or just want to hear again the music track that played a few minutes ago. [19:50] It also has a relevancy service, which makes sure that applications you use often end up among the first results of a search – this is done using Zeitgeist, so you can also track the popularity also in other Zeitgeist clients. [19:50] obligatory snapshot - http://zeitgeist-project.com/wp-content/uploads/2010/12/synapse-search-sort-apps-ranking.png [19:50] I already told about Activity Journal [19:50] http://zeitgeist-project.com/wp-content/uploads/2010/12/gaj-diary.png [19:50] http://zeitgeist-project.com/wp-content/uploads/2010/12/gaj-timeline.png [19:50] manish, i think it would be cool to show them the tomboy plugin that provides "used with" [19:50] yeah [19:51] There are 10 minutes remaining in the current session. [19:51] The used with is here http://thoughts.manishsinha.net/photo/1280/2890463378/1/tumblr_lfh52cBm7g1qcwfsm [19:51] here you can even see bzr plugin in action [19:51] and xchat plugin in action [19:51] seiflotfy: you have a snapshot with tomboy plugin [19:51] can you take one and upload before this session gets over? [19:52] yeah [19:52] last in integration section is Docky [19:52] The integration with Zeitgeist is in the form of generating jump-lists for applications and folders [19:52] An application that is provided a jump-list is populated with the most and recently used data that was used with it. This also applies for folder where the most and recently used files are displayed in its jump-list. [19:52] snapshot: http://zeitgeist-project.com/wp-content/uploads/2010/12/docky-folder-jump1-300x289.png [19:52] http://zeitgeist-project.com/wp-content/uploads/2010/12/docky-app-jump-300x300.png [19:53] http://seilo.geekyogre.com/2010/08/zeitgeist-hearts-tomboy/ [19:53] this is a video of zeitgeist being used by tomboy [19:53] Next is Installation: [19:53] Stable PPA: http://launchpad.net/~zeitgeist/+archive/ppa [19:53] I have an experimental PPA where i love to upload packages [19:53] bleeding edge [19:53] enough to break your system [19:53] http://launchpad.net/~manishsinha/+archive/experimental [19:54] use it with care, if you are adventurous, this is you best best [19:54] The best way to install zeitgeist is from PPA of official repos [19:54] *or [19:54] or if you want to check the latest versions [19:54] Zeitgeist Engine - 0.7 "All I have is this woodchuck" [19:54] http://launchpad.net/zeitgeist/0.7/0.7 [19:54] Zeitgeist Datahub - 0.7.0 [19:54] http://launchpad.net/zeitgeist-datahub/0.7/0.7.0 [19:54] Activity Journal - 0.6.0 "Pink Unicorns don't exist" [19:54] http://launchpad.net/gnome-activity-journal/0.6/0.6.0 [19:55] libzeitgeist - 0.3.2 Rattleweed [19:55] http://launchpad.net/libzeitgeist/0.3/0.3.2 [19:55] zeitgeist-sharp - 0.1.1 Lily [19:55] Lily is the character from HIMYM (I love that series) :) [19:55] http://launchpad.net/zeitgeist-sharp/0.1/0.1.1 [19:55] libQZeitgeist - 0.1 "Hit ‘n Run" [19:55] http://www.gitorious.org/kde-zeitgeist/libqzeitgeist/archive-tarball/master [19:55] and for dataproviders we have only snapshot releases [19:55] which we package [19:56] There are 5 minutes remaining in the current session. [19:56] godbyk asked: What are some of your favorite future plans for Zeitgeist? How and where would you like to see it be used in the future? [19:56] godbyk: nice question [19:56] godbyk, alot [19:56] fav plans are [19:56] having a good blacklist plugin [19:56] that is wat everyone wants [19:56] and Banshee integration [19:56] which is my fav thing [19:56] and the geolocation deployment [19:56] yes [19:57] and syncing service [19:57] which is half implemented [19:57] it uses django [19:57] seiflotfy: shall we move to next quesiton? [19:57] JackyAlcine asked: Zeitgeist is a semantic framework, like NEPOMUK, no? Is it possible to use this to do automation tasks like perhaps, backups of the last few used documents? [19:57] JackyAlcine, no its not like NEPOMUK [19:57] seiflotfy: your turn to answer this [19:57] NEPOMUK is a ontology [19:57] NEPOMUK KDE is a repository [19:58] NEPOMUK KDE knows about what your files are about [19:58] Zeitgeist is a log [19:58] it knows how you use your files and how they are contextually related [19:58] !q [19:59] techbreak_ asked: any video log it keeps ? [19:59] what do you mean [19:59] if u have any questions please join #zeitgeist [19:59] we will be happy to help you out there [19:59] our time is up [19:59] so thanks you [19:59] we have most of our discussion on irc [19:59] and we hardly use mailing lists [19:59] thanks you everyone }}}