Zeitgeist
App Developer Week -- Zeitgeist API & Zeitgeist Application Integration -- m4n1sh & seiflotfy -- Tue, Apr 12th, 2011
1 [18:01] <dpm> Next up are m4n1sh (or m4n1sh_) and seiflotfy from the Zeitgeist project, who are going to talk about integrating Zeitgeist to your application
2 === ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu App Developer Week - Current Session: Zeitgeist API & Zeigeist Application Integration - Instructors: m4n1sh, seiflofty
3 [18:01] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/04/12/%23ubuntu-classroom.html following the conclusion of the session.
4 [18:02] <m4n1sh> Hello everyone
5 [18:02] <m4n1sh> My name is Manish Sinha
6 [18:02] <m4n1sh> and seiflotfy is Seif Lotfy
7 [18:02] <m4n1sh> we both work in Zeitgeist team
8 [18:02] <m4n1sh> I am just giving a small introduction
9 [18:03] <m4n1sh> Seif is the founder of Zeitgeist
10 [18:03] <m4n1sh> and I work on integration and some engine work
11 [18:03] <m4n1sh> Let us start seiflotfy :)
12 [18:03] <m4n1sh> first a basic introduction
13 [18:03] <m4n1sh> Zeitgeist is an event logger
14 [18:03] <m4n1sh> which logs the events which happens on your computer
15 [18:03] <m4n1sh> events can be opening files
16 [18:03] <m4n1sh> closing files
17 [18:03] <m4n1sh> creating files
18 [18:04] <m4n1sh> connecting to internet
19 [18:04] <m4n1sh> receiving a call
20 [18:04] <m4n1sh> all the event logging doesnt happen automagically
21 === ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu App Developer Week - Current Session: Zeitgeist API & Zeigeist Application Integration - Instructors: m4n1sh, seiflofty, manish
22 [18:04] <m4n1sh> zeitgeist is a daemon running on your computer
23 [18:04] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/04/12/%23ubuntu-classroom.html following the conclusion of the session.
24 [18:04] <m4n1sh> whose work is to get events
25 [18:04] <m4n1sh> means log them
26 [18:05] <m4n1sh> when some application sends the data to it
27 [18:05] <m4n1sh> and applications can also query events from the daemon
28 [18:05] <m4n1sh> it is like a event store
29 [18:05] <m4n1sh> when we talk about integration, we mean creating small plugins/extensions/addons/addins which sends the relevant events to the daemon
30 [18:06] <m4n1sh> so basically it is the plugins which push data
31 [18:06] <m4n1sh> all the plugins which push events are called dataproviders
32 [18:06] <m4n1sh> their work is to only push data
33 [18:07] <m4n1sh> like whenever you open a note, a tomboy extension tells zeitgeist that the user opened the note
34 [18:07] <m4n1sh> this extension is called an Event
35 [18:07] <m4n1sh> the most important part of Zeitgeist is called an event
36 [18:07] <m4n1sh> event is a packet of information which tells the daemon of "What happened"
37 [18:07] <m4n1sh> take the literal meaning of event
38 [18:08] <m4n1sh> each event instance has metadata contained with it
39 [18:08] <m4n1sh> like timestamp
40 [18:08] <m4n1sh> what happened
41 [18:08] <m4n1sh> how it happened
42 [18:08] <m4n1sh> any payload
43 [18:08] <m4n1sh> which application was involved in the event etc
44 [18:08] <m4n1sh> zeitgeist runs as a daemon and exposes an API via DBus
45 [18:09] <m4n1sh> DBus is an interprocess communication software
46 [18:09] <m4n1sh> it helps applications talk to each other
47 [18:09] <m4n1sh> to inspect the zeitgeist API
48 [18:09] <m4n1sh> you can install d-feet from the repositories
49 [18:09] <m4n1sh> and open it
50 [18:09] <m4n1sh> and search for zeitgeist
51 [18:09] <m4n1sh> you will get something like this
52 [18:09] <m4n1sh> http://i.imgur.com/DKx0G.png
53 [18:09] <m4n1sh> the zeitgeist API looks like this
54 [18:09] <m4n1sh> http://zeitgeist-project.com/docs/0.5.2/dbus_api.html#org-gnome-zeitgeist-log
55 [18:10] <m4n1sh> let us start with the basic building block of zeitgeist
56 [18:10] <m4n1sh> an Event
57 [18:10] <m4n1sh> how event looks like is given here
58 [18:10] <m4n1sh> http://zeitgeist-project.com/docs/0.6/dbus_api.html#index-0
59 [18:10] <m4n1sh> the first thing is an event Id
60 [18:10] <m4n1sh> which recognizes it uniquely
61 [18:10] <m4n1sh> 2nd is Timestamp telling when it happened
62 [18:11] <m4n1sh> 3rd is interpretation
63 [18:11] <m4n1sh> which means
64 [18:11] <m4n1sh> “what happenedâ€
65 [18:11] <m4n1sh> 4th is Manifestation
66 [18:11] <m4n1sh> which means
67 [18:11] <m4n1sh> “how did this happenâ€
68 [18:11] <m4n1sh> then we have an actor which looks like application://tomboy.desktop
69 [18:11] <m4n1sh> which tells which application was involved in the event
70 [18:12] <m4n1sh> this is the metadata for an event
71 [18:12] <m4n1sh> each event can then contain something called as Subject
72 [18:12] <m4n1sh> each event can have more than one subject
73 [18:12] <m4n1sh> now we should go to what is subject contained of
74 [18:12] <m4n1sh> URI which is something like file:///tmp/my.txt
75 [18:13] <m4n1sh> Interpretation - the abstract notion of what the subject
76 [18:13] <m4n1sh> Manifestation - the abstract notion of how the subject is stored or available
77 [18:13] <m4n1sh> like the subject is stored as a File
78 [18:13] <m4n1sh> Origin - the URI where the user accessed the subject from
79 [18:13] <m4n1sh> Mimetype
80 [18:13] <m4n1sh> which is something like text/plain
81 [18:13] <m4n1sh> image/png
82 [18:14] <m4n1sh> Text - a descriptive explanation
83 [18:14] <m4n1sh> Storage - how it is stored
84 [18:14] <m4n1sh> I know all these were a bit boring, but it is important for a developer to understand what an event actually is
85 [18:14] <m4n1sh> to access Zeitgeist API
86 [18:14] <m4n1sh> you have Python bindings
87 [18:14] <m4n1sh> C/Vala bindings
88 [18:14] <m4n1sh> C# bindings
89 [18:15] <m4n1sh> so you can choose your language
90 [18:15] <m4n1sh> if you are working on a application which needs zeitgeist integration and it is coded in Python then you can use the python binding of zeitgeist
91 [18:15] <m4n1sh> you lets move to the API
92 [18:15] <m4n1sh> this is the API
93 [18:15] <m4n1sh> http://zeitgeist-project.com/docs/0.5.2/dbus_api.html#org-gnome-zeitgeist-log
94 [18:16] <m4n1sh> lets not go so deep in the API
95 [18:16] <m4n1sh> only a few methods
96 [18:16] <m4n1sh> like InsertEvents
97 [18:16] <m4n1sh> which inserts events in the daemon
98 [18:17] <m4n1sh> GetEvents - which gets events from the daemon when you specify the event ids
99 [18:17] <m4n1sh> And 3rd
100 [18:17] <m4n1sh> FindEventIds - you can search for events
101 [18:17] <m4n1sh> and get back the event Ids
102 [18:17] <m4n1sh> FindEvents - you can search for events, and get the actual events instead of just the ID
103 [18:18] <m4n1sh> when searching for an event you use the event template
104 [18:18] <m4n1sh> it is like a pattern
105 [18:18] <m4n1sh> the best part is that event template are events themselves
106 [18:18] <m4n1sh> they are represented the same way
107 [18:18] <m4n1sh> let me take you people to an example which will clear all the doubts
108 [18:18] <m4n1sh> we will take a working example
109 [18:19] <m4n1sh> our example uses python API
110 [18:19] <m4n1sh> git.gnome.org/browse/rhythmbox/tree/plugins/rbzeitgeist/rbzeitgeist/__init__.py
111 [18:19] <m4n1sh> please open this file
112 [18:20] <m4n1sh> now I am teaching how to push events
113 [18:20] <m4n1sh> not pulling
114 [18:20] <m4n1sh> check line 36 and 37 of the link I have
115 [18:20] <m4n1sh> *gave
116 [18:20] <m4n1sh> from zeitgeist.client import ZeitgeistClient
117 [18:20] <m4n1sh> from zeitgeist.datamodel import Event, Subject, Interpretation, Manifestation
118 [18:21] <m4n1sh> we imported Evebt, Subject, Manifestation and Interpretation
119 [18:21] <m4n1sh> now we have to determine the Interpretation for Event and Subject
120 [18:21] <m4n1sh> similarly Manifestation for Event and Subject
121 [18:22] <m4n1sh> Event Interpretation is either LEAVE_EVENT or ACCESS_EVENT
122 [18:22] <m4n1sh> which means "what happened"
123 [18:23] <m4n1sh> ACCESS_EVENT means that the track started
124 [18:23] <m4n1sh> we are at the start of the event
125 [18:23] <m4n1sh> means we started playing the track
126 [18:23] <m4n1sh> LEAVE_EVENT means we left the track
127 [18:23] <m4n1sh> means track finished
128 [18:23] <m4n1sh> Event Manifestation: USER_ACTIVITY/SCHEDULED_ACTIVITY : 120/122 - "how did this happen"
129 [18:23] <m4n1sh> How did it happen?
130 [18:23] <m4n1sh> It happened via User Activity or Scheduled Activity
131 [18:24] <m4n1sh> UserActivity means that the user himself pressed Next track
132 [18:24] <m4n1sh> Scheduled means the next track in the queue started itself
133 [18:24] <m4n1sh> check line 120 and 122
134 [18:25] <m4n1sh> the list of interprerations is here http://zeitgeist-project.com/docs/0.6/ontology.html#symbol-interpretation
135 [18:25] <m4n1sh> and list of Manifestation http://zeitgeist-project.com/docs/0.6/ontology.html#symbol-manifestation
136 [18:25] <m4n1sh> please choose one from these list
137 [18:25] <m4n1sh> next is Subject Interpration
138 [18:25] <m4n1sh> Subject Interpretation: AUDIO : 135 - "what is this"
139 [18:25] <m4n1sh> check line 135
140 [18:25] <m4n1sh> What is this? It is Audio :)
141 [18:26] <ClassBot> akshatj asked: Are there guides available on how to write a dataprovider or plugin?
142 [18:26] <m4n1sh> akshatj: there are definitive guide. This session is meant for that :)
143 [18:26] <m4n1sh> next is Subject Manifestation
144 [18:26] <m4n1sh> check line 62
145 [18:26] <m4n1sh> Manifestion for subject asks
146 [18:26] <m4n1sh> "how does this item exist"
147 === jhernandez is now known as jhernandez_afk
148 [18:26] <m4n1sh> it exists as FILE_DATA_OBJECT
149 [18:27] <m4n1sh> all these values are from the list of Manifestation
150 [18:27] <m4n1sh> I will give you people one more example to study yourself
151 [18:27] <m4n1sh> It is EOG Plugin
152 [18:27] <m4n1sh> the file is
153 [18:27] <m4n1sh> http://bazaar.launchpad.net/~zeitgeist-dataproviders/zeitgeist-dataproviders/trunk/view/head:/eog/zeitgeist_plugin.py
154 [18:27] <m4n1sh> Hints are
155 [18:27] <m4n1sh> Event Interpretation: MODIFY_EVENT/LEAVE_EVENT : 69/87 - "what happened"
156 [18:27] <m4n1sh> Event Manifestation: USER_ACTIVITY : 70/88 - "how did this happen"
157 [18:27] <m4n1sh> Subject Interpretation: IMAGE : 61 - "what is this"
158 [18:27] <m4n1sh> Subject Manifestation: FILE_DATA_OBJECT : 62 - "how does this item exist"
159 [18:28] <m4n1sh> Keep the questions coming people
160 [18:28] <m4n1sh> More examples
161 [18:28] <m4n1sh> Tomboy:
162 [18:28] <m4n1sh> http://bazaar.launchpad.net/~zeitgeist-dataproviders/zeitgeist-dataproviders/trunk/files/head:/tomboy/
163 [18:28] <m4n1sh> Banshee: https://gitorious.org/banshee-community-extensions/banshee-community-extensions/blobs/master/src/ZeitgeistDataprovider/Banshee.ZeitgeistDataprovider/ZeitgeistDataprovider.cs
164 [18:28] <m4n1sh> I would also like to defuse a few myths
165 [18:28] <m4n1sh> Zeitgeist is not a file search engine
166 [18:28] <m4n1sh> it does not track files
167 [18:29] <m4n1sh> there can be events for zeitgeist which might not need a file
168 [18:29] <m4n1sh> like you got disconnected from internet
169 [18:29] <m4n1sh> or you recieved a call
170 [18:29] <m4n1sh> I would like to recieve some feedback from you people before I advance to next part of the session
171 [18:29] <m4n1sh> you can keep them coming on -chat channel
172 [18:30] <m4n1sh> moving to next part
173 [18:31] <m4n1sh> we have to search for events
174 [18:31] <m4n1sh> for searching for events
175 [18:31] <m4n1sh> we can look at the method
176 [18:31] <m4n1sh> FindEvents
177 [18:31] <m4n1sh> it contains
178 [18:32] <ClassBot> murphy asked: Can you please give an example of some context sensitive situation Zeitgeist helps with?
179 [18:32] <m4n1sh> murphy: as seiflotfy gave you the link on -chat
180 [18:32] <m4n1sh> http://www.youtube.com/watch?v=U6YOvVaRWh4
181 [18:32] <m4n1sh> this is an example
182 [18:32] <m4n1sh> it contains
183 [18:32] <m4n1sh> time_range
184 [18:33] <m4n1sh> which tells you the range of time when you want to search
185 [18:33] <m4n1sh> like you want to search for events only between today and 3 days back
186 [18:33] <m4n1sh> event_templates
187 [18:33] <m4n1sh> you can create event instances and pass it
188 [18:33] <m4n1sh> the daemon will compare these templates to the stored events
189 [18:34] <m4n1sh> and provide you with the results
190 [18:34] <m4n1sh> storage_state
191 [18:34] <m4n1sh> it is
192 [18:34] <m4n1sh> Enumeration class defining the possible values for the storage state of an event subject.
193 [18:34] <m4n1sh> http://zeitgeist-project.com/docs/0.5.2/datamodel.html#zeitgeist.datamodel.StorageState
194 [18:34] <m4n1sh> contains 3 values
195 [18:34] <m4n1sh> StorageState.NotAvailable
196 [18:34] <m4n1sh> The storage medium of the events subjects must not be available to the user. (Integer value: 0)
197 [18:34] <m4n1sh> StorageState.Available
198 [18:34] <m4n1sh> The storage medium of all event subjects must be immediately available to the user. (Integer value: 1)
199 [18:34] <m4n1sh> StorageState.Any
200 [18:34] <m4n1sh> The event subjects may or may not be available. (Integer value: 2)
201 [18:35] <m4n1sh> then we have
202 [18:35] <m4n1sh> num_events
203 [18:35] <m4n1sh> maximal amount of returned events
204 [18:35] <m4n1sh> last one is
205 [18:35] <m4n1sh> order
206 [18:35] <m4n1sh> which asks in which order the results have to be returned
207 [18:36] <m4n1sh> result type is an enumration
208 [18:36] <m4n1sh> http://zeitgeist-project.com/docs/0.5.2/datamodel.html#zeitgeist.datamodel.ResultType
209 [18:36] <m4n1sh> it has many values
210 [18:36] <m4n1sh> have a look
211 [18:36] <m4n1sh> this contains the full list of events
212 [18:36] <m4n1sh> http://zeitgeist-project.com/docs/0.5.2/dbus_api.html#org-gnome-zeitgeist-log
213 [18:37] <m4n1sh> now we have an example of how we can pull the events
214 [18:37] <m4n1sh> we have a gedit plugin
215 [18:37] <m4n1sh> here
216 [18:37] <m4n1sh> http://paste.ubuntu.com/593228/
217 [18:37] <m4n1sh> written by seiflotfy and others
218 [18:37] <m4n1sh> seiflotfy: can you explain this
219 [18:37] <seiflotfy> sure
220 [18:37] <seiflotfy> so
221 [18:37] <seiflotfy> template = Event()
222 [18:37] <seiflotfy> template.actor = "application://gedit.desktop"
223 [18:37] <seiflotfy> here you can see an Event being created
224 [18:38] <seiflotfy> and the actor of the event is being set to "gedit"
225 [18:38] <seiflotfy> we then ask Zeitgeist for
226 [18:38] <seiflotfy> "Get me most used files with gedit"
227 [18:38] <seiflotfy> this will look like this
228 [18:38] <seiflotfy> CLIENT.find_events_for_templates([template], handle_most, num_events = 100, result_type = ResultType.MostUsed)
229 [18:38] <seiflotfy> where handle_most is a method for the callback
230 [18:39] <seiflotfy> and then you get the "most used" files with gedit
231 === ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu App Developer Week - Current Session: Zeitgeist API & Zeigeist Application Integration - Instructors: m4n1sh, seiflofty, manish, seiflotfy
232 [18:39] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/04/12/%23ubuntu-classroom.html following the conclusion of the session.
233 [18:39] <seiflotfy> the whole code can be found http://paste.ubuntu.com/593238/
234 [18:40] <m4n1sh> if you people want a documentation of zeitgeist for mono/C# it can be found here
235 [18:40] <m4n1sh> http://launchpad.net/zeitgeist-sharp/0.1/0.1.0.1/+download/zeitgeist-sharp-0.1-api-doc.tar.gz
236 [18:41] <m4n1sh> and for C/Vala library
237 [18:41] <m4n1sh> documentation is here http://people.canonical.com/~kamstrup/projects/libzeitgeist/doc
238 [18:41] <ClassBot> akshatj asked: So, dataprovider is used for pushing data to zg and plugin is used for pulling from it?
239 [18:42] <m4n1sh> akshatj: dataprovider is out term for those plugins which only push events to the daemon
240 [18:42] <m4n1sh> they dont pull
241 [18:42] <m4n1sh> dataproviders are a subset of plugins
242 [18:42] <m4n1sh> we have many dataproviders already
243 [18:42] <m4n1sh> they are hosted here
244 [18:42] <m4n1sh> https://launchpad.net/zeitgeist-dataproviders
245 [18:43] <m4n1sh> you can see the list here
246 [18:43] <m4n1sh> http://bazaar.launchpad.net/~libzeitgeist-developers/libzeitgeist/trunk/files
247 [18:43] <m4n1sh> sorry
248 [18:43] <m4n1sh> wrong link
249 [18:43] <m4n1sh> http://bazaar.launchpad.net/~zeitgeist-dataproviders/zeitgeist-dataproviders/trunk/files
250 [18:43] <m4n1sh> like
251 [18:43] <m4n1sh> bzr, chrome, emacs, eog, firefox, chrome, geany, gedit, rhythmbox, telepathy, tomboy
252 [18:44] <m4n1sh> vim xchat
253 [18:44] <m4n1sh> banshee
254 [18:44] <m4n1sh> banshee is upstream
255 [18:44] <m4n1sh> not in this repo
256 [18:44] <m4n1sh> we need more dataproviders
257 [18:44] <m4n1sh> to make more sensible logging
258 [18:44] <m4n1sh> or say more detailed logging
259 [18:45] <m4n1sh> then we can have plugins which pull information
260 [18:45] <m4n1sh> example.. I can show a snapshot
261 [18:45] <m4n1sh> of how gedit source code you checked actually looks like
262 [18:45] <m4n1sh> http://wiki.zeitgeist-project.com/images/2/2b/GEditOpenZeitgeist.png
263 [18:45] <m4n1sh> if you use synapse
264 [18:45] <m4n1sh> it shows results from zeitgeist
265 [18:46] <m4n1sh> it asks zeitgeist for info
266 [18:46] <m4n1sh> <psusi> asked : this may be a silly question but, what is the purpose of zietguiest, and how is it different than syslog?
267 [18:46] <m4n1sh> syslog logs system events
268 [18:46] <m4n1sh> it does not log that you opened a file
269 [18:46] <m4n1sh> syslog contains things like
270 [18:47] <m4n1sh> Apr 12 23:17:01 Foo CRON[4852]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
271 [18:47] <m4n1sh> how much sense did it make to you :)
272 [18:47] <m4n1sh> it stores info in unstructured format
273 [18:47] <m4n1sh> does not have any dedicated API (as far as I know)
274 [18:48] <m4n1sh> so what all you can do via Zeitgeist
275 [18:48] <m4n1sh> you can have a complete list
276 [18:48] <m4n1sh> of which file you opened when, closed when, saved when
277 [18:48] <m4n1sh> started from when it was created
278 [18:48] <m4n1sh> you can have a list of all the calls you recieved via empathy
279 [18:48] <m4n1sh> when you recieved, when you dropped
280 [18:48] <m4n1sh> when you got a call
281 [18:48] <m4n1sh> the whole list
282 [18:49] <m4n1sh> we people are still working in that area
283 [18:49] <m4n1sh> we have telepathy work in progress
284 [18:49] <m4n1sh> we need to integrate it even more
285 [18:49] <m4n1sh> you can even list down all recent used files
286 [18:49] <m4n1sh> sort them based on
287 [18:49] <m4n1sh> 1) Application
288 [18:50] <m4n1sh> 2) Which all were related to file creation
289 [18:50] <m4n1sh> 3) Time Range
290 [18:50] <m4n1sh> etc etc
291 [18:50] <m4n1sh> <psusi> Windows has a logging facility that was originally an attempt to store more structured log data that could be better parsed. Is that about the same idea here? So the idea is to replace .xsession-errors with a more structured log system?
292 [18:50] <m4n1sh> psusi asked this question
293 [18:50] <m4n1sh> I don't remember if windows had such a thing
294 [18:50] <m4n1sh> I think it is there somewhere in Control Panel
295 [18:50] <m4n1sh> I dont think anyone uses it
296 [18:51] <m4n1sh> it is about Logs
297 [18:51] <m4n1sh> same like we have in Linux
298 [18:51] <m4n1sh> syslog, messages, kern.log etc
299 [18:51] <m4n1sh> but zeitgeist is meant not only for storing data
300 [18:51] <ClassBot> There are 10 minutes remaining in the current session.
301 [18:51] <m4n1sh> but having a nice API such that any application can get back the data
302 [18:52] <m4n1sh> Zeitgeist is a thing under development
303 [18:52] <m4n1sh> and its development is very fast
304 [18:52] <m4n1sh> we all are learning a lot
305 [18:52] <m4n1sh> so if you want to learn a lot, you can come to our channel #zeitgeist
306 [18:52] <m4n1sh> try out some examples
307 [18:52] <m4n1sh> and get your hands dirty
308 [18:53] <m4n1sh> I am always there after 16UTC on that channel by this same nick
309 [18:53] <ClassBot> murphy asked: So if I copied a file to a server using nautilus I would be able to discover which server and what I copied a few days later (assuming nautilus informed zg)? Stuff for which there is usually no log... What about bash?
310 [18:53] <m4n1sh> murphy: sadly bash events are not logged now
311 [18:53] <m4n1sh> since we use GtkRecentManager for logging where plugins are not available
312 [18:53] <m4n1sh> it is fallback logging
313 [18:54] <m4n1sh> AFAIK bash doesnt inform GtkRecentManager
314 [18:54] <m4n1sh> so it is not logged
315 [18:54] <m4n1sh> we need a dataprovider for bash too
316 [18:54] <m4n1sh> wrt nautilus
317 [18:54] <m4n1sh> the source file is surely logged
318 [18:54] <m4n1sh> nautilus does inform zeitgeist
319 [18:54] <m4n1sh> using GtkRecentManager
320 [18:54] <m4n1sh> and it gets logged to zeitgeist
321 [18:54] <m4n1sh> you can come to know about it
322 [18:55] <m4n1sh> wrt to "which server" depends on the URI
323 [18:55] <m4n1sh> which is stored
324 [18:55] <ClassBot> zinga60 asked: how does the zeitgeist daemon store the events? in some db I guess? is it going to be more slow with more and more data providers and the longer the daemon runs (over months/years)?
325 [18:55] <m4n1sh> zinga60: events are stored in sqlite database in ~/.local/share/zeitgeist/activity.sqlite
326 [18:55] <m4n1sh> please dont try to open it maually
327 [18:55] <m4n1sh> it is locked by the daemon
328 [18:56] <m4n1sh> it *might* become slow and slow as millions of events fill up
329 [18:56] <m4n1sh> but it will take lot of time
330 [18:56] <m4n1sh> dataproviders dont make it slow
331 [18:56] <ClassBot> There are 5 minutes remaining in the current session.
332 [18:56] <m4n1sh> as dataproviders run with the application
333 [18:56] <m4n1sh> daemon can run for months and years
334 [18:56] <m4n1sh> it is perfectly fine for it to work for long time
335 [18:57] <m4n1sh> it doesnt leak memory
336 [18:57] <m4n1sh> if it leaks memory, please inform us on #zeitgeist
337 [18:57] <m4n1sh> <psusi> yea, sounds like what MS originally intended the windows logging service to be, but it never really caught on and so nobody uses it today... only they had it apply to both system logging and user application logging. Zeitgeist has no intention of handling syslog events as well? Only desktop events? Or will there be a version on the system dbus as well as the session?
338 [18:57] <m4n1sh> we handle mostly desktop events
339 [18:57] <m4n1sh> which helps the *user*
340 [18:57] <m4n1sh> our area of focus is desktop events
341 [18:57] <seiflotfy> depends what apps push into it
342 [18:58] <m4n1sh> even though zeitgeist can log any event
343 [18:58] <m4n1sh> even system events
344 [18:58] <seiflotfy> exactly
345 [18:58] <m4n1sh> a user doesnt care much about system events
346 [18:58] <seiflotfy> ubuntu one uses zeitgeist to log sync events
347 [18:58] <m4n1sh> :)
348 [18:58] <m4n1sh> closing time
349 [18:58] <m4n1sh> please join us at #zeitgeist channel
350 [18:58] <m4n1sh> we are happy to mentor anyone who wants to work with us
351 [18:59] <m4n1sh> zeitgeist team is an extremely rocking and close-knit team
352 [18:59] <m4n1sh> if you join us, you will really enjoy
353 [18:59] <m4n1sh> take my word :)
354 [18:59] <seiflotfy> we have a list of things we need to get done
355 [18:59] <seiflotfy> so feel free to join
356 [18:59] <m4n1sh> <psusi> so there is no instance running on the system wide dbus?
357 [18:59] <m4n1sh> zeitgeist runs as SessionBus which is user based
358 [18:59] <m4n1sh> instead of SystemBus which is system wide
359 [19:00] <m4n1sh> makes sense to run on per user basis
360 [19:00] <m4n1sh> we have many many more things to do
361 [19:00] <m4n1sh> lots of applications needs to be touched
362 [19:00] <m4n1sh> we have a rush of adrenalin whenever we get something done :)
363 [19:00] <m4n1sh> just for info.. if anyone of you know django we have a good work for you :)
364 [19:00] <m4n1sh> feel free to poke me
365 [19:01] <m4n1sh> esp if you know django-piston then you can start contributing to us very easily
MeetingLogs/appdevweek1104/Zeitgeist (last edited 2011-04-14 07:13:53 by 178)