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)