[09:57] excuse me.. [09:58] there is a meeting today? [10:25] hello , is there an event tonight [10:34] yeah [10:35] about zeitgeist [14:48] امال فين الاجتماع ده يا اخونا والمناقشه والكلام ده [14:48] انا قاعد بقالى ساعه مستنى حد حتى يقول سلام عليكم [14:54] لسه [18:10] hey guys [18:10] :D [18:10] can u give me 5 minutes please [18:11] ok :) [18:12] sure ;) [18:24] ok i am prepared [18:24] sorry [18:25] so [18:25] hi guys [18:25] :D [18:25] r u guys ready [18:25] Hi \o [18:25] ready, by me :) [18:25] so my name is Seif Lotfy just like my nick says [18:26] ready! [18:26] I am mainly a GNOME/KDE upstream developer [18:26] i am known for my Zeitgeist work which is now part of Unity and KDE [18:26] (and hopefully GNOME soon) [18:27] I can introduce you to Gtk or Zeitgeist [18:27] it is up to you to decide what you would like to know about [18:27] zeitgeist? [18:27] Zeitgeist +1 [18:27] ok if you don't mind i will get our project manager in here [18:28] cool [18:28] pretty [18:28] hi m4n1sh [18:28] guys meet m4n1sh [18:28] hi m4n1sh o/ [18:28] he is the zeitgeist project manager [18:29] hello m4n1sh [18:29] he keeps the overview of the project and works closely with Ubuntu [18:29] he keeps the team intact and points us to stuff to be fixed [18:29] so about Zeitgeisgt [18:29] :) [18:30] Zeitgeist is a daemon [18:30] a process that runs in the background [18:30] it allows applications to tell it what they are doing [18:30] tracks activity [18:30] MohamedAlaa98: exactly [18:30] MohamedAlaa98: but it doesnt really track [18:31] tracker would assume we actively look what apps are doing [18:31] we don't [18:31] apps tell zeitgeist what they are doing [18:31] it logs activity [18:31] the relevant activity [18:31] which you can use yourself [18:31] to enhance your user experience [18:31] exactly [18:31] while ppl might argue its spyware [18:31] it actually isnt [18:31] it is what we call "myware" [18:32] without zeitgeist applications would save their logs in random places [18:32] with zeitgeist you have a central log with total control [18:32] basic safeguards are in place as other users can't read your activity [18:32] which uses unix permission model [18:32] which means you can tell zeitgeist what kind of activities it should or should not log [18:33] something that no other OS has till now [18:33] zeitgeist was written in python [18:33] when i started hacking it i did not intend for it to be a daemon really [18:33] it was a UI [18:33] and now vala [18:33] and then we split the UI into a UI and a daemon [18:33] yep [18:33] 2 years later its in vala [18:34] so question... [18:34] would you like to see a code sample of how to make apps talk to zeitgeist [18:34] or do you want to understand the basic datamodel of zeitgeist [18:34] ? [18:34] ah, hard choice! [18:34] number 2 [18:34] :D [18:35] 2 +1 [18:35] ok [18:36] There is a tangible confusion around as to what Zeitgeist is and what it isn’t; what it can do and what it can’t do [18:36] it can log activity as events [18:36] like you made a phone call [18:36] you recieved a call [18:36] you saved a file [18:36] you switched your computer on [18:36] you open a file [18:37] yeah [18:37] you connected to your wireless network [18:37] in this list not everything is logged [18:37] as not everything in this list is useful [18:37] like when you connected and disconnected to network isnt very useful at this moment [18:37] we mostly log files [18:37] and application lanches [18:37] yes, when you launch an application it is also logged [18:37] we log interaction [18:38] The Zeitgeist daemon (also known as the engine) is a process that exposes an event logging framework as a DBus API [18:38] and the advantage is that you can then know which is the most famous application [18:38] so again [18:38] The Zeitgeist daemon (also known as the engine) is a process that exposes an event logging framework as a DBus API [18:38] dbus being the common inter-process communication tool on linux [18:38] d-bus it is used by various application to talk to one another [18:39] right now we log file activity [18:39] which is pretty useful [18:40] like it logs all the files you opened or saved using gedit [18:40] so we have a gedit plugin [18:40] made by seiflotfy himself [18:40] when you open gedit [18:40] it shows you the most latest files you interacted using gedit [18:40] pretty useful [18:40] yeah [18:41] Thats awesome! [18:41] file activity and application launches logging is right now our focus [18:41] I can show you people an example of that gedit [18:41] the thing which seiflotfy made [18:42] http://www.youtube.com/watch?feature=player_embedded&v=ajCY0CXBY4A [18:42] ashams: MohamedAlaa98 ^ [18:42] checking it :) [18:43] me too [18:43] have a look [18:43] http://i.imgur.com/7uaXC.png [18:43] http://i.imgur.com/Hy0uL.png [18:43] sorry for over zooming [18:44] np:) [18:44] that would help a lot :D [18:44] both the images here http://imgur.com/7uaXC,Hy0uL#1 [18:45] yeah! [18:45] that is very useful [18:45] i forgot searching for files [18:45] its like how i do on android [18:45] open gallery [18:45] and dont care where my files are [18:45] all images are shown there [18:46] so back to the zeitgeist datamodel [18:46] zeitgeist works with events [18:46] its something that differentiates zeitgeist from other competiotions in the semantic world [18:47] nepomuk and tracker for example [18:47] who dealt with file metadata in general [18:47] zeitgeist deals with events [18:47] and files are metadata of an event [18:48] --- [18:48] (the following is copied from the zeitgeist manual) [18:48] --- [18:48] As mentioned before Zeitgeist is an event log and not a search engine or file tracker. It just logs the various [18:48] events occouring on the system like file opened, file modified, call placed, IM received etc. [18:48] At the heart zeitgeist consists of an engine which runs as a daemon. It’s work is to simply receive events, [18:48] store it in the database, provide the events when requested for. [18:49] If there are more than one user on the system, then every user will have their own Zeitgeist process and database [18:49] [18:49] If the engine is the heart, then the role of blood is being taken up by Events. Events are packet of information [18:49] which contain the data about any kind of activity occouring on the system. [18:49] An Event contains: [18:50] 1) id - Every event has a unique identifier which can be used to identify an event from others.( It is of type int) [18:50] the id is given by zeitgeist [18:50] 2) timestamp - This is the time when the event occoured. The value stored is the number of milliseconds since UNIX epoch. UNIX epoch is the moment which is 00:00:00 UTC on Thursday, January 1st, 1970. [18:51] 3) • interpreation - This defines ”what happened” (something was opened or closed) using a formal URI. The predefined set of URIs are available and will be covered later. [18:52] 2) manifestation - This defines how did this happen (a user activity or a world notification) using a formal URI. The predefined set of URIs are available and will be covered later [18:52] sorry that was 4 [18:52] 5) [18:52] actor - The URI defining the entity responsible for this event. In most of the case it is an application. [18:52] In case of application the application:// URI is used. e.g. application://firefox.desktop [18:52] 6) subjects - This just represents the subject of the event. There can be more than one subjects but in majority of the cases, only one is needed [18:52] 7) payload - An array of bytes which can be used for freeform storage of any data associated with the event. The encoding or format of the data is not handled by the engine and is left upon the clients. [18:53] ---- [18:53] questions? [18:53] if not then i will give you a quick quizz [18:53] Why you give an id while you have a timestamp? [18:54] ashams: good question [18:54] what if you receive a file while openeing a document [18:54] 2 events with the same timestamp [18:55] zeitgeist needs to differentiate between them [18:55] so as soon as an event comes into zeitgeist we assign it an id [18:55] aha [18:55] MohamedAlaa98: questions? [18:56] does it works w/ lxde or xfce? [18:56] yep [18:56] it runs on linus [18:56] it is up to the apps to talk to it and tell zeitgeist what they are doing [18:56] MohamedAlaa98: it can run on all desktop environments [18:57] .....and what is URI? [18:57] gnome, kde, lxde, xfce, elementary [18:57] like a firefox plugin ? [18:57] ashams: any string which can be used to identify something [18:57] uri ==> file:///home/seif/porn/suzan_and_hosni.avi [18:57] like http://google.com is a URI or URL [18:58] URL is a kind of URI [18:58] URI - universal resource identifier [18:58] any identifier which can be used to locate a resource [18:58] the path to a file on the filesystem is a uri [18:58] :D [18:58] a resource can be a file, a webpage anything [18:59] the path of a file on file system is a URI as the path acts as an identifier for a resource (file) [18:59] every file has a unique path [18:59] MohamedAlaa98: ashams: got that? [18:59] ashams: MohamedAlaa98 in case you didnt understand ask again [18:59] if not then again [18:59] seiflotfy, yes, very much [18:59] this isn't you school class where you will be looked down if you don't understand the first time :) [18:59] thanks [19:00] hahah [19:00] seiflotfy: continue [19:00] nope [19:00] thanks [19:00] MohamedAlaa98: we write plugins for apps to communicate with zeitgeist [19:00] some apps that communiate with gtk.recentmanager we cover automatically [19:01] yes, i was asking about this [19:01] (gtk recent manager acting as a proxy) [19:01] So firefox and chrome dont talk to gtk recent manager [19:01] so we wrote plugins for them [19:01] MohamedAlaa98: however gedit talks to gtk recent manager [19:01] yeah, i got it [19:01] so we cover it via zeitgeist-dataub [19:02] zeitgeist is just a daemon [19:02] it does not magically log events [19:02] however gtk recent manager is limited since it does not know when a file was closed and cant differentiate between read/modify [19:02] there are applications which push events [19:02] like datahub [19:02] or plugins [19:03] Thank you very much for your time. [19:03] MohamedAlaa98: u got to go? [19:03] sure! [19:03] we still have time so ping me when u r back [19:04] anyhow ashams u still here right [19:04] just 2 minutes [19:04] seiflotfy, yeah, thank you guys [19:04] m4n1sh: can u link them with the zeitgeist manual [19:04] its not finished yet [19:05] but i think ashams could help us write it [19:05] git clone git://github.com:manish/The-Zeitgeist-Manual [19:05] built it with build.sh [19:05] cool [19:05] seiflotfy, how can i help :) [19:05] i'm here [19:06] does it cover the predefined set of URIs? [19:09] ashams: how are URIs predefined? [19:09] they are unique [19:09] no two things should have same URIs [19:09] two seperate files have two seperate URIs [19:14] Can zeitgeist sync logs with ubuntu one? [19:14] MohamedAlaa98: it can [19:15] the old one could [19:15] we need to port the extension [19:15] zeitgeist allows extension [19:15] so u can write an extension for zeitgeist to push events into ubuntu-one [19:15] MohamedAlaa98: ashams are you ready for a small quiz [19:15] ? [19:16] i'm ready [19:16] seiflotfy, fine by me :D [19:16] ok [19:16] so [19:16] "10:00 User used firefox to open http://youtube.com" [19:16] what is the timestamp [19:16] what is the subject [19:16] ? [19:16] look at the definitions on the top [19:17] timestamp 10:00:00 [19:17] timestamp : 10:00 firefox :subject [19:17] timestamp 10:00 [19:17] subject: visit youtube.com [19:18] firefox is not the subject [19:18] ashams: alsmost [19:18] subject what is the event interpretation [19:18] ? [19:18] firefox? [19:18] no [19:18] ok [19:18] let me easy it [19:18] open? [19:19] actor ===> The URI defining the entity responsible for this event. In most of the case it is an application. [19:19] what is the actor [19:19] The URI defining the entity responsible for this event. In most of the case it is an application. [19:19] so in this case [19:19] seiflotfy, FF [19:19] ashams: correct [19:19] ok [19:20] nterpreation - This defines ”what happened” (something was opened or closed) using a formal URI. The predefined set of URIs are available and will be covered later. [19:20] interpreation - This defines ”what happened” (something was opened or closed) using a formal URI. The predefined set of URIs are available and will be covered later. [19:20] what is the interpretation ? [19:20] * m4n1sh notices that ashams seiflotfy and MohamedAlaa98 are learning zeitgeist via quiz and games and is really happy [19:20] hahaha [19:21] seiflotfy, open http://youtube.com [19:21] ;D [19:21] ashams: "open" only [19:21] ah [19:21] http://youtube.com is the subject [19:21] open [19:21] oh no! [19:21] aha [19:22] let me make the sentence more readable [19:23] "via a user activity, firefox opened http://youtube.com at 10:00" [19:23] actor = firefox [19:23] interpretation = opened [19:23] subject youtube [19:23] subject is "youtube" [19:23] timestamp is 10:00 [19:23] what is the manifestation of the event [19:23] ? [19:24] user/activity/ff [19:25] no ff [19:25] only user activity [19:25] firefox is the actor [19:25] ok [19:25] user activity is he manifestation of the event [19:25] what is the need of manifestation? [19:26] to know how the event happened [19:26] i got it now [19:26] was it the user explict activity [19:26] or was it a notification [19:26] or was it a scheduled activity [19:26] one more quiz please? [19:26] ok [19:26] ok [19:27] user received an instant message via empathy around 11:01" [19:27] ashams: let me answer this time! [19:27] what is the actor [19:27] ? [19:27] empathy [19:27] correct [19:27] timestamp [19:27] ? [19:27] 11:01 [19:27] subject [19:27] ? [19:28] received an instant message [19:28] nope [19:28] instant message only [19:28] in arabic the interpretation is "fe3l" [19:28] actor is "fa3el" [19:28] Helloww Helloww [19:28] hello [19:29] MohamedAlaa98: so what is the fe3l in the example [19:29] hh [19:29] hhhhhh [19:29] received [19:30] EXACTLY [19:30] ok now the interesting part [19:30] "how did he receive the message" [19:30] haha, epic, zg session turns into syntax lesson [19:30] is it his activity [19:30] or is is a world activity [19:30] as in did he initiate the receiving [19:30] or was is a notifications [19:30] ? [19:31] a notification? [19:31] EXACTLY [19:31] a notification in zeitgeist is called "world activity" [19:31] and that is the "manifestaion" of the event [19:32] MohamedAlaa98: ashams got that [19:32] ? [19:32] yep [19:32] Sorry, because i'm 13yo my English is weak [19:33] MohamedAlaa98: ur 13 [19:33] ? [19:33] yeah [19:33] WOW [19:33] can u program yet? [19:33] yeah [19:33] python and a little bit of c++ [19:34] MohamedAlaa98: very very good [19:34] Interesting [19:34] MohamedAlaa98: are u familiar with gtk [19:34] cool thing [19:34] ? [19:34] yes [19:34] MohamedAlaa98: good good [19:34] MohamedAlaa98: u want some task ? [19:35] so back to zeitgeist [19:35] u guys up for one more quiz [19:35] as you like [19:35] as you wish :D [19:35] seiflotfy: go go go [19:36] "10:00 edited file://home/user/test.py via gedit" [19:37] actor gedit [19:37] got the easiest [19:37] 10:00 timestamp [19:37] corrent [19:37] manifestation edited [19:38] subject file://home/user/test.py [19:38] nope [19:38] subject is edited [19:40] yeah, interpreation edited [19:40] oops [19:41] ashams: correct [19:41] interpretation is edited [19:41] :D [19:41] subject is file://home/user/test.py [19:41] and manifestation [19:41] ? [19:42] one more fault again :( [19:42] its ok [19:42] its not easy at first [19:44] Well as a newbie here, I wouldn't mind a quick explanation :D [19:45] interesting [19:45] ashames do u mind trying to explain [19:45] :D [19:45] cool [19:45] ComputeristGeek, you can read the logs: irclogs.ubuntu.com/2012/03/03/%23ubuntu-eg.html [19:45] :P [19:46] ComputeristGeek, it's about Zeitgeist [19:46] :) [19:46] and how it manages events [19:46] it sets properties for each event to make it readable and easily represented [19:47] zg is a daemon that saves events from each user [19:47] to a separate db [19:47] and makes it available for other apps and the user him/herself [19:48] inside datamodel, [19:48] it gives to each event an id, timestamp, subject, interpretation, manifestation and a payload [19:49] id an integer to make each event very unique [19:49] away from it's timestamp that could be shared [19:49] timestamp is when it happened [19:50] The value stored is the number of milliseconds since UNIX epoch. UNIX epoch is the moment which is 00:00:00 UTC on Thursday, January 1st, 1970. [19:51] subject: is what was the obect of that event [19:51] object* [19:52] oh you're explaining here and I was reading there [19:52] Manifestation: is how that event happened, by user himself, or by the World, like receiving a msg [19:52] np :) [19:53] it's the same [19:53] almost :P [19:53] :D [19:54] actor is the application that was used to do that event [19:54] Is it part of the OS? [19:54] now, read that quizes and you'll get it [19:54] ComputeristGeek, no [19:54] So it's an application software that we choose to install [19:55] yes [19:55] and you choose what events you want to log too [19:55] Interesting, but I thought logs were already kept [19:55] System logs...Error logs.... [19:56] no, it uses different logs [19:56] it logs what you do, not what happened to the system [19:56] like, opened a file [19:56] received a msg [19:56] such events are not logged on the system logs [19:56] Like a self-inflicted spyware...or as seiflotfy delicately said it....myware [19:57] i've came back again, what i've missed? [19:57] ComputeristGeek, it doesn't track your activity, it's you who log for your self for later use [19:58] Yes I am aware (pun not intended) :D [19:58] :) [19:59] i've to go now, i've 3 exams tomorrow, see you next meeting! [19:59] bye [20:00] Adieu [20:00] MohamedAlaa98, bye [20:01] For months I've been staying away from freenode for not being able to get cloaked [20:07] ComputeristGeek: use freenode webchat [20:08] No worries, I have my cloak now :D [20:08] I'm just dumbstruck on the amount of useful chatrooms on freenode [20:12] you are also from Egypt? Don't trust your govt? :) [20:12] I am from Egypt, I don't trust anyone I do not know :D [20:12] :) [20:12] Not that either is related :P [20:13] I can understand [20:14] Where are you from? [20:36] ComputeristGeek: yo [20:39] sorry, back [20:40] ashams, connection problems? [20:41] yeah [20:41] Ah, my condolences XD [20:42] ComputeristGeek: India [20:42] Yes, I recognized the name after asking you :D [20:43] :)