Dev Week -- Rocking with Zeitgeist -- manish and seiflotfy -- Tue, Mar 1st, 2011
1 [19:01] <seiflotfy> manish, ready
2 [19:01] <seiflotfy> ?
3 [19:01] <manish> yes
4 [19:01] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/03/01/%23ubuntu-classroom.html following the conclusion of the session.
5 [19:01] <manish> Hello everyone
6 [19:01] <manish> This session will introduce you to zeitgeist
7 [19:01] <manish> and its related to components
8 [19:01] <manish> the agenda is here https://wiki.ubuntu.com/UbuntuDeveloperWeek/Sessions
9 [19:01] <manish> scroll down
10 [19:01] <manish> I will post it here
11 [19:01] <manish> What is Zeitgeist and what it is not - 10 mins
12 [19:02] <manish> Security Implications - 5 mins
13 [19:02] <manish> Technologies used - 5 mins
14 [19:02] <manish> Components of Zeitgeist - 10 mins
15 [19:02] <manish> Integration of Zeitgeist in applications - 10 mins
16 [19:02] <manish> Latest release numbers and installing zeitgeist - 5 mins
17 [19:02] <manish> and finally FAQ for 15 mins
18 [19:03] <manish> I have allocated FAQ for 15 mins because I see there are a lot of confusion reguarding what zeitgeist is
19 [19:03] <manish> Let us start with first
20 [19:03] <manish> What is zeitgeist?
21 [19:03] <manish> Zeitgeist is an event logger which keeps a track of your activities while you are using your computer (any supported computing device).
22 [19:03] <manish> Events such as opening files, closing files, recieveing calls, sending a message on Instant Messenger (GTalk, Yahoo etc) are logged by Zeitgeist.
23 [19:04] <manish> The logging can be configured, so you have the complete control on what is logged and what is not.
24 [19:04] <manish> This data can then be used for variety of useful activities.
25 [19:04] <manish> Some of the possibilities are having a complete skype, empathy, pidgin call log.
26 [19:04] <manish> Finding out with you converse the most.
27 [19:04] <manish> You can check which applications you launch the most and how many times you have opened a specific file.
28 [19:05] <manish> People ask me - what are the possibilities of the things we can do with this
29 [19:05] <manish> I reply - The possibilities are endless, the sky is the limit
30 [19:05] <manish> I am hoping on you people to come up with innovative ideas after this session
31 [19:05] <manish> after coming to know what zeitgeist is exactly an what it is not
32 [19:05] <manish> so now what zeitgeist is not?
33 [19:06] <manish> First and formost - Zeitgeist is not a search engine!!!
34 [19:06] <manish> remember this
35 [19:06] <manish> it is an event logged
36 [19:06] <manish> *logger
37 [19:06] <manish> If you have some file on your system, then don't expect zeitgeist to search for it.
38 [19:07] <manish> It is not the work of zeitgeist to scan you disks and find files.
39 [19:07] <manish> It's work is to track your activities and log it.
40 [19:07] <manish> As opposed to general misconception, zeitgeist doesn't track files
41 [19:07] <manish> Zeitgeist deals with events and not files.
42 [19:07] <manish> There are events where no file is involved like recieveing a call.
43 [19:07] <ClassBot> UndiFineD asked: are there apps for mobiles, to be keeping track of my android
44 [19:08] <manish> actually work is going on to port it to phones too
45 [19:08] <manish> we had a prototype for Maemo
46 [19:08] <seiflotfy> and android
47 [19:08] <manish> but sadly Maemo's future is not clear after it got merged with Meego which again is a bit confusing
48 [19:08] <manish> we are working on android
49 [19:09] <seiflotfy> http://zeitgeist-android.com/
50 [19:09] <manish> since Android doesn't use the standard linux stack, some work is needed for making it run on android
51 [19:09] <manish> esp testing the port is very important
52 [19:09] <ClassBot> darkdevil71 asked: is it a key logger ?
53 [19:10] <seiflotfy> darkdevil71, no its not
54 [19:10] <manish> darkdevil71: I will come to it. It is the next topic. The security implication
55 [19:10] <manish> darkdevil71: it doesnt track each and every key you press
56 [19:11] <manish> it just logs your activity
57 [19:11] <manish> most opening and closing of files
58 [19:11] <manish> and some other events
59 [19:11] <manish> which events you want to send is configurable
60 [19:11] <manish> though the api is still a bit crippled
61 [19:11] <manish> Next is - Security Implications
62 [19:11] <manish> You might heard that Zeitgeist is a malware/spyware which tracks your activities.
63 [19:11] <manish> This is not an exact definition of malware/spyware.
64 [19:12] <manish> Malwares record your activity, steal your data without your approval and sneak into the system without system. They have a destructive intention.
65 [19:12] <manish> Contrast this with zeitgeist, it records events so that it can be used for constructive purposes.
66 [19:12] <manish> It's like nuclear technology.
67 [19:12] <manish> Use it constructively, it will benefit mankind, use it destructively and you will be harmed.
68 [19:12] <manish> One concern people raise is that if some malware is installed, then it can steal the zeitgeist data.
69 [19:13] <manish> In this scenario, if a malware is installed, then you are at a bigger risk than just getting your zeitgeist data stolen.
70 [19:13] <manish> Your pidgin passwords are stored in plain text in your home directory.
71 [19:13] <manish> (last when I used pidgin)
72 [19:13] <manish> Your browser's history is very easily accessible.
73 [19:13] <manish> If you have not set the master password in Firefox, then even your passwords are available to the malware.
74 [19:14] <manish> any questions related to security implications?
75 [19:15] <manish> Next up we have - Technologies used in Zeitgeist
76 [19:15] <manish> Zeitgeist is written using Python and uses sqlite to store the events.
77 [19:15] <manish> It exposes an API using DBus using which other applications can communicate with it.
78 [19:16] <manish> Below the hood, it is basically dependent on glib which makes zeitgeist portable.
79 [19:16] <manish> Get a proper port of dbus and glib on windows and zeitgeist should run there without much issues.
80 [19:17] <manish> or in this case any other OS
81 [19:17] <manish> Next up - Components of zeitgeist
82 [19:18] <manish> Zeitgeist is not a single project
83 [19:18] <manish> but a collection is components
84 [19:18] <manish> helper libraries etc
85 [19:18] <seiflotfy> a framework more or less
86 [19:18] <manish> yeah
87 [19:18] <manish> the core part is the engine
88 [19:18] <manish> or the daemon
89 [19:19] <manish> At the core of zeitgeist is an engine which stores all the events and acts as the store.
90 [19:19] <manish> It recieves and provides relevant information(events) to other process.
91 [19:19] <manish> The information is exposed via a DBus Session bus.
92 [19:19] <manish> If the zeitgeist server is not running, the first time an application invokes a method over DBus, the daemon is started.
93 [19:20] <manish> 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
94 [19:20] <manish> The second component is called the datahub
95 [19:20] <manish> I know sounds dangerous a bit
96 [19:21] <manish> it is a passive logger
97 [19:21] <manish> there needs to be some component which keeps on pushing data to the daemon
98 [19:21] <manish> or the daemon is nothing more than a white elephant
99 [19:21] <manish> Thanks to aquarius that is called DBus activation -- autostarting a session bus when first call is made.
100 [19:21] <manish> coming back
101 [19:22] <manish> so datahub is a logger
102 [19:22] <manish> which also runs as a daemon
103 [19:22] <manish> and looks at the recently used files
104 [19:22] <manish> and pushes them in the daemon
105 [19:23] <manish> so basically when you open a file by double clicking using nautilus datahub comes in picture
106 [19:23] <manish> I wont go much in the geekery of implementation
107 [19:23] <manish> for adventurous people - "bzr branch lp:zeitgeist-datahub" is your friend
108 [19:24] <manish> one more thing I forgot was telling you people about our website, sorry
109 [19:24] <manish> http://zeitgeist-project.com/
110 [19:24] <manish> Download section: http://zeitgeist-project.com/download/
111 [19:24] <manish> development - http://zeitgeist-project.com/development/
112 [19:24] <manish> and we are always available at #zeitgeist on freenode
113 [19:25] <manish> next up - Activity Journal
114 [19:25] <manish> it was formely called gnome-activity-journal
115 [19:25] <manish> it is a GUI viewer for your events
116 [19:25] <manish> like a dashboard
117 [19:26] <manish> 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.
118 [19:26] <manish> you can install it, it is in the repos
119 [19:26] <manish> as gnome-activity-journal
120 [19:26] <manish> 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.
121 [19:26] <manish> next up is - Dataproviders
122 [19:27] <manish> Dataproviders are small extension/addins/addons/plugins into applications which can push events to zeitgeist.
123 [19:27] <manish> we also call it datasources
124 [19:27] <manish> same thing
125 [19:27] <manish> Datahub cannot push everything to the daemon.
126 [19:27] <manish> It mostly tracks opening of files by double-clicking from file browser.
127 [19:27] <manish> Using data-providers more *relevant* events can be added like "Creating a new playlist", "Buying a track from foo music store"
128 [19:27] <manish> next up is - Extensions
129 [19:28] <manish> When we say extensions, it refers to zeitgeist daemon extensions.
130 [19:28] <manish> means the extensions for the daemon
131 [19:28] <manish> and not the client
132 [19:28] <manish> Zeitgeist extensions are those components using which you can control he behavior of how the daemon behaves. You can expose additional information via DBus.
133 [19:28] <manish> 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. :)
134 [19:28] <manish> If you want to have an inner scoop of extensions behavior, check
135 [19:28] <manish> http://milky.manishsinha.net/2010/11/27/zeitgeist-daemon-extensions-explained/
136 [19:29] <ClassBot> chadadavis asked: facilities for plugins, e.g. Facebook to include external activity streams?
137 [19:29] <manish> chadadavis: yes
138 [19:29] <manish> that is what I was telling about dataproviders
139 [19:29] <manish> I or you can write dataprovieders
140 [19:29] <manish> which can probably run as a daemon pulling data from all your web apps
141 [19:29] <manish> and logging them in zeitgeist
142 [19:30] <manish> which is again browsable
143 [19:30] <manish> chadadavis: nice idea. Added to my TODO
144 [19:30] <ClassBot> MickStep asked: is it likly that a syncing service will every be created for zeitgeist, like tomboy created snowy
145 [19:30] <manish> MickStep: yes. We were working on it
146 [19:30] <manish> but due to some shortage of time
147 [19:30] <manish> personal lie
148 [19:31] <manish> and other important priorities related to zeitgeist pushed this feature a bit below our priority queue
149 [19:31] <manish> thanks for bringing it up
150 [19:31] <manish> will look into it
151 [19:31] <manish> People, ask your questions :)
152 [19:31] <ClassBot> jderose asked: Speaking of syncing, are alternate storage backends a possibility for Zeitgeist, like say desktopcouch?
153 [19:31] <manish> jderose: right now none. It can be looked into
154 [19:32] <manish> but the thing is that is not worth the effort as of now. Since right now we are spending our time in deploying zeitgeist
155 [19:32] <manish> integration with applications
156 [19:33] <manish> for you call, you can add our zeitgeist ppa or latest packages. Sadly most of the packages are for Maverick
157 [19:33] <manish> https://launchpad.net/~zeitgeist/+archive/ppa
158 [19:33] <manish> this PPA
159 [19:33] <manish> there are many zeitgeist-datasources-* packages
160 [19:33] <manish> like one for tomboy
161 [19:34] <manish> if you install that package
162 [19:34] <manish> zeitgeist-datasource-tomboy
163 [19:34] <manish> then your opened, closed notes will appear in GAJ :)
164 [19:34] <manish> if you install the -xchat datasource
165 [19:34] <manish> it will show you which all channels you joined
166 [19:34] <manish> when you talked
167 [19:34] <manish> when you quit, parted
168 [19:35] <manish> cando_ is the current maintainer of gnome-activity-journal
169 [19:35] <manish> there are many datasources/dataproviders have a look at them in the PPA
170 [19:36] <manish> next is Language bindings
171 [19:40] <manish> by language bindings I mean, language specific wrappers over zeitgeist api
172 [19:40] <manish> you can use zeitgeist using it's python client
173 [19:40] <manish> which is shipped along with the daemon
174 [19:40] <manish> for C/Vala we have libzeitgeist
175 [19:40] <manish> http://launchpad.net/libzeitgeist
176 [19:40] <manish> for mono (C#) we have zeitgeist-sharp http://launchpad.net/zeitgeist-sharp
177 [19:40] <manish> Qt - libqzeitgeist
178 [19:40] <manish> http://gitorious.org/kde-zeitgeist/libqzeitgeist
179 [19:40] <manish> and we also have for javascript
180 [19:40] <manish> but still it is not not yet mature
181 [19:40] <manish> needs work
182 [19:40] <manish> next is Zeitgeist integration
183 [19:40] <manish> 1) Unity
184 [19:40] <manish> okay I will come to it
185 [19:40] <manish> now lets goto questions
186 [19:40] <ClassBot> techbreak_ asked: its in gsoc ?
187 [19:40] <manish> if you asked if zeitgeist is in gsoc, then we are trying, not sure if we need to apply independently
188 [19:40] <manish> it doesnt make sense
189 [19:40] <manish> we need zeitgeist integration in applications like kde, gnome apps
190 [19:40] <seiflotfy> zeitgeist will be offering some work over several organizations
191 [19:40] <seiflotfy> such as KDE, GNOME and hopefully Ubunut
192 [19:40] <ClassBot> UndiFineD asked: can we read out data from zeitgeist, if so could we get some statistics, maybe people would like to compare productivity
193 [19:40] <manish> UndiFineD: yes. you can
194 [19:40] <manish> use the API
195 [19:40] <manish> if you like, you can use the language of your choice
196 [19:40] <manish> Python, C, Vala, C#, Javascript
197 [19:41] <manish> as I can see in the -chat channel, there is some confusion
198 [19:41] <manish> zeitgeist doesnt look for any data
199 [19:41] <manish> it just sits and waits for events to be pushed
200 [19:41] <manish> when asked it hands out events
201 [19:42] <manish> the pushing it done by datasources
202 [19:42] <ClassBot> jeyd asked: what about the xchat datasource in LUCID?
203 [19:43] <manish> jeyd: we need to put that too. I can see that -datasources package is there for lucid
204 [19:43] <manish> and the lucid package doesnt have xchat
205 [19:43] * manish puts this in TODO
206 [19:43] <manish> for more info https://launchpad.net/~zeitgeist/+archive/ppa/+packages
207 [19:44] <ClassBot> godbyk asked: Does Zeitgeist only pay attention to the channel part/join events and ignore what was actually said in the channel?
208 [19:44] <manish> godbyk: it wont log each and every line you said
209 [19:44] <manish> use your irc client's logging functionality
210 [19:45] <ClassBot> techbreak_ asked: which language it is written inn ?
211 [19:45] <manish> as I said zeitgeist is written in Python
212 [19:46] <ClassBot> MickStep asked: What is the simplest example you can provide for how to write a dataprovider
213 [19:46] <manish> there is one
214 [19:46] <manish> I will use Python's example
215 [19:47] <manish> you can check it in git.
216 [19:47] <manish> git.gnome.or
217 [19:47] <manish> this one
218 [19:48] <manish> http://git.gnome.org/browse/rhythmbox/tree/plugins/rbzeitgeist/rbzeitgeist/__init__.py
219 [19:48] <manish> the RB plugin
220 [19:48] <manish> We have implemenation for Unity
221 [19:48] <manish> 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.
222 [19:48] <manish> 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.
223 [19:49] <manish> a snapshot by seiflotfy
224 [19:49] <manish> http://zeitgeist-project.com/wp-content/uploads/2010/12/unity-most-used-apps.png
225 [19:49] <manish> then we have it integrated in Synapse
226 === sre-su_ is now known as sre-su
227 [19:49] <manish> the uber-cool launcher written by mhr3 and his team
228 [19:49] <manish> 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.
229 [19:50] <manish> 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.
230 [19:50] <manish> obligatory snapshot - http://zeitgeist-project.com/wp-content/uploads/2010/12/synapse-search-sort-apps-ranking.png
231 [19:50] <manish> I already told about Activity Journal
232 [19:50] <manish> http://zeitgeist-project.com/wp-content/uploads/2010/12/gaj-diary.png
233 [19:50] <manish> http://zeitgeist-project.com/wp-content/uploads/2010/12/gaj-timeline.png
234 [19:50] <seiflotfy> manish, i think it would be cool to show them the tomboy plugin that provides "used with"
235 [19:50] <manish> yeah
236 [19:51] <ClassBot> There are 10 minutes remaining in the current session.
237 [19:51] <manish> The used with is here http://thoughts.manishsinha.net/photo/1280/2890463378/1/tumblr_lfh52cBm7g1qcwfsm
238 [19:51] <manish> here you can even see bzr plugin in action
239 [19:51] <manish> and xchat plugin in action
240 [19:51] <manish> seiflotfy: you have a snapshot with tomboy plugin
241 [19:51] <manish> can you take one and upload before this session gets over?
242 [19:52] <seiflotfy> yeah
243 [19:52] <manish> last in integration section is Docky
244 [19:52] <manish> The integration with Zeitgeist is in the form of generating jump-lists for applications and folders
245 [19:52] <manish> 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.
246 [19:52] <manish> snapshot: http://zeitgeist-project.com/wp-content/uploads/2010/12/docky-folder-jump1-300x289.png
247 [19:52] <manish> http://zeitgeist-project.com/wp-content/uploads/2010/12/docky-app-jump-300x300.png
248 [19:53] <seiflotfy> http://seilo.geekyogre.com/2010/08/zeitgeist-hearts-tomboy/
249 [19:53] <seiflotfy> this is a video of zeitgeist being used by tomboy
250 [19:53] <manish> Next is Installation:
251 [19:53] <manish> Stable PPA: http://launchpad.net/~zeitgeist/+archive/ppa
252 [19:53] <manish> I have an experimental PPA where i love to upload packages
253 [19:53] <manish> bleeding edge
254 [19:53] <manish> enough to break your system
255 [19:53] <manish> http://launchpad.net/~manishsinha/+archive/experimental
256 [19:54] <manish> use it with care, if you are adventurous, this is you best best
257 [19:54] <manish> The best way to install zeitgeist is from PPA of official repos
258 [19:54] <manish> *or
259 [19:54] <manish> or if you want to check the latest versions
260 [19:54] <manish> Zeitgeist Engine - 0.7 "All I have is this woodchuck"
261 [19:54] <manish> http://launchpad.net/zeitgeist/0.7/0.7
262 [19:54] <manish> Zeitgeist Datahub - 0.7.0
263 [19:54] <manish> http://launchpad.net/zeitgeist-datahub/0.7/0.7.0
264 [19:54] <manish> Activity Journal - 0.6.0 "Pink Unicorns don't exist"
265 [19:54] <manish> http://launchpad.net/gnome-activity-journal/0.6/0.6.0
266 [19:55] <manish> libzeitgeist - 0.3.2 Rattleweed
267 [19:55] <manish> http://launchpad.net/libzeitgeist/0.3/0.3.2
268 [19:55] <manish> zeitgeist-sharp - 0.1.1 Lily
269 [19:55] <manish> Lily is the character from HIMYM (I love that series) :)
270 [19:55] <manish> http://launchpad.net/zeitgeist-sharp/0.1/0.1.1
271 [19:55] <manish> libQZeitgeist - 0.1 "Hit ‘n Run"
272 [19:55] <manish> http://www.gitorious.org/kde-zeitgeist/libqzeitgeist/archive-tarball/master
273 [19:55] <manish> and for dataproviders we have only snapshot releases
274 [19:55] <manish> which we package
275 [19:56] <ClassBot> There are 5 minutes remaining in the current session.
276 [19:56] <ClassBot> 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?
277 [19:56] <manish> godbyk: nice question
278 [19:56] <seiflotfy> godbyk, alot
279 [19:56] <manish> fav plans are
280 [19:56] <manish> having a good blacklist plugin
281 [19:56] <manish> that is wat everyone wants
282 [19:56] <manish> and Banshee integration
283 [19:56] <manish> which is my fav thing
284 [19:56] <seiflotfy> and the geolocation deployment
285 [19:56] <manish> yes
286 [19:57] <manish> and syncing service
287 [19:57] <manish> which is half implemented
288 [19:57] <manish> it uses django
289 [19:57] <manish> seiflotfy: shall we move to next quesiton?
290 [19:57] <ClassBot> 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?
291 [19:57] <seiflotfy> JackyAlcine, no its not like NEPOMUK
292 [19:57] <manish> seiflotfy: your turn to answer this
293 [19:57] <seiflotfy> NEPOMUK is a ontology
294 [19:57] <seiflotfy> NEPOMUK KDE is a repository
295 [19:58] <seiflotfy> NEPOMUK KDE knows about what your files are about
296 [19:58] <seiflotfy> Zeitgeist is a log
297 [19:58] <seiflotfy> it knows how you use your files and how they are contextually related
298 [19:58] <seiflotfy> !q
299 [19:59] <ClassBot> techbreak_ asked: any video log it keeps ?
300 [19:59] <seiflotfy> what do you mean
301 [19:59] <seiflotfy> if u have any questions please join #zeitgeist
302 [19:59] <seiflotfy> we will be happy to help you out there
303 [19:59] <seiflotfy> our time is up
304 [19:59] <seiflotfy> so thanks you
305 [19:59] <manish> we have most of our discussion on irc
306 [19:59] <manish> and we hardly use mailing lists
307 [19:59] <manish> thanks you everyone