07:33:05 RRSAgent has joined #sysapps 07:33:06 logging to http://www.w3.org/2013/04/10-sysapps-irc 07:33:10 rrsagent, draft minutes 07:33:10 I have made the request to generate http://www.w3.org/2013/04/10-sysapps-minutes.html JonathanJ1 07:33:12 s/MM:/ML:/ 07:33:20 TOPIC: Alarm API 07:33:36 Present+ Jonathan_Jeon 07:33:46 Present+ Mounir_Lamouri 07:34:26 Present+ Wonsuk_Lee 07:34:35 Claes has joined #sysapps 07:34:53 http://web-alarms.sysapps.org/ 07:35:22 ...CD describes the alarm api... 07:35:46 q+ timeless 07:36:02 Zakim has joined #sysapps 07:36:11 q+ timeless 07:36:41 chaals has joined #sysapps 07:36:42 CD describes the AlarmInterface... 07:36:53 ZK: can the alarm fire once or many times? 07:36:56 CD: only once 07:37:40 CD: we already have some inconsistency, some specs use IDs others use objects 07:38:28 q+ to ask about repetitive alarms, e.g. daily, weekly, weekday, weekends, etc. with use cases such as downloading news, horoscopes etc. 07:38:32 CD: if you only have the ID, because the UA/backend can't reconstruct the object, then you can only use the ID 07:40:05 ML: when we designed the messaging API, we made it possible to use both the object or the ID 07:40:16 Re: remove(alarmID). clearWatch in Geolocation and MediaStream Tracks refer to ID's. I think this method in Alarm API is OK as spec'ed currently. 07:40:45 ZK: I think it would be correct to use the ID, but you can also use the object. 07:41:11 AK: if you have the id stored in, say, localStorage, you can still use the ID 07:41:34 CD: the proposal is support both the object or the ID 07:42:14 q+ to make sure the specs specify it's not only to create alarm clocks apps 07:42:20 JC: I can just wrap the API to extract the ID from an object, but the ID is what matters 07:42:57 ...question about AlarmRequest... 07:43:08 q? 07:43:12 q+ 07:43:20 s/...question about/Gene: why do we use AlarmRequest instead of DOMRequest?/ 07:43:35 CD: we didn't have DOMRequest at the time the spec was written, and now we have DOMFuture 07:43:55 ack timeless 07:43:58 Milan_Patel has joined #sysapps 07:44:51 JS: In your intro, you made a comment about "restart". I was looking for the word "restart" in the spec. The spec does not make it clear how the alarms are restored or if they have to be restored. 07:45:20 genelian has joined #sysapps 07:45:22 ML: The alarm API does not define how the alarms are reconstructed because it's dependent on system messages 07:45:48 CD: I defer that to system messages in the spec 07:46:31 JC: but if the alarm goes off when the device is off, you need to say that when the device is on, that alarm should still fire, even if it's the past. That kind of behavior should be in the spec. 07:46:41 JC: it should be normative 07:46:44 q? 07:46:49 q+ 07:47:06 ack dsr 07:47:06 dsr, you wanted to ask about repetitive alarms, e.g. daily, weekly, weekday, weekends, etc. with use cases such as downloading news, horoscopes etc. 07:47:11 AK: with a bit of rewording, this is easy to fix 07:47:49 DR: I was thinking about reoccurring alarm, like "every week". Is this something in scope? 07:48:13 ML: We thought about adding that to FxOS... but it's complicated to do. 07:48:24 CD: it's currently not in the spec 07:49:01 CD: the calendar should be able to handle that use case 07:49:25 AK: "The Alarm API supports the following features" list in the Introduction section should be a list of requirements, use RFC terms 07:49:38 s/complicated to do./complicated to do and would be used by a very tiny set of applications./ 07:49:48 q? 07:49:53 ack mounir 07:49:53 mounir, you wanted to make sure the specs specify it's not only to create alarm clocks apps 07:50:02 q- 07:50:36 ML: When I wrote spec it was not very obvious that it supposed to open an application. We could change the name. 07:50:48 Josh: We have a lot of people that would support that 07:51:20 s/When I wrote/When I read/ 07:51:23 Josh: there is lots of things in linux and in windows that you can look for inspiration for a new name 07:51:30 q? 07:51:45 ack Marcosc 07:55:34 MC: we should improve the definition |data| in add(), we could use something like a Dictionary 07:55:45 q+ 07:55:49 CD: we could maybe use structured clone? 07:56:32 MC: I don't like them, what is using them? 07:56:40 gmandyam: Blobs 07:56:46 CD: Web Messaging 07:57:53 q? 07:58:33 q+ to ask if notes are taken regarding the issues that have to be solved 07:58:59 ack anssik 07:59:01 ack anssik 07:59:31 AK: what are the use cases for the data 07:59:31 ? 08:00:30 q+ 08:00:33 AK: they could serialise images, etc. into text. We might need to define what happens if you exceed a size limit. 08:00:53 ML: We will need to define something there so it fails and the developer is notified. 08:01:23 Josh: question is, what is the largest date you can image, and then set a reasonable limit. 08:02:16 s/date/data/ 08:02:19 s/image/imagine/ 08:03:17 See http://lists.w3.org/Archives/Public/public-sysapps/2013Jan/0082.html for Jonas's explanation on the data argument for Alarm API. 08:03:27 kenneth_ has joined #sysapps 08:03:39 sunghan has joined #sysapps 08:03:49 CD: how does IndexDB handle exceeding quota? 08:04:02 MC: I don't know, probably throws an exception 08:04:07 MC: need to check 08:04:07 dsuwirya has joined #sysapps 08:04:31 CD: one method that is in contacts is clear(), but it's not in this API 08:04:39 ML: we could add that 08:04:48 q? 08:04:55 ack mounir 08:04:55 mounir, you wanted to ask if notes are taken regarding the issues that have to be solved 08:05:52 RESOLUTION: add a clear() method. 08:06:01 https://github.com/sysapps/web-alarms/issues/1 08:06:11 AK: we may want to add a new step to the add() algorithm, something like: "If the data exceeds an implementation-dependent limit, then [...]" 08:06:36 https://github.com/sysapps/web-alarms/issues/2 08:07:37 https://github.com/sysapps/web-alarms/issues/3 08:07:47 q+ to talk more about persistent data 08:08:03 q? 08:08:13 https://github.com/sysapps/web-alarms/issues/4 08:08:38 ack gmandyam 08:10:57 GM: I dropped the link into IRC for Jonas' comments about this 08:13:17 q+ 08:14:18 https://github.com/sysapps/web-alarms/issues/5 08:14:34 MC: we need to bikeshed the name 08:15:01 ... bikeshedding ensues... 08:15:06 job scheduler 08:15:06 q? 08:15:08 https://github.com/sysapps/web-alarms/issues/6 08:15:16 ack lgombos 08:15:16 lgombos, you wanted to talk more about persistent data 08:16:13 LG: do we need to add some text with about the data argument. What happens to that data when the app is uninstalled? 08:16:39 s/job/web/ 08:17:13 q? 08:17:16 ML: we should add to the spec that when the app is uninstalled the alarms for this app should be cleared. We need to file an issue for this. 08:17:21 q- 08:17:48 ack anssik 08:18:07 CD: the runtime spec also speaks about clearing data 08:18:46 q+ 08:19:19 Gene: should we return a cursor instead of an array in getPending()? 08:20:03 ML: there has been a concept of a progress future that is useful for steaming data 08:20:15 ML: we don't need to use that now, but something to keep in mind 08:20:16 q+ 08:20:28 q? 08:20:34 ack gmandyam 08:20:36 ack gmandyam 08:21:20 GM: when you talk about persisting alarm data, is that the space that is allocated to the application? where is the data stored and how it that data secured? 08:21:32 Jungkee has joined #sysapps 08:21:42 Gene: we store them in a system database 08:22:13 Present+ Jungkee_Song 08:22:25 GM: then maybe it should be specified how it's stored 08:22:35 JC: Sounds like an implementation detail 08:22:43 q+ 08:22:43 MC: yes, I agree with JC 08:23:12 JC: there are multiple ways to implement this. 08:23:34 GM: but the data could persist? 08:23:50 JC: no, because the spec says to remove it - so that implementation would not conform to the spec. 08:24:55 q+ 08:24:56 ... discussion continues about how data is persisted for an app ... 08:25:36 rrsagent, make minutes 08:25:36 I have made the request to generate http://www.w3.org/2013/04/10-sysapps-minutes.html tomoyuki 08:26:42 q+ 08:27:08 GM: I'm asking that we make sure we say that the alarm data is associated with the application data 08:27:22 q? 08:28:33 ML: there is examples of timezones in the spec? Or did I miss those? 08:28:38 ack 08:28:40 ack me 08:28:42 MC: They are at the bottom of the spec 08:28:42 ack thinker 08:28:45 IMO implementations should be able to make the choice on where and how to store alarm data 08:28:57 q- 08:29:51 thinker: : maybe we only need one alarm per application? 08:30:32 I'd disagree 08:30:32 q? 08:30:43 gene: we can set multiple alarms and they will be queued 08:31:53 (...discussion about timezones....) 08:32:17 DKA has joined #sysapps 08:32:49 Present+ Dan Appelquist 08:33:31 rrsagent, draft minutes 08:33:31 I have made the request to generate http://www.w3.org/2013/04/10-sysapps-minutes.html JonathanJ1 08:34:01 q? 08:34:03 Present+ Sakari_Poussa 08:34:44 q? 08:35:00 Present+ Eduardo_Fullea 08:35:03 sicking has joined #sysapps 08:35:10 rrsagent, make logs public 08:36:58 Present+ Zoltan_Kis 08:37:22 the reason that having multiple alarms per app helps is that otherwise applications will have to do global coordination between *all* subsystems within the app in order to figure out which alarm is the next one that should be scheduled. This makes it harder to have a library, like a jQuery plugin, which uses the alarm API. People would have to come up with pseudo standards for APIs that they can use to coordinate the scheduling of alarms. 08:51:33 s/the reason/sicking: the reason/ 08:51:34 q? 08:52:13 q? 08:52:16 JonathanJ1 has joined #sysapps 08:52:18 scribe: timeless 08:52:31 ack genelian 08:53:34 genelian: it's strange to have `respectTimezone` attribute and argument 08:53:43 [ it's confusing ? ] 08:53:49 genelian: and the attributes should be readonly 08:53:51 q? 08:54:11 q? 08:54:36 Josh_Soref: does getAll() define an order 08:55:24 Marcosc: it would be nice to return it in order 08:55:37 mounir: i agree 08:55:50 gmandyam: you have the creation order, or firing order 08:56:22 Marcosc: the temporal order is more useful 08:56:36 sicking: you could take time zones first or second 08:56:49 chris: should we split the function? 08:57:00 mounir: the issue should be to define an order 08:57:07 mounir: it would be nice to have one 08:57:15 https://github.com/sysapps/web-alarms/issues/11 08:57:28 mounir: the specification has a file bug link, it doesn't point to the right place 08:57:58 q? 08:59:05 Josh_Soref: what happens if the system time moves? 08:59:29 mounir: it should behave the same way as if the system was off 08:59:38 ... firing when available 09:00:23 https://github.com/sysapps/web-alarms/issues/13 09:00:36 hsinyi has joined #sysapps 09:01:20 Josh_Soref: is there a defined order for firing a bunch of alarms if the system was off/unavailable for the set of alarms 09:01:32 mounir: it isn't defined, but it should be, in the time order 09:01:47 gmandyam: we went over the DST section for skipping alarms 09:01:51 ... i wanted it in non-normative 09:02:05 ... i think you should put it in examples 09:02:09 chris: the sequence is important 09:02:14 ... for the app developers 09:02:26 gmandyam: how is this different from the DST example? 09:02:50 gmandyam: If you have a clock-advance (discussed in email) 09:02:57 ... it could potentially skip over an alarm 09:03:05 ... we concluded that the alarm immediately fires 09:03:33 ... if you have an alarm firing at 12:01 post daylight savings 09:03:43 chris: what's not addressed is the example only sets ONE alarm 09:03:52 mounir: two issues, one is similar to time-change forward 09:03:57 ... the second is multiple-alarms 09:04:03 ... we need to fire them in a specific order 09:04:14 DKA has joined #sysapps 09:04:23 ... if we don't have normative text, the implementation might never fire the alarm 09:04:25 q? 09:04:56 Topic: Data Model and Filtering 09:05:03 sicking: i don't think we have any slides 09:05:22 eduardo: a good starting point is the Messaging API 09:05:34 ... we had two different options in the draft 09:05:38 ... maybe we can look at them 09:05:59 ... should i go through filtering in the messaging api? 09:06:58 http://messaging.sysapps.org/#messagingfilter-interface 09:07:07 http://messaging.sysapps.org/#idl-def-MessagingFilter 09:07:37 eduardo: we have two approaches in this draft 09:07:47 ... the first is specific to the needs of the Messaging API 09:08:06 ... we have attributes (start date, end date, sender, service id, read) 09:08:22 ... with this filter, we can cope with the most usual UCs for Messaging 09:08:30 sicking: can you go to the Messaging Interface? 09:09:05 http://messaging.sysapps.org/#idl-def-Message 09:09:44 sicking: my point is that 09:09:44 http://messaging.sysapps.org/#idl-def-Messaging 09:09:49 ... this general pattern has two problems 09:10:00 ... A. too complicated to implement, that they're not implementable 09:10:08 ... B. they aren't enough to implement the UC 09:10:35 q+ 09:10:57 ... the problem we ran into when we did FirefoxOS 09:11:03 ... we started with just FindMessages() 09:11:08 ... all messages that match a filter 09:11:13 ... the first thing we did when we did a UI 09:11:19 ... was we needed a conversation overview 09:11:30 ... it isn't a thing you can do w/ a filtering API 09:11:39 ... the Message Overview isn't a simple 09:11:46 ... "give me all messages that match a criteria" 09:11:56 ... it's "give me the first message that's unique given a criteria" 09:12:05 ... in this case "first unique given sender-receiver" 09:12:14 q+ 09:12:16 ... then we had message threads - you call it find Conversations 09:12:27 ... you're enabling a particular transform of the data 09:12:35 ... i don't actually want to filter, i want to do a grouping 09:12:44 ... but grouping criteria can be very complicated 09:12:45 kenneth_ has joined #sysapps 09:12:55 ... what we do in FirefoxOS is very complicated 09:13:02 ... deciding if two numbers match 09:13:10 ... different countries aren't consistent about numbers 09:13:26 ... you have to do fuzzy application specific logic to decide whether to group messages 09:13:35 ... we call into a complicated JS function 09:13:42 ... and then we call into it 09:13:48 ... and store the first 10 groupings 09:13:57 ... which is what you see when you first open 09:14:06 ... for each of these 10, you want to see a name, 09:14:15 ... "do i have any unread messages w/ this person" 09:14:23 ... other UI would show "do i have unread drafts w/ this person" 09:14:28 ... others might want a count 09:14:34 ... and the last message sent/received 09:14:40 ... this is a pretty advanced data transofrm 09:14:47 s/transofrm/transform/ 09:14:50 zkis: it supports it 09:14:56 sicking: does it support getting the count 09:15:01 ... in addition to do i have drafts? 09:15:06 zkis: your point is valid 09:15:11 ... what is the ideal messaging api? 09:15:23 sicking: the other problem is you need to get this information very fast 09:15:30 ... it isn't acceptable to go over the whole database 09:15:36 ... you can't scan 10,000 entries 09:15:41 ... you need a precomputed index 09:15:48 ... the only way this is reasonably doable 09:15:55 ... is by letting application logic provide this index 09:15:57 +1 09:15:58 q- 09:16:09 ... there are sooo many application specific bits 09:16:13 +1 09:16:26 ... in SMS sending, there could be 10 messages sent for one message "sent to 10 people" 09:16:42 zkis: do you mean messages can belong to multiple conversations? 09:16:46 sicking: sure 09:16:51 ... even the iPhone couldn't handle this 09:16:57 ... you need pretty advanced heuristics 09:17:08 ... "when was the last time i sent a message to this person" 09:17:19 ... there's no way to do all of this in the API 09:17:29 zkis: you're saying that you need precomputed data 09:17:34 ... and you need a way to get an id 09:17:52 ... and you need a way to get messages by conversation id 09:18:06 ... you set the conversation id 09:18:24 q+ 09:18:37 q+ 09:18:37 ack zkis 09:18:39 ack zkis 09:18:43 ack mounir 09:18:57 mounir: your [zkis] idea of having the app define conversation 09:18:59 ... doesn't scale 09:19:10 ... the SMS app needs the last message, and the number of messages 09:19:10 q+ 09:19:16 ... because it needs to see things very fast 09:19:22 ... the database needs to be indexed based on that 09:19:25 ack me 09:19:33 zkis: the question is what do you need from the API to do this? 09:19:44 mounir: the API should not have all this 09:20:01 ... the API should have a way to notify for new messages 09:20:11 zkis: the api ... 09:20:15 [ scribe failing ] 09:20:19 q? 09:20:26 sicking: you have a problem w/ 2 sms applications installed 09:20:33 ... that disagree on how they thread 09:20:42 ... they'd stomp on eachother 09:20:50 zkis: this is an implementation issue 09:21:02 ... do you have unique conversation ids across multiple applications? 09:21:04 q+ 09:21:11 sicking: if i write that a conversation id for a message is 1 09:21:26 zkis: the implementation of the api should generate the conversation id 09:21:38 sicking: that means that an app can't choose how to do threading 09:21:44 zkis: i don't understand 09:21:54 sicking: it's a ui decision about how to do grouping 09:22:09 ... is it the API or the App that assigns a conversation id 09:22:24 ack sicking 09:22:29 q? 09:22:50 zkis: the application can call an api to assign a message to a conversation (the id came from the api) 09:22:53 q+ 09:23:09 eduardo: to elaborate on how findConversations work 09:23:12 ... we have groupBy 09:23:25 ... we decided there were two main ways to group messages into conversations 09:23:32 ... one was to group by recipient 09:23:37 ... the other was to group by subject 09:23:52 ... that's more for email, which isn't in the scope for this api 09:24:02 ... conversation by recipient or conversation by subject 09:24:22 ... the application invokes findConversations() based on recipient 09:24:27 ... the api returns a cursor 09:24:35 ... and the application can draw the UI 09:24:50 ... and the application can access a message from a thread 09:24:54 ack gmandyam 09:24:59 sicking: can you change the conversation for which a message belongs? 09:25:18 gmandyam: we had a case where an end user sent an sms message to a server 09:25:23 ... two support requests came in 09:25:40 ... and it was impossible to string together the messages 09:26:05 ... i think subject grouping isn't possible outside MMS 09:26:15 q+ 09:26:15 ... i think the only thing you can do is group by recipients 09:26:22 ... you can't tell what they're responding to 09:26:30 ... you can have two threads that are started 09:26:36 sicking: we're offtopic 09:26:51 sicking: i haven't gotten to my problem 09:26:58 joseCantera: i'd like to know your proposal 09:27:07 +q 09:27:10 q+ 09:27:14 sicking: there's a lot in this API that severely constrains the types of UI an app can produce 09:27:17 s/+q/q+/ 09:27:43 sicking: how do i, in a performant way, implement a ui my way 09:27:49 zkis: you do it your way 09:28:12 Zakim, clear the queue 09:28:12 I don't understand 'clear the queue', timeless 09:28:18 q= 09:28:30 queue=eduardo, sicking, zkis, Marcosc 09:28:58 sicking: how do i when i launch and haven't yet seen a lot of new SMS messages 09:29:01 ... build a UI 09:29:13 ... i want an API that allows me to use indexedDB or whatever 09:29:22 ... it has a store of messages in the system 09:29:28 ... and whenever messages are added/removed 09:29:31 ... i'm told about them 09:29:47 ... so whenever i'm run, i can do this 09:30:01 zkis: so you want a sync interface 09:30:12 [ scribe isn't sure if Sync means "synchronous" or "synchronize" ] 09:30:22 sicking: you made a bunch of UI decisions when you made this api 09:30:29 ... and if i don't agree, then it's useless to me 09:30:38 ... and if there's only one SMS app 09:30:50 ... then there's a lot of implementation code and no consumers 09:30:56 sicking: if i send a message to 10 friends 09:31:06 ... if one replies, i want to group the reply into this conversaion 09:31:13 s/conversaion/conversation/ 09:31:25 gmandyam: how do you draw the association without a subject line 09:31:33 ... it's application specific 09:31:38 sicking: yes, it's application specific 09:31:44 ... it's heuristics, it will fail sometimes 09:32:01 gmandyam: it's what i'm talking about w/ sending two questions to a support center and getting two responses 09:32:19 sicking: this api enforces a specific userinterface-message-threading model 09:32:32 ... the general design principle for web apis is to solve 80% of UCs 09:32:38 if we remove findConversations we will have a more simple API, which it is an advantage. Then, we would need a mechanism to snapshot data between the platform DB and the app DB 09:32:39 ... unless this does that, it's wrong 09:32:51 eduardo: your proposal is valid for some corner UCs 09:32:55 ... but it complicates most of the apps 09:32:59 zkis: i'd like to honor it 09:33:05 richt has joined #sysapps 09:33:10 ... let's try to make it that you don't have this junk 09:33:18 ... we still have your sync interface 09:33:29 sicking: "synchronize" 09:33:39 ... i'm proposing a Synchronize api 09:33:49 ... it makes life more difficult for application authors 09:33:59 ... we write a library that implements threading 09:34:09 ... and let people use that if they like 09:34:25 sicking: the basic rule of thumb is that filtering function performance 09:34:35 ... needs to be roughly proportional to the number of messages you return 09:35:09 ... it shouldn't need to do a full/partial table scan to get the messages you want 09:35:20 zkis: can you add that as a requirement to the wiki? 09:35:27 sicking: i think we should focus on a small set of filters 09:35:35 ... for each filter, you need to actively keep an index 09:35:42 ... we looked at the context of the api 09:35:52 zkis: in that case, you only implement a few 09:35:55 ... and only document a few 09:36:02 sicking: the point is that 09:36:16 ... if an implementation is 100-times slower than another implementation 09:36:33 ... then the former isn't a valid implementation 09:36:47 ... we need two conformant implementations 09:36:55 ... and we need them to be preformant 09:37:08 sicking: it's ok if they're slow if it's returning a lot of data 09:37:09 Current draft mixes MessageCursor and MessagingCursor: is this a bug or intentional? 09:37:26 Jungkee has joined #sysapps 09:37:40 ... it isn't ok to be slow because it doesn't have the right indexes 09:37:51 q+ 09:37:53 mikko: where's the store? 09:38:01 zkis: there's a store in JS and a store in system 09:38:09 spoussa: can someone explain the synchronize api? 09:38:18 zkis: it gives the messages since you last synchronized 09:38:30 sicking: it gives adds, removes, and changed 09:38:40 zkis: we have this in Telephony 09:38:45 ... ofono does this 09:38:56 ... Messaging is more complex 09:39:03 ... i want to solve more than just your UC 09:39:20 ... should we restrict this interface to just having sending 09:39:28 q+ suresh 09:39:50 sicking: the platform needs to store the store for when the SMS application is changed 09:40:18 zkis: can we maintain a generic mechanism that chris defined 09:40:36 ... but in documentation we restrict which ones you have to implement 09:40:42 [ performantly? at all? ] 09:40:52 zkis: in Tizen, we have datamodels in native 09:40:58 sicking: what type of filtering? 09:41:05 zkis: the filtering mounir drafted earlier 09:41:10 ... could be done 09:41:17 ... but instead of ... 09:41:27 ... we restrict which fields must be handled 09:41:31 ... for compliance 09:41:42 sicking: repeating mounir 's question 09:41:51 ... what are the UCs for filtering like this 09:41:57 ... it's much more advanced than anything i've seen 09:42:03 ... most UIs just show threads 09:42:26 q? 09:42:40 Josh_Soref: does FirefoxOS have searching() ? 09:42:44 sicking: No 09:42:57 Josh_Soref: because BlackBerry certainly does 09:43:03 ... and I believe Nokia did 09:43:13 sicking: and we need full text searching 09:43:20 anssik: i think users expect full text search 09:43:23 zkis: and it's supported 09:43:24 q? 09:43:34 ... you can do filter with contains on body 09:44:00 mounir: we have this supported in the backend 09:44:08 ... but because it's slow, we don't offer the UI 09:44:17 sicking: anytime we wave "implementation detail" 09:44:23 ... we have to prove it's implemtented 09:44:35 q? 09:44:43 FYI - http://bit.ly/10SxCNJ (It's a Messaging API implementation on HyWAI platform. unfortunately, it's just works on android OS) 09:44:48 zkis: how does the api prevent you from getting this 09:45:08 mikko: is performance subject to w3? 09:45:51 Josh_Soref: we have a "is it a toy", 09:46:06 sicking: with CSS, we have items that only non-browsers could support 09:46:24 ... "in theory they could be implemented" but no one has 09:46:26 ack eduardo 09:46:29 q- eduardo 09:46:34 q- sicking 09:46:35 ack sicking 09:46:41 ack zkis 09:46:44 zkis: what do we do? 09:46:54 ... i don't see that the api prevents you from doing a performant implementation 09:47:02 sicking: the burden of proof is to show that it's implementable 09:47:07 zkis: we don't need to change this now 09:47:14 sicking: if you think it's implementable 09:47:33 zkis: i'd like to do the api so it satisfies your UC well enough 09:47:44 ... i'm ok with splitting it behind another object property 09:47:54 sicking: i'm fine with submitting a proposal about synchronize 09:48:07 ... and i'm fine with submitting a performance requirement 09:48:18 zkis: i think it's reasonable to ... 09:48:25 sicking: certainly anything is implementable 09:48:33 ... but if it's so hard to implement 09:48:51 ... i think it'd be simpler if we had a simpler api 09:48:58 joseCantera: we could remove findConversations() 09:49:00 q+ 09:49:12 ... we could try to implement findConversations() in a js library 09:49:25 ... findConversations() is a can of worms 09:49:35 zkis: it was your proposal, if i remember right 09:49:39 sicking: we learned from our mistakes 09:49:43 zkis: this was our compromise 09:50:02 sicking: the most common way is to filter on date-range and recipients 09:50:25 ... or recipients and number of results 09:50:28 ack Marcosc 09:50:29 ack Marcosc 09:50:32 q? 09:50:39 Marcosc: sicking brought up an interesting 09:50:43 ... prefix this discussion 09:50:47 ... i haven't looked at this spec 09:50:53 ... i don't know much about messaging/filtering issues 09:50:58 ... i understand the performance issues 09:51:02 ... you mentioned IndexedDB 09:51:05 ... and all this is databasing 09:51:16 ... why wasn't something like this built on top of IndexedDB 09:51:20 ... to provide something simpler 09:51:25 sicking: that's what i'm essentially proposing 09:51:47 ... we have a synchronize() api that lets you download into your application's indexed db 09:51:57 zkis: how do you do this with a data-model on native? 09:52:02 q? 09:52:09 sicking: this is a problem we had when we did our initial implementation on top of android 09:52:17 ... Android has an internal SMS store 09:52:28 ... since we aren't Android, we couldn't change their model 09:52:36 ... by using Synchronize and a simple filter 09:52:42 .. we lower the requirements on a backend 09:52:54 s/../.../ 09:53:06 ... to implement this, you need a very complex backend 09:53:15 zkis: suppose you have a very powerful backend 09:53:24 ... i want to avoid forcing us to duplicate into javascript 09:53:34 Jungkee has joined #sysapps 09:53:45 sicking: this api requires a dramatically complicated thing 09:53:54 sicking: whereas if we move this to js 09:54:07 ... all that's needed on the device are those that are actually needed by the device 09:54:17 ... yes you're duplicating some of the native logic 09:54:19 ... but 09:54:28 ... the upshot is that you need dramatically less 09:54:42 ... i'm sure no one has an implementation that handles this performantly 09:54:49 ... you don't have dynamic index generation 09:54:56 q? 09:55:02 ... if you're built on sqlite, you don't have dynamic index generation 09:55:09 zkis: what if we have it in the native side 09:55:16 sicking: in my mind, that's hypothetical 09:55:22 zkis: i need to make it work 09:55:32 ... the UC is you might have a native app that handles messaging 09:55:44 ... and you might deploy a JS app that wants to use the native side's data model 09:55:55 spoussa: if we remove findConversations() and some filtering 09:56:01 ... you could still use the native database 09:56:09 zkis: i want apps to be compatible 09:56:59 chris: you want to reuse apps? 09:57:12 mikko: is the proposal to add synchronize() and see if things work 09:57:13 q? 09:57:27 mounir: i don't understand why this makes your implementation to not work 09:57:58 ack me 09:58:02 zkis: it forces us to duplicate the logic and databases across between the native SMS app and the JS SMS app 09:58:14 sicking: this doesn't support fast searching 09:58:18 spoussa: you're assuming the api is slow 09:58:28 mikko: you specify your native app as non removable 09:58:37 q? 09:58:37 q? 09:58:43 anssik: i'm hearing a rough consensus that we want 09:58:52 ... can we agree on a subset that is acceptable for all of us 09:58:55 q+ 09:59:03 ... we have a pattern of pushing other bits to v2 09:59:22 zkis: one clean way out is to not deal w/ ... 09:59:34 anssik: you can use a library (which may not be performant) 09:59:49 spoussa: the library can implement 09:59:55 zkis: so, a sending API 09:59:59 ... and a synchronize() 10:00:15 sicking: i don't understand the disagreement on simpler filter + synchronize() 10:00:16 q? 10:00:17 ack gmandyam 10:00:22 gmandyam: this is independent 10:00:29 ... MessageCursor and MessagingCursor 10:00:37 q? 10:01:00 eduardo: it's a typo 10:01:01 ack suresh 10:01:03 ack suresh 10:01:03 ack gmandyam 10:01:06 q- 10:01:08 suresh: to me, it seems 10:01:14 ... i was involved w/ messaging in DAP 10:01:19 ... there were discussions on scope 10:01:23 ... what do web apps do 10:01:28 ... is it creating/sending messages 10:01:36 ... or creating a messaging app 10:01:41 ... a lot of thing on the table right now 10:01:45 ... not just sending messages 10:01:54 ... it seems like the target is building a full sms app 10:02:02 ... is there a way to create categories of UCs 10:02:10 ... say someone just wants to Send messages 10:02:18 zkis: my proposal was 10:02:24 ... to use Telephony style 10:02:34 ... which only gives you notices 10:02:43 ... we could do the same thing for messaging 10:02:52 ... but sicking asked for filtering 10:03:00 suresh: if we create an api 10:03:09 ... we have to ... 10:03:34 jmajnert_ has joined #sysapps 10:04:33 Jungkee has joined #sysapps 10:04:59 mounir: if we have an implementer who only wants to implement part 10:05:04 ... we could split things out 10:05:15 q? 10:05:26 ... given our api, we don't need to split things out, since the Asynchronous bit allows error handling for permissions 10:05:31 q+ 10:05:32 ack Marcosc 10:05:34 q+ 10:05:43 Marcosc: from a JS developer perspective 10:05:54 ... there are a lot of interesting patterns in this api 10:05:58 ... this abstract filter 10:06:07 ... a lot of these objects end up in global scope 10:06:17 ... MesssageFilter has no constructor 10:06:39 ... abstract filter is very Java-ish, it doesn't sound very web-api 10:06:51 ... if you define something in WebIDL, it ends up in global scope 10:06:54 q? 10:08:11 sicking: i'd collapse sender and recipient [as contact] 10:08:28 Jungkee: it should probably be a dictionary 10:08:31 Marcosc: yes 10:08:53 mounir: the topic is message filter and datamodel 10:09:05 Marcosc: we need to look at things from JS developer perspective 10:09:12 \q+ 10:09:13 ... eventually we'll have to collapse some of these things 10:09:17 s/\q+// 10:09:21 q+ gmandyam 10:09:23 q+ 10:09:25 q? 10:10:18 http://messaging.sysapps.org/#idl-def-AttributeFilter 10:10:20 zkis: i claim we could use AttributeFilter 10:10:32 sicking: i'd caution against doing something that creates optional feature 10:11:14 ack sicking 10:11:18 chris: it's optional if you say "these fields are supported but an implementation may support more" 10:11:33 sicking: optional features are bad for interop 10:11:51 sicking: Contacts is only a Datastore 10:12:04 ... you can't remove the Datastore from it 10:12:27 sicking: i don't think we'll be able to solve this here 10:12:33 +1 to Sicking's proposal 10:12:39 ... i stand by a proposal for Synchronize() and a simple filter 10:12:44 ... contacts is harder 10:12:49 ... you want to search on everything 10:12:57 ... the basic filter is on everything 10:13:45 wonsuk has joined #sysapps 10:14:21 q? 10:14:27 [ Discussion about why Interface should be Dictionary in a bunch of places ] 10:14:38 sicking: i don't like creating something *so* minimialisitc 10:14:57 ... that everyone has to build additional proprietary extensions 10:15:07 zkis: do you want to support combining filters? 10:15:31 sicking: i'm happy to do anything for which there are UCs and that is implementable 10:15:33 ack eduardo 10:15:33 ack eduardo 10:15:47 eduardo: what specific apis does this synchronize() api apply to? 10:15:51 ack gmandyam 10:15:52 Jungkee has joined #sysapps 10:15:54 sicking: Messaging, Contacts, and potentially Call Log 10:16:11 gmandyam: how does a Dual SIM option work? 10:16:19 ... there's a service id thing 10:17:38 q? 10:17:51 ack joseCantera 10:17:51 joseCantera, you wanted to say that the "sync" approach could influence over other methods in API. for instance, getting a set of messages by ids 10:18:23 kenneth_ has joined #sysapps 10:18:25 Dual SIM filtering options are indicated by the Service ID field. 10:18:32 joseCantera: it might not have the message data 10:18:42 q? 10:18:46 ... we might have a getMessages(listofmessageids) 10:18:54 ... and similar for Contacts 10:19:10 ... if an application isn't duplicating content, but only indexing content 10:19:39 q/ 10:19:41 q? 10:19:45 http://contacts-manager-api.sysapps.org/#contactfindoptions-dictionary 10:19:46 s|q/|| 10:20:08 [ this is still Filtering, but in Contacts API ] 10:20:20 eduardo: this is the same filtering as in messaging 10:20:24 mounir: what are the differences? 10:20:31 chris: there is no composite filtering 10:20:53 eduardo: we don't have `name` or other attributes 10:20:58 ... it's a bit more general 10:21:06 ... the app specifies the filter value 10:21:12 ... and the attribute on which to filter 10:21:15 ... and the operator 10:21:35 ... and there's a limit on the result count 10:21:57 chris: i have comments, but they're for the api itself 10:22:20 sicking: the filters here seem implementable 10:22:30 ... contains may be hard w/o building large indexes 10:22:35 q+ 10:23:52 sicking: contains is what people will want 10:24:20 q+ 10:24:47 eduardo: what about starts with? 10:24:51 ack chris 10:24:52 ack chris 10:24:58 chris: i have a UC where this isn't sufficient 10:25:03 ... i click the "to" field in an email 10:25:14 ... i want a quick way to find all contacts that have an email 10:25:17 ... i need an exists 10:25:30 Suresh has joined #sysapps 10:25:36 sicking: i don't know vCard well enough 10:25:42 ... there's some sort of instant messaging 10:25:44 zkis: IMPP 10:25:53 sicking: if i want the nick for a particular IM network 10:25:58 gmandyam has joined #sysapps 10:25:58 ... i do it for Skype contacts 10:26:02 ... you also can't do that w/ this 10:26:06 q+ 10:26:08 ... it's part of an array inside a field 10:26:13 chris: i think it isn't in the api 10:26:16 ... it's just a string 10:26:52 chaals has joined #sysapps 10:27:19 rrsagent, draft minutes 10:27:19 I have made the request to generate http://www.w3.org/2013/04/10-sysapps-minutes.html chaals 10:27:30 rrsagent, this meeting spans midnight 10:27:38 q? 10:29:39 ming has joined #sysapps 10:29:49 q+ 10:29:55 chris: if you have the same username for different service names 10:30:01 wonsuk has joined #sysapps 10:30:40 zkis: you can have two types in one contactfield 10:30:45 chris: even skype+google 10:31:02 sicking: in FirefoxOS 10:31:06 ... where we have something like this 10:31:10 dsuwirya has joined #sysapps 10:31:23 ... i don't have a proposal 10:31:37 ... for contains, on email and skype examples 10:31:41 ... i don't have a proposal 10:31:52 eduardo: if we filter on a particular attribute 10:31:57 ... we should search on value and type 10:32:22 sicking: that doesn't let me search for all contacts that have email address 10:32:31 chris: the way we addressed this in Tizen 10:32:36 ... is search on IMPP.type 10:33:03 sicking: how do you index all of this? 10:33:10 chris: i'm not saying it's efficient 10:33:17 ... it's probably inefficient for many cases 10:33:26 ... obvious cases will be optimized 10:33:29 ... and others will be slow 10:33:32 ... and that isn't acceptable 10:33:32 q? 10:33:33 q? 10:33:35 ack mounir 10:33:36 ack mounir 10:33:52 mounir: is there an intent to merge search in Contacts and Messaging ? 10:33:57 sicking: my proposal is ... 10:34:01 ... to have a synchronize() 10:34:08 ... and a simple filtering mechanism 10:34:20 ... with that filtering mechanism being different between Contacts and SMS 10:34:36 ... the common UC of searching contacts is different from sms 10:34:50 zkis: what is the relationship between synchronize() and filters 10:35:02 [ chair falls through floor ] 10:35:05 [ sicking stands ] 10:35:11 sicking: the less data copied, the better 10:35:16 ... it uses storage 10:35:33 ... for SMS, if we can have the SMS app only do synchronize() and datamunging and thread overview 10:35:39 ... and have threading based on simple threading, great 10:35:48 ... if not, it will do everything 10:35:57 ... we'll still have get-message-by-id 10:36:08 zkis: i've made six or seven alternate specs 10:36:13 ... people didn't like it 10:36:22 ... if you have to create a database for searching 10:36:26 ... and maintain a synchronize() 10:36:32 sicking: there's no API that supports the UC 10:36:44 ... that supports: 10:36:47 ... 1. is performant enough 10:36:54 ... 2. supports a wide range of UIs 10:36:57 ... 3. is very simple 10:36:59 q? 10:37:09 zkis: what do we choose? 10:37:19 sicking: the two first are hard requirements 10:37:28 ... the standard needs to be flexible on UI it supports 10:37:34 ... and it needs to be performant 10:37:41 ... so i think we need to sacrifice simple 10:37:51 ... so i think we should create a JS library 10:38:31 sicking: i don't think we necessarily have to create a JS library 10:38:33 ... but it would be nice 10:38:47 zkis: let's fix this before dinner 10:39:23 mounir: i don't think we'll get progress today 10:39:42 ... maybe you guys should work together 10:39:45 ... but offline 10:40:18 ack gmandyam 10:40:18 ack gmandyam 10:40:28 gmandyam: i assume you can't do a find operation on sim contacts 10:40:32 zkis: it's a feature of the past 10:40:54 chris: the spec doesn't say contact origin 10:41:00 ... there's a flag for a readonly contact 10:41:11 ... an implementation could expose readonly 10:41:43 zkis: SIM contacts is a feature of the Telephony service 10:42:18 mounir: Contacts API is a Store of Contacts 10:42:23 ... any other store is not part of contacts api 10:42:27 chris: that wasn't clear to me 10:42:29 q+ 10:42:32 eduardo: that was my assumption 10:42:50 ... the api doesn't deal w/ source/dest, so ... 10:42:56 chris: how do you handle online services? 10:42:59 ... that's in the spec 10:43:29 q? 10:43:42 ack sicking 10:44:23 ack sicking 10:44:33 sicking: full text searching is something everyone will want 10:44:37 ... but full text is fuzzy 10:44:43 ... you might want to search w/o worrying about umlauts 10:44:52 ... and you might want to handle uppercase/lowercase 10:44:59 Marcosc: doesn't this go back to indexedDB? 10:45:05 sicking: we decided it was too hard 10:45:08 ... push to v2 10:45:16 ... and for v2, we think we want to go to application logic 10:45:20 ... for fuzzy logic 10:45:27 ... and only add support for a reverse index 10:45:50 ack Suresh 10:45:52 ... i don't know what the solutions are for searching for Contacts 10:45:55 q? 10:45:59 Suresh: on SIM card 10:46:06 ... can you filter based on types of contact? 10:46:17 Jungkee has joined #sysapps 10:46:29 ... i saw in Messaging a notion of an account 10:46:39 ... i think it's a good idea to be able to filter contacts based on a service 10:46:49 chris: we have IMPP 10:47:02 mounir: should we be able to filter contacts based on origin 10:47:07 ... I have Facebook friends 10:47:27 zkis: you have a messaging service that provides contacts 10:47:30 ... you'd have another api 10:47:37 mounir: we don't have a way to specify multiple origins 10:47:59 q+ jungkee 10:48:09 mounir: sicking will send a Synchronize() api to the ML 10:48:21 q? 10:48:32 q+ 10:48:37 ... i can't cover filtering 10:48:42 ack Jungkee 10:48:43 zkis: so UCs would be useful 10:48:54 Jungkee: i'd like to bring the Pick Contact from DAP 10:49:07 ... it handles data from Yahoo!/Facebook 10:49:32 RESOLUTION: https://github.com/sysapps/sysapps/issues/59 10:49:52 q? 10:49:55 ... sends a filter to the service and a count limit 10:50:02 ... and the service deals w/ this 10:50:17 zkis: you can implement this ContactsManager (it's an interface) 10:50:32 ... your implementation could have a separate ContactsManager 10:50:41 ... if you must have multiple databases 10:50:47 ... you must have multiple contacts managers 10:50:50 q+ 10:51:03 ... i have a Chat service 10:51:11 ... you have contacts that come and go 10:51:24 ... i see a valid UC for distinguishing contacts 10:51:31 q? 10:51:36 zkis: do we need a mechanism for fetching... 10:51:40 ack eduardo 10:51:40 eduardo: to wrap up 10:51:53 ... basic filtering in Contacts remains as is? 10:51:56 ... and messaging? 10:52:14 ... filtering implies optional filters 10:52:21 ... do we stick to messaging filter? 10:52:29 zkis: we need to reduce that filter 10:52:41 sicking: i'm happy to send a proposal for a synchronize() 10:52:49 ... and what i think should be filter for messaging 10:52:58 q? 10:53:25 thinker: if i want to find Jonas 10:53:35 ... and i want to find him, but he's in Twitter and Facebook 10:53:42 ... i just need his address 10:53:53 ... the information is that the data comes from one of the datasource 10:54:16 ... there's no synchronization issue 10:54:24 ... the only issue is if i add a new friend at Facebook 10:54:32 ... need to ensure that the friend 10:54:36 ... is mapped to the correct contact 10:54:50 chris: i think we should let the application deal w/ merging data from services 10:55:09 ... we tried to do this meta contact api 10:55:13 ... it's really complicated 10:55:26 zkis: there are transient contacts too 10:55:45 chris: i don't know if we need to handle transient contacts 10:56:06 ... i don't think we should support transient contacts 10:56:15 zkis: how do we support chat? 10:56:21 [ Lunch ] 11:30:40 richt has joined #sysapps 12:07:55 JonathanJ1 has joined #sysapps 12:08:54 kotakagi has joined #sysapps 12:13:05 Marcosc has joined #sysapps 12:13:19 Jungkee has joined #sysapps 12:15:04 joseCantera has joined #sysapps 12:15:28 Milan_Patel has joined #sysapps 12:16:05 wonsuk has joined #sysapps 12:17:09 Topic: Messaging 12:18:34 genelian has joined #sysapps 12:18:53 -> http://messaging.sysapps.org/ Messaging API 12:19:08 eduardo: this api allows access to all the messaging technologies 12:19:13 JonathanJ1 has joined #sysapps 12:19:23 ... when you want to deal w/ messaging, you need a way to find messages for both sms and mms 12:19:26 rrsagent, draft minutes 12:19:26 I have made the request to generate http://www.w3.org/2013/04/10-sysapps-minutes.html JonathanJ1 12:19:34 ... deleting messages applies to any type of message 12:19:48 ... we have a method to find messages and conversations (as discussed earlier) 12:19:49 zkis has joined #sysapps 12:19:58 ... you can delete by id 12:20:04 ... and mark a message as read 12:20:25 ... mark conversation as read marks all the messages from the conversation as read 12:20:48 dsr: can you mark a collection of messages as read? 12:20:55 eduardo: not in this version 12:20:59 zkis: we decided to drop that 12:21:09 joseCantera: if we go to the snapshot approach 12:21:15 ... we'd probably need a way to do it to a set of messages 12:21:43 mounir: the FirefoxOS 12:21:52 ... would need to do a lot of work to mark a thread as read 12:22:03 zkis: it used to support mark array as read 12:22:14 eduardo: we thought mark conversation covered that UC 12:22:30 ... there was potentially difficulty involving marking messages as read for an array 12:22:35 zkis: because you have to confirm 12:22:40 ... and what if some succeed, and some fail 12:22:47 ... is it a transaction? 12:22:58 joseCantera: i think you can know how many succeeded 12:23:06 zkis: so it would be part of the future 12:23:20 JonathanJ1 has joined #sysapps 12:23:37 ... but there's a need from developers to mark multiple messages 12:24:13 mounir: even if you keep markConversationRead 12:24:21 ... you might want to mark all messages before a date as read 12:24:26 Josh_Soref: BlackBerry supports that 12:24:49 sicking: is there a reason not to be a transaction? 12:25:02 kenneth_: isn't it an uncommon behavior? 12:25:10 zkis: transaction complicates it more 12:25:19 ... if one message fails, it prevents you from using the whole database 12:25:39 ... in the DOMFuture, you'd get a list of the failed identifiers 12:25:50 [ chaals arrives ] 12:26:00 q? 12:26:14 q- thinker 12:26:34 hsinyi has joined #sysapps 12:26:35 eduardo: if we get rid of the conversations functions, then i guess we need arrays for delete and mark 12:27:10 http://messaging.sysapps.org/#messagingmanager-interface 12:27:12 ... then there's messaging manager 12:27:25 richt has joined #sysapps 12:27:55 ... sicking suggested getting rid of the MesagingManager and folding those functions into SMSManager and MMSManager 12:28:10 richt_ has joined #sysapps 12:28:11 q+ 12:28:17 sicking: it's more painful to edit the spec, but it's easier to read 12:28:39 anssik: if we aren't planning to add new messaging types 12:28:46 sunghan has joined #sysapps 12:28:49 ... we shouldn't plan for this 12:29:01 zkis: we could have Chat and Mail 12:29:10 richt has joined #sysapps 12:29:13 sicking: it's an editorial issue 12:29:39 chaals: i'd like it to be left split out 12:29:43 ... but i won't die on that hill 12:29:49 eduardo: no consensus, leave alone 12:32:24 eduardo: there's a type and a serviceIDs field 12:32:34 ... maybe we should keep track of serviceIDs 12:32:45 joseCantera: the semantics of serviceIDs need to be clarified 12:32:58 ... we need to distinguish between ever seen, have been present, are active 12:33:10 zkis: we tried to do away w/ the messaging service object 12:33:15 ... that object would have solved this 12:33:27 joseCantera: the message has sender and recipient 12:34:12 zkis: we agreed to use the iccID (?) 12:34:20 joseCantera: if i change sim and the phone number is the same 12:34:28 ... does it make sense to distinguish the messages? 12:34:35 ... from the user's perspective, they don't care 12:34:43 zkis: you can distinguish by sender or serviceid 12:34:51 joseCantera: the intention is to service sim swapping 12:35:10 q+ 12:35:27 s/sim swapping/multiple sims/ 12:35:31 ... not sim swapping 12:35:38 joseCantera: Josh_Soref introduced a problem 12:35:42 ... sending a message w/ sim 1 12:35:46 ... sending a message w/ sim 2 12:35:49 ... and i change the sim 12:35:54 ... i see ... 12:35:58 zkis: but you store both 12:36:15 sicking: why do we store the service id? 12:36:21 zkis: i have different charging things 12:36:22 richt has joined #sysapps 12:36:29 anssik: some platforms let me select sim store or phone store 12:36:55 suresh: can you store messages on sims? 12:37:04 anssik: yes, mostly dummy 12:37:15 chaals: i have messages and it says which sim card it was sent on 12:37:24 mikko: message store is unified 12:37:29 ... and at sending, you choose 12:37:33 zkis: it's done this way 12:37:55 q+ 12:38:08 q? 12:38:11 chaals has joined #sysapps 12:38:37 eduardo: specifying serviceid is needed for sending 12:38:39 rrsagent, draft minutes 12:38:39 I have made the request to generate http://www.w3.org/2013/04/10-sysapps-minutes.html chaals 12:38:43 q+ 12:38:43 spoussa: you need it for sending 12:38:57 eduardo: but there's no need to keep track of it after 12:39:20 mikko: huawei/android always show sim1 / sim2 12:39:23 q+ 12:39:24 q+ to say there is a need to keep track of where you sent something from 12:39:34 ... on windows phone, it either with default channel or channel it came 12:39:44 q? 12:39:51 q+ 12:40:20 eduardo: deleteAll() is deleting all the messages from the ... 12:40:25 q? 12:41:30 mikko: there's no reason to change 12:41:41 sicking: deleteAll is syntax sugar 12:41:50 ... it seems early to add it 12:41:52 proposing rename deleteAll by clear 12:41:59 ... i can imagine wanting ui to do it 12:42:00 to be consistent with the rest of APIs 12:42:10 ... but i can imagine wanting to delete other things 12:42:16 ... all from your Ex-girlfriend 12:42:23 ... there's no syntax sugar 12:42:37 zkis: deleting by filter is sugar 12:42:44 sicking: why is that more... 12:42:48 mikko: if you borrow 12:43:29 ... you might return by restore-to-factory-defaults 12:43:54 zkis: what would it do? 12:44:02 mounir: then maybe you should remove that 12:44:10 Marcosc: is it really that common? 12:44:16 ... on my iPhone, i delete by Thread 12:44:19 ... talking about UCs 12:44:34 ... I want to delete for my Ex Girlfriend 12:44:38 ... just because we can do it 12:44:52 sicking: every feature is to support UI 12:44:59 ... none is to support backend implementations to do things 12:45:03 zkis: backend is very wide 12:45:12 sicking: the goal is to add API to support various UIs 12:45:17 ... there are a million things UIs could do 12:45:21 ... we can't possibly add 12:45:27 zkis: this helps performance 12:45:40 sicking: we should do it for things that are strong and common UCs 12:45:54 Marcosc: why not have deleteArray() 12:46:07 chaals: the application logic will provide interface for select girlfriend 12:46:19 sicking: we have a delete() method 12:46:25 ... you have a query for messages 12:46:26 q? 12:46:29 ... and combine that 12:47:00 ack anssik 12:47:01 ack anssik 12:47:06 anssik: on serviceID 12:47:11 ... it's a string, not human readable 12:47:15 ... back to mikko 12:47:21 ... you'd show "Sim card 1" 12:47:27 ... you'd probably display the mobile number of the card 12:47:29 ... or operator name 12:47:35 ... is this api designed for that common UC 12:47:42 ... it doesn't make sense to show the service id 12:47:48 zkis: you'd have a display name and a service id 12:48:01 anssik: the mapping is fairly straightforward 12:48:14 DKA has joined #sysapps 12:48:18 Jungkee has joined #sysapps 12:48:18 anssik: i have sim cards 1 and 2 12:48:31 zkis: the developer has to map it 12:48:34 chaals: my phone 12:48:36 ... asks me 12:48:43 ... please tell me the phone number 12:48:45 ... it doesn't know 12:49:02 mikko: the service id is probably the best idea 12:49:13 ... you can also swap sims 1 and 2 12:49:23 Jungkee has joined #sysapps 12:49:26 lin_ke-fong has joined #sysapps 12:49:27 ... same in Nokia and Qualcomm dual-sim 12:49:30 q? 12:49:46 anssik: how can i know it's a unique identifier 12:50:09 joseCantera: in Josh_Soref 's UC 12:50:20 ... if i change the SIM but the phone number should be the same 12:50:32 anssik: i change the SIM to a different size 12:50:34 ... or carrier 12:50:45 mikko: the service ID shouldn't be the sim card 12:50:58 ... evne if the operator upgrades from small sim to big sim 12:51:02 s/evne/even/ 12:51:38 ... or upgrades for security 12:51:48 zkis: the only thing that's unique is iccid 12:52:01 ack genelian 12:52:06 q+ sicking 12:52:08 ack gmandyam 12:52:27 gmandyam: i think you need to add informative text to explain how service id is constructed 12:52:34 ... you have sim_sms_1 12:52:39 ... i'd say "sim1" 12:52:54 q- 12:52:55 zkis: different providers can give you... 12:53:09 gmandyam: you have different interfaces for sms and mms 12:53:19 ... your example shows this 12:54:10 mounir, yeap my answer has been answered 12:54:14 zkis: sms_sim1 there is a bug, it should be iccid 12:54:18 q- 12:54:18 q- 12:54:34 http://messaging.sysapps.org/#widl-MessagingManager-serviceIDs 12:54:53 q+ to ask if using objects wouldn't make things better? 12:55:01 ack chaals 12:55:01 chaals, you wanted to say there is a need to keep track of where you sent something from 12:55:02 ack chaals 12:55:08 ack ch 12:55:29 chaals: there's a need to track where you sent messages 12:55:38 ... i track which conversations are business, which are personal 12:55:43 ... which numbers people have 12:55:55 eduardo: are these UCs covered if you know the number of the sender 12:56:00 chaals: you need to track something 12:56:09 eduardo: you may have two different sim cards with the same number 12:56:18 ... then the important thing is the number, not the sim id 12:56:29 zkis: the same sim can have multiple phone numbers 12:57:06 eduardo: from my perspective, the most important thing is the phone number 12:57:08 s/where you sent messages/the number from which you sent messages/ 12:57:42 eduardo: I went to the operator 12:57:49 ... and they gave me a sim for the operator 12:57:54 ... and then they transfered my number 12:58:06 ... which caused my sim to have its number replaced 12:58:08 ack joseCantera 12:58:08 joseCantera, you wanted to propose rename deleteall by clear 12:58:53 zkis: for email, you have distinct storage per identity 12:58:58 ... you'd only want to delete for one service 12:59:10 ... with multiple sims... 12:59:14 ... clear() is fine as a name 12:59:23 ... i'd like to maintain an optional parameter for serviceid 12:59:25 s/eduardo/mounir 12:59:51 q? 12:59:55 ack sicking 13:00:04 sicking: is there a reason why 13:00:12 ... most of message management is currently on Message... 13:00:15 ... forget interface name 13:00:20 ... managing stored messages is on 13:00:22 ..... .... 13:00:26 s/..... ....// 13:00:28 ... .... 13:00:37 ... then odd ones like deleteAll 13:00:58 zkis: you could have simultaneous incoming 13:01:03 ... each on each service 13:01:09 sicking: you could fire separate events 13:01:26 zkis: all code i've seen in the past treated things distinctly 13:01:36 sicking: as long as we have other message management in a central place 13:01:43 ... it seems appropriate to notify in the central place 13:02:02 zkis: for incoming, they're separate 13:02:08 ... you implement SMS, IM, MMS 13:02:23 ... you don't want events from IM to choke the SMS 13:02:32 sicking: it's single threaded 13:02:53 ming has joined #sysapps 13:03:02 zkis: you're right 13:03:14 sicking: everyone treats sms/mms the same for incoming 13:03:20 ... it's easy to handle in the event handler 13:03:40 zkis: how do you expect it to work for email 13:04:04 sicking: i don't understand how we'd add email to this 13:04:29 ... if we'd have the same point for reading 13:04:34 ... i'd want the same 13:04:38 zkis: ok 13:05:19 Suresh: the class names are confusing 13:06:45 Marcosc: MessagingManager should be MessageManager 13:08:24 q? 13:08:52 ack 13:09:03 eduardo: rename Messaging to MessagingManager 13:09:13 ... and move the current MessagingManager to the SMSManager/MMSManager 13:09:32 Marcosc: use Nouns for interface names 13:09:38 ... don't build object hierarchies 13:09:51 zkis: even at the cost of repeating properties 13:10:07 eduardo: some of the descriptions of MessagingManager are different for SMS/MMS 13:10:10 ... so it would help 13:10:55 [ eduardo shows the distinct SMS and MMS text for "receivemessage" ] 13:11:06 [ and "delivery report reception" ] 13:11:17 eduardo: the only one with common is deleteAll, which may be removed from the spec 13:11:24 ... so no harm to move it 13:11:35 ack me 13:11:35 mounir, you wanted to ask if using objects wouldn't make things better? 13:12:03 mounir: i'd like to ask if you want to use a more object oriented model for messageID 13:12:11 zkis: do we have default value? 13:12:19 mounir: say i have two or more sims 13:12:23 ... and i want to use a specific sim 13:12:29 ... i'll have to pass that value everywhere 13:12:45 zkis: i used to have the object 13:12:48 ... it was killed 13:13:00 ... messaging service was an object itself 13:13:07 ... - sending, storage, retrieval 13:13:17 ... with properties for service provider, identifier 13:13:23 ... you enumerated messaging service 13:13:44 ... i thought it made sense 13:13:47 ... but i was alone on that 13:13:52 eduardo: i would prefer that 13:13:55 zkis: i have a spec for that 13:14:08 ... it's a more correct design to have the service as the abstraction 13:14:14 s/eduardo: i would/mounir: i would/ 13:14:20 ... so we reopen discussion on that 13:14:24 rrsagent, draft minutes 13:14:24 I have made the request to generate http://www.w3.org/2013/04/10-sysapps-minutes.html JonathanJ1 13:14:51 zkis: it was dropped at an editors meeting 13:14:53 joseCantera: yeah 13:15:19 ... you could have message notifications on each object 13:15:32 q? 13:15:34 mounir: in general, i like having those objects 13:15:39 q+ 13:15:49 ack genelian 13:16:14 q+ 13:16:45 genelian: in 13.... 13:16:49 ... there's a distinct bit 13:16:55 eduardo: there's a not-fetched thing 13:17:01 -> http://messaging.sysapps.org/#smsmessage-interface SMSMessage Interface 13:17:11 Jungkee has joined #sysapps 13:17:14 s/SMSMessage/SmsMessage/ 13:18:01 eduardo: i proposed getting rid of messagingmanager 13:18:06 q+ 13:18:07 ... and put the bits into sms/mms 13:18:13 zkis: same logic should be applied to message 13:18:40 q+ 13:18:48 eduardo: MmsManager has send() and getch() 13:19:00 ... and get or set FetchMode 13:21:01 q? 13:21:27 ack chris 13:21:32 zkis: I had a spec where there was an MmsManager instance per serviceid 13:21:39 Josh_Soref: that makes more sense to me 13:22:29 chris: there's no reason to have DOMString[]? 13:22:34 q? 13:22:37 ... why not just DOMString[] with it being 0 length 13:22:37 ack thinker 13:22:45 thinker: is it possible 13:22:58 ... for an application to add a new message to the database 13:23:06 ... like Facebook/Twitter 13:23:36 ... on the ML, people said they don't want this to be a generic messaging service 13:23:36 q? 13:23:40 q+ 13:23:42 ... but that would make it more useful 13:25:09 richt has joined #sysapps 13:25:30 wonsuk has joined #sysapps 13:25:36 +q 13:25:57 Josh_Soref: is there some logic on `MmsFoo` v. `MMSFoo`, c.f. DOMString, XMLHttpRequest 13:26:02 s/+q/q+/ 13:26:20 zkis: what's the UC? 13:26:29 genelian: Twitter/Facebook/Skype 13:26:36 ... insert the messages into a single place 13:31:42 q? 13:31:48 ack genelian 13:32:11 https://wiki.mozilla.org/WebAPI/AppDefinedTeleophony#Messaging_API 13:33:30 q? 13:33:40 zkis: the n900 had a unified interface 13:33:55 ... for sending a message, i need a recipient, message, serviceid 13:34:06 ... this covers >90% UC 13:39:03 mounir: we can already do this on the web 13:39:30 sicking: let's move on 13:39:47 http://messaging.sysapps.org/#message-interface 13:39:47 q- 13:39:58 q? 13:40:11 [ eduardo reads Message properties ] 13:40:14 q? 13:40:17 q+ Josh_Soref 13:40:38 q+ to ask if what we want is a sender and receiver 13:40:56 q+ 13:41:33 eduardo: if we design a testing framework and have no apis 13:41:37 ack chris 13:41:51 chris: based on the description, "timestamp" is meaningless 13:41:58 ... received, created, sent, ... it's vague 13:42:16 [+1 to Chris] 13:42:21 ... plus it's a Date 13:42:33 ... it's a send date 13:43:30 q? 13:43:31 sicking: we rarely have bools 13:44:26 chris: `read` 13:44:26 ... i'd expect isRead 13:44:26 s/sicking: we rarely have bools// 13:44:26 sicking: we rarely have is in bools (isTrusted) 13:44:36 eduardo: for received messages it's the time it was sent 13:44:46 eduardo: the date of the message 13:44:48 ... for SMS 13:45:55 ... is the date the SMS reached the recipient's message center 13:46:03 [seems there are more than one relevant dates. Like other kinds of messages...] 13:46:44 rename 'timestamp' into 'sentDate' 13:47:33 mounir: you can manually add items in the spec or github 13:47:38 Marcosc: you do biblio.id 13:47:47 q? 13:48:15 chris: you have `sender` in message and `recipient` 13:48:22 ... but you have `to` in MMS 13:48:34 ... maybe you can have `from` and `to` in all ? 13:48:38 e.g. File interface has a lastModifiedDate attribute that returns a Date object too 13:48:56 Jungkee has joined #sysapps 13:56:01 q? 13:56:24 mounir: yes, better to use `to` / `from` 13:56:41 zkis: fine 13:56:43 ack gmandyam 13:57:08 q+ 13:58:06 gmandyam: what is FetchMode used for? 13:58:23 chris: you only Fetch in manual mode 13:58:29 zkis: MMS, you get a notification 13:58:34 ... if you set automatic delivery 13:58:50 ... then you get a link, and you're supposed to fetch it from the server 13:58:59 q? 13:59:08 Josh_Soref: people should not be forced to read the MMS standard to use these APIs 13:59:21 lgombos: +1 13:59:24 zkis: we can mention this 13:59:30 eduardo: a high level description 13:59:38 gmandyam: where is the MessagingRequest object passed 13:59:44 zkis: that's a DOMFuture thing 14:00:41 q? 14:02:16 Marcosc: when you have steps, name them and put definitions on them 14:02:19 ... so we can link to them 14:02:31 ... when the fetch method is invoked, it runs the "steps-for-fetching" 14:02:33 ack Josh_Soref 14:02:33 ack me 14:03:29 Josh_Soref: what is "unique in the frame of the user agent" 14:03:42 q- 14:04:38 zkis: it's unique on the device across all the services 14:04:51 q? 14:06:58 ack genelian 14:07:19 genelian: i didn't see any system message behavior 14:07:33 ... if my app isn't yet launched, do i not get notification 14:07:49 mounir: maybe you should file an issue about waking up a messaging application 14:08:37 Do we need the Pending Time Period in MMS/SMS send method ? (Section 8. SmsManager, Section 10. MMSManager) 14:08:37 ack JonathanJ1 14:08:38 ack JonathanJ 14:09:12 JonathanJ1: sometimes you want to ask a message to be sent later 14:09:19 ... in an hour, the next day at 10 am 14:09:19 I think similar feature is PendingIntent attribute of Anroid sendDataMessage - http://bit.ly/KlQXhi 14:09:31 eduardo: it's a corner case 14:09:37 sicking: you can use the alarm api 14:09:48 joseCantera: that's a hint for the sms delivery center 14:10:12 eduardo: if we want to expose the full SMS/MMS api 14:10:17 ... it would be really complex 14:10:23 chris: [mumbles] CC, BCC 14:11:07 q? 14:11:28 eduardo: the feature is in SMS 14:11:31 Jungkee_ has joined #sysapps 14:12:26 eduardo: describes 13.1 14:12:36 q+ 14:12:36 s/eduardo: describes 13.1/[ eduardo describes 13.1 ] 14:12:44 mounir: state strings should be enums 14:13:09 q? 14:13:17 sicking: 14 DOMString? deliveryStatus[] should be DOMString[] deliveryStatus 14:13:30 ... why is `smil` Document 14:13:35 ... MMS uses a subset 14:13:58 ... if it really needs to be parsed, it's easy for a document to use DOMParser 14:15:08 ... a lot of MMS messages are a simple format 14:15:36 ... i'm worried someone will advocate implementing the SMIL DOM 14:15:42 ... it also means never exposing this API in Workers 14:15:59 joseCantera: i'll open the issue 14:16:01 q? 14:16:06 jplyle has joined #sysapps 14:16:18 ack chris 14:16:31 chris: why can i send an MMS to multiple people 14:16:35 ... but not SMS 14:16:54 sicking: if you send multiple messages, you'll get multiple fails 14:17:01 ... or delivery status 14:19:35 q? 14:21:21 sicking: what happens if you have the same guy in `to` and `cc` ? 14:21:31 ... i'm not sure the API works 14:21:39 rrsagent, draft minutes 14:21:39 I have made the request to generate http://www.w3.org/2013/04/10-sysapps-minutes.html JonathanJ1 14:23:20 Josh_Soref: where are `Content-ID` and `Content-Location` defined? 14:23:29 eduardo: in the MMS specification 14:23:45 sicking: can you make a biblioref for each 14:23:49 ... so they're actually findable 14:24:26 joseCantera: i'll open an issue 14:24:59 eduardo: skip Conversation, we'll remove 14:25:05 ... MessagingCursor 14:25:16 mounir: very likely ProgressFuture will replace that, hopefully 14:25:51 eduardo: MessagingEvent 14:25:57 Josh_Soref: `attribute any message` 14:26:06 eduardo: because it could be SMS Message or MMS Message 14:26:11 mounir: it should be a Union 14:26:31 chris: Cursor lets you stop and resume 14:27:18 sicking: the idea is that you will be able to ask for more in pieces 14:27:49 Agenda remind - http://www.w3.org/wiki/System_Applications:_1st_F2F_Meeting_Agenda#2nd_day_.2810th_April.29 14:27:52 q+ 14:28:18 q? 14:28:18 eduardo: DeliveryReportEvent 14:28:33 ... the MMS Center may wait to gather multiple delivery reports 14:28:46 q? 14:30:35 Josh_Soref: `DOMString id` is confusing 14:30:43 chris: it should be `messageId` 14:31:04 -> https://github.com/sysapps/messaging/issues/17 14:31:11 chris- 14:31:13 q- crhis 14:31:16 q- chris 14:31:34 genelian: why do we need recipients? 14:31:46 ... you can use the message from the message id 14:31:54 sicking: it's a bunch of work 14:32:12 sicking: mostly an app will see if the message is displayed in the UI 14:32:26 ... if we already have the info available, we might as well return it 14:32:34 eduardo: there's a UC to have it here 14:32:38 ... you get a success from A 14:32:47 ... you get a success for B 14:34:15 filmaj has joined #sysapps 14:35:04 suresh: on MMS Content 14:35:10 ... you had a Dictionary and a Message interface 14:35:15 ... is there a reason to have two separate? 14:36:05 Marcosc: the bits are in places, but the wrong places 14:36:07 q+ 14:36:37 q? 14:36:45 kenneth_ has joined #sysapps 14:37:14 ack timeless 14:37:19 Josh_Soref: You have: id; lastMessageId; serviceID; contentId; 14:38:13 zkis: Capital I, lowercase d 14:38:29 eduardo: and serviceIDs ? 14:38:34 zkis: serviceIds 14:38:34 -> https://github.com/sysapps/sysapps/issues/60 14:38:39 q? 14:42:40 wonsuk has joined #sysapps 14:45:03 genelian has joined #sysapps 14:46:59 ming has joined #sysapps 14:47:38 ming_ has joined #sysapps 14:49:06 wonsuk has joined #sysapps 14:51:00 ming has joined #sysapps 14:53:30 ming_ has joined #sysapps 14:56:58 wonsuk has joined #sysapps 14:59:46 scribe: chaals 14:59:56 Topic: Telephony API 15:00:12 ZK: There are a lot of standards in telephones so I linked them here. 15:00:25 Jungkee has joined #sysapps 15:00:25 … in terminiology which is not where tyey should move 15:00:51 … we want an API to replace system dialler, primarily meant for "normal" telehpones but the API can also handle eg SIP calls. 15:00:55 s/tyey/they/ 15:01:08 … There is an example in the introduction of handling an incoming call, or dialling. 15:01:33 JC: Why is there event called onActive not connected 15:01:40 ZK: A connected call can be on hold 15:01:53 JC: That is a different state 15:02:05 ZK: State is an issue. 15:02:11 http://telephony.sysapps.org/ 15:02:47 wonsuk has joined #sysapps 15:03:16 ZK: Active call is defined in terminology. This is a signalling API, doesn't deal with audio - you could use this on top of WebRTC 15:04:09 … telephony service should be an object. This associates object to a subscriber identity - SIM card in a mobile phone. Have to know which card to use for making a call, it is integrated with an ID from teh card. 15:04:29 … any call can be received, implementation or user decides which ones are accepted and what happens to the rest. 15:04:49 … telephony services use different protocols. With same identity we need to know which protocol is used to correctly interpret states. 15:05:09 … Listed the standards used - GSM stuff, SIP, XMPP, ... 15:05:26 … default telephony service is for compatibility with previous version of the API 15:05:37 … this can be set by applicaitons. 15:05:45 … Spec supports multi-party calls. 15:06:06 … Because call state is 3-dimensional: control, hold control, and mulitparty control. 15:06:21 … so we need to spec it together to avoid making a mess. 15:06:29 … (it is in a flat state in the API) 15:07:01 q? 15:07:08 GM: Surveyed on Tel:APIs that have been done. If you have a base telephony intereface with an array you can use that to handle multiparty. 15:07:31 … e.g. a call recipient is part of a multiparty call, with each connection object treated separately 15:08:13 ZK: We've separated this a bit. There were 2 design possiblities - extend telephony to handle MP, or have a conference call object to manage sngle calls. Chose the latter for simplicity. 15:08:24 q+ to ask what is exactly the scope of the specification 15:08:36 … Have a conference ID, identifying a multiparty call. In GSM spec confID is any call id of any participant. 15:08:44 … so we have an extra overall ID. 15:08:59 … Remote party is the person you're talking to. 15:09:20 … id is a phone number, SIP address, ... 15:09:20 ack mounir 15:09:20 mounir, you wanted to ask what is exactly the scope of the specification 15:09:30 ML: Thought scope was just GSM. 15:09:40 ZK: Follows GSM closely, andis primarily GSM 15:09:52 ML: Not clear the spec should allow SIP, etc. 15:09:59 ZK: It isn't stated that it should be allowed. 15:10:11 ML: We should be clear what the scope of the spec is. We aren't now. 15:10:46 ZK: Current trend seems to go toward VOIP/GSM being alternate technology to handle a "call" so you have transparent calling over the top of the transport. 15:11:14 Jungkee has joined #sysapps 15:11:22 … follow GSM spec for voice calls but allow it to work out of the box with SIP too (likely main operator requirement), and XMPP (common Internet standard) 15:11:41 ML: Don't think the blur is a good idea. If it is unclear what we are trying to do, it is confusing. 15:11:48 ZK: Clearly says what a telephony service is. 15:12:05 … [in terminology section] 15:12:10 ML: I would try to be more explicit 15:12:19 ACTION: Mounir, raise an issue about clarity of scope 15:12:19 Sorry, but this channel isn't in my configuration. 15:12:33 -> http://www.w3.org/wiki/System_Applications_WG:_Telephony_API 15:12:42 ZK: You can handle calls in/out, enumerate them, control volumes, ... 15:12:55 …enumerates service IDs present. 15:13:11 … not necessarily all services present. (see slide @@URL?) 15:13:48 … Telephony implementation might not support all the transports available - e.g. ignore XMPP... 15:13:53 -> https://github.com/sysapps/telephony/issues/3 15:14:25 … Received comment - what if an app only wants to support one transport? Think we need a method to find which services the app handles 15:14:34 JC: Why? Then you need to have metadata for the service 15:14:41 ZK: You only need to have service IDs 15:14:52 … there si a separate spec to describe that 15:15:08 JC: Agree with Mounir that we are trying to solve more problems than we need. 15:15:20 ZK: API looks the same regardless of which services we discuss. 15:15:30 JC: Discovery of more services is a complication. 15:15:32 eduardo has joined #sysapps 15:15:32 q+ 15:15:41 ZK: I would restrict discussion to GSM for now. 15:15:54 … but those others are valid use cases coming from operators so wewill have to deal with them 15:16:00 JC: OK, but lets keep focus 15:16:12 ML: XMPP could be done with raw socket API, doesn't need this 15:16:21 ZK: Doesn't conflict, you build this on top of that. 15:16:25 ML: Yes it does. 15:16:33 ZK: You could make a WebRTC call with this spec. 15:16:53 JC: This you have misunderstood what should be in the API, you're trying to solve too many problems. 15:17:59 q+ sicking 15:18:03 q? 15:18:04 ack anssik 15:18:23 CMN: There is no need to argue against features just because they are there, it is relevant if they then block simplifying the thing in useful ways. 15:18:37 AK: Think the use cases is really helpful. Think that is useful to look at. 15:18:53 ZK: Have stakeholders - implementor of runtime, app developers, end users. 15:19:32 … have use cases mostly from end-user perspective. Have a delta listed for things that are not supported, which are purely programmatic. And have a technical requirement to keep the API agnostic of implementation details. 15:20:04 …Use cases: Make a call. Choose identity, hide callerID, set default identity, … 15:20:34 JC: emergency seems to be very specific. You are putting it into the API 15:20:49 http://www.w3.org/wiki/System_Applications_WG:_Telephony_API 15:20:49 ZK: It is country specific, theinfo may not be available, that's OK. 15:21:07 ML: Don't think we should give list of emergency numbers. allow them to ask for one. 15:21:29 ZK: Modem doesn't know it is calling an emergency number - it tries it and if there is one it iscovers taht by using it. 15:21:55 ML: We could guess by country. But you don't need a lto of info, you just say "dial this *if* it is emergency number" 15:22:04 ZK: Emergency call should work without a SIM card. 15:22:22 ML: You want the UI to make it clear you cannot call anything except emergency number 15:22:23 DKA has joined #sysapps 15:22:28 ZK: This is a middleware constraint. 15:22:49 ACTION: Mounir, open issue on emergency dialing 15:22:49 Sorry, but this channel isn't in my configuration. 15:23:03 Josh: Not all countries support emergency dialling without SIM 15:23:15 ZK: Right, but the API should support this whn it is supported. 15:23:24 JC: Mounir's approach seems to handle that better. 15:23:29 … you get an error. 15:23:52 ZK: If you have the list you can make a UI with an emergency button. User studies show users cannot effectively dial emergency numbers. 15:24:06 Josh: I have seen people butt-dialling from clicking the button 15:24:16 JS: These aren't contradictions. 15:24:28 AK: This is bad implementation 15:24:37 DKA: We need a butt-detector API 15:24:43 q? 15:24:51 ZK: [continues reading use cases] 15:25:08 /Me Glad I could add value to the meeting. 15:25:12 -> http://www.w3.org/wiki/System_Applications_WG:_Telephony_API 15:25:24 q+ 15:25:45 q? 15:25:46 /me already copied :) 15:25:49 ZK: Expect feedback on whether event notifications to track progress of calls is a valid requirement 15:25:57 ack sicking 15:26:11 ack gmandyam 15:26:17 ZK: If you have feedback, please provide it 15:26:20 ack gm 15:26:55 GM: Outside send, I didn't see anything that is lacking for CDMA. Did you ust verify with GSM? 15:26:57 ZK: Yes 15:27:14 GM: Think emergency dialling should be suported without being authorised on the network 15:27:33 s/suport/support/ 15:27:36 ZK: Think we should not name the constraint. That is part of the network. The user requirement is "dial emergency number" 15:27:40 GM: OK 15:28:36 ZK: Back to spec. Can determine which call is active. CallHandler interface is an artifact with common properties for call / conf call. Open to a better design pattern. 15:29:30 HY: Don't agree that call handler contains all common parts. In event listener there are splitting/joining that belong to conference call. We need to revise that. 15:29:33 ZK: Yes. 15:29:59 … events on call changes/incoming/service changes 15:30:00 q+ to comment about audioContral 15:30:15 ack mounir 15:30:15 mounir, you wanted to comment about audioContral 15:30:25 ML: Think audiocontrol should not be part of the API 15:30:32 q+ 15:30:44 ZK: Agree. It was present in original Moz/Telefonica interface. Separated it to its own object. 15:31:01 DSR: If you split it out are they still special to the application? 15:31:13 Github has joined #sysapps 15:31:13 [13runtime] 15marcoscaceres opened pull request #51: Fixed the conformance section showing up twice, added WebIDL text (06gh-pages...06conformance) 02http://git.io/CMY-5g 15:31:13 Github has left #sysapps 15:31:25 ML: This is "e.g. I want speaker" - device-realted. Need a proper API, not in the telephony API 15:31:34 DSR: Are there any audio preferences specific to telephony? 15:31:40 ZK: I have a draft for that... 15:31:48 JS: Have an API that overlaps but not fully. 15:32:04 ZK: Think the API belongs to this group but is not in the charter. It is a major problem we will need to fix. 15:32:18 ML: Think we should move it out of this spec, buyt cannot have a replacement right now. 15:32:22 ZK: Fine. 15:32:34 GM: Solved for WebRTC... 15:32:49 ZK: Put it here so people can discuss. 15:32:54 ack gm 15:33:06 GM: APIs out there can give current network info... 15:33:12 audioControl issue: https://github.com/sysapps/telephony/issues/5 15:33:14 ZK: That is a separate API. 15:33:26 … does things like callforwardingAvailable, etc... 15:33:41 … all that belongs in those objects, not here. We just have a reference to those objects 15:34:20 … we hav a design for this, could do it later. 15:34:25 GM: v2 of this? 15:34:31 ZK: No, another specification 15:34:44 GM: That would be achange from how Native OS have done it. 15:34:54 q? 15:35:02 genelian has joined #sysapps 15:35:14 ZK: Right. But it is a big lot of spec. 100+ properties would flood this spec. We can do it here, or elsewhere, but think it is out of scope for now. 15:35:24 +1 to have a separate API for callforwarding... , etc 15:35:57 ZK: Dial method... 15:36:31 … SendTones methos. Sends DTMF sequence, with parameters set. 15:37:00 … I ahve seen other APIs that are different. I thnk this is the right way t do it instead of startTone, stopTone because that won't give reliable timing 15:37:08 GM: Have you matched WebRTC method? 15:37:17 ZK: They do this the same way I think. 15:37:25 … I can check. 15:37:40 ML: They have insertDTMF with a duration 15:38:06 CMN: Why not match it exactly? 15:38:18 ZK: We add service ID and put it in a dictionary. 15:38:37 CMN: Why? 15:38:45 CMN: It seemed to be simpler 15:39:04 JS: Can't implement a UI that lets me hold a button. Think we need to support that 15:39:08 ZK: true 15:39:13 +1 15:39:55 ACTION: Mounir file use case to suport sending long tones timed on button press. 15:39:55 Sorry, but this channel isn't in my configuration. 15:39:59 ISSUE: https://github.com/sysapps/telephony/issues/7 15:39:59 Sorry, but this channel isn't in my configuration. 15:40:13 GM: Need to justify why we didn't copy WebRTC 15:40:20 ZK: We need to specifiy serviceID 15:40:35 JS: tone should be called tones (in blue. with white trim) 15:40:45 s/(in blue. with white trim)// 15:41:07 ZK: Steps for dialling - please read it and write feedback if you have any. 15:41:25 … Incoming call... 15:42:10 … main funcitonality is in telephony interface. 15:42:29 … telephonyEvent. 15:42:35 … how does that design sound? 15:42:54 ML: Think we should have two events, not an "any" param 15:42:57 ZK: OK 15:43:18 … TelephonyCall interface is big. Lots of state change handlers 15:43:46 TelephonyEvent issue: https://github.com/sysapps/telephony/issues/9 15:44:01 … generic one plus specific ones for events. 15:44:08 GM: That is too many handlers 15:44:18 … WebRTC collapsed them 15:44:25 ZK: Think this is different. 15:44:31 GM: ??? would be enough 15:44:52 ZK: Yes, we could have generic event, and replace that. Would make the spec smaller. 15:45:02 s/???/generic handler for state change/ 15:45:20 ZK: Think we could think about that, looking for feedback. 15:45:26 GM: Think about futures 15:45:35 … and their impact on this 15:45:51 JS: They don't have an impact on this. These are not return values. 15:46:02 … events fire multiple times, future only fires once. 15:46:12 ZK: SHould we keep all the ahndlers, or just have a generic one? 15:46:33 JS: We have some experience using this. We can look at the Gaia dialler and see if it simplifies to do one or the other? 15:46:38 GM: So we should explore this? 15:46:48 JS: We have experience, need to look and see what that tells us. 15:47:06 ZK: Made prototype, found generic handler to be simpler. 15:47:14 -> https://github.com/mozilla-b2g/gaia/tree/master/apps/communications/dialer 15:47:32 -> https://github.com/mozilla-b2g/gaia/blob/master/apps/communications/dialer/js/dialer.js 15:47:37 ZK: Think controversial issue is telehpony vs conference calls. 15:48:09 … all properties implemented by telephonyCall - single remote party with conferenceID that is empty if it isn't a conf. Methods change the state of a call. 15:48:31 … thereis a join method to turn a call into conference call. 15:49:00 q? 15:49:01 … In GSM you make a call, and there is a method to make a multiparty call. This API returns conferenceCall object that can track multiparty stuff 15:49:09 ML: Shouldn't it be async? 15:49:18 ZK: It is. returns immediately. 15:49:30 … it is like dial. 15:49:44 DSR: When you call into a bridge, is there a conference ID? 15:50:01 ZK: No, that is server-side conference. this is managing the conference from your phone. 15:50:10 DSR: So as a recipient do I get to see a conferenceID? 15:50:19 ZK: No, for recipient it is a normal call. 15:50:24 … nothing special except join() 15:50:32 q+ 15:51:12 GL: Suggestion for terminology: n other parts you use multiparty and conference. 15:51:43 ZK: In telephony world people use "multiparty", conference call can introduce confusion. Don't know which terminology makes more sense. 15:51:51 GL: Think we should say "conference call" 15:52:03 ZK: OK, can do that (and define it) 15:52:31 ZK: ConferenceCall interface... 15:52:49 q? 15:53:02 you're not supposed to control calls from their telephony object. 15:53:35 s/you're/... you're/ 15:53:49 … we can disconnect the conference call, hold it, ... 15:54:27 q+ to ask if split can divide a conference or just split off one user 15:54:43 JS: Is this a network feature in backends? 15:54:47 ZK: Yes, in GSM, 15:54:57 … always joins the held call and the active call. 15:55:21 JS: I understand you have an active call, hold it, make a new one, then join them 15:55:31 ZK: Yes. This lets you ask for that to be done for you. 15:55:42 JS: Are there backends that do the work for you? 15:55:48 ZK: Depends on teh middlewarte. 15:56:01 ? 15:56:03 q? 15:56:04 Josh: Webex does that. 15:56:28 JS: We're not interested in Webex. 15:56:44 Josh: You want to expose the really low layer? 15:56:47 JS: Yes. 15:57:06 ack hsiny 15:57:09 … this is why I think we should specify backends and limit us to supporting only things they actually need. 15:57:19 ZK: Reqiurement was to have API agnostic to backend 15:57:33 JC: But if a backend doesn't support teh function it is not implementable. 15:57:44 s/qiur/quir/ 15:57:45 ZK: This is a few lines of javascript. It has a use case, think it makes sense. 15:57:49 s/teh/the/ 15:58:06 JS: Agree API doesn't need to be agnostic to backend, but if none of our targets support the funciotnality I don't see why we go there. 15:58:38 … natively support it as an atomic funciton. Let's not add things that provide syntactic help yet. 15:59:09 ZK: Thought of this. Reason to maintain is that the alternative requires doing the GSM dance, which is not present in SIP/XMPP 15:59:16 s/citon/ction/ 15:59:21 JS: This is why I don't want to be forward-compatible. 15:59:26 ZK: Don't understand your concern. 16:00:00 JS: This is implementation complexity and I don;t think it is needed. Numebr of state transitions means the UI needs to be able to deal with all the state changes and decide what to do. 16:00:09 … don't imagine frontends being able to use this. 16:00:16 ZK: You don't have to implement it. 16:00:31 JS: If it is in the spec, it needs to be implemented. It shouldn't have optional bits everywhere. 16:00:42 ZK: Don't believe this is complex to implement. 16:00:53 JS: We shouldn't add things that are not hard to implement. 16:01:02 q+ 16:01:05 ZK: In operator world we will be needing this stuff very soon. 16:01:12 JS: It is easy to add when we need it. 16:01:21 HY: We need addParticipant. 16:01:39 … it should be able to add an existing call instead of calling out a new participant. 16:01:49 ZK: That is not supported by GSM, it is invalid. 16:01:58 … you can only join active and held call. 16:02:12 JS: Agree. Need an API that takes conference and a call, and joins the call to the conference. 16:02:22 ZK: You will never be able to implemetn it or validate it. 16:02:57 JS: Phones now let me be in a conference call, put it on hold, call a third person, then join that call to the held conference call and makeit active. 16:03:14 ZK: You don't need a parameter you just need a join method without a parameter and then it works. 16:03:17 JS: Fine 16:03:20 q+ 16:03:25 JC: Going to file and issue. 16:03:35 ZK: OK, but it breaks a lot of use cases 16:03:37 ack chaals 16:03:37 ack em 16:03:38 chaals, you wanted to ask if split can divide a conference or just split off one user 16:03:55 ZK: Should we remove the argumentto the join method? 16:03:58 JS: Yes. 16:04:04 SP: And that's it? 16:04:25 Josh: You had a calls array. arrays have a join method. someone will mess that up. Please don't call your method "join" 16:04:29 ZK: Whatever. 16:04:50 JS: Two different funcitons that have the same name on different objects happens a lot. 16:04:59 Josh: They are usually not so close. 16:05:11 … and "join" doesn't imply what you are trying to do. 16:05:30 ZK: Agree, but GSM works like this. This would make it really hard to implement a lot of use cases. 16:05:37 … is this my problem? 16:05:40 CMN: Sure. 16:05:49 JS: Need low-level primitives from GSM. 16:05:52 ZK: We do. 16:06:09 … if you don't use the parameter to join, it is exactly what GSM does already. 16:06:35 JS: Sounds like I am proposing to remove things. I don't see how that means in the future we can't add those things back and get to where you say we should be now. 16:06:44 ZK: If we can add them later I am fine with removing them now. 16:07:00 JS: Everything here is version 1. 16:07:08 kenneth_ has joined #sysapps 16:07:10 Josh: You are stuck with the names if you start using them 16:07:20 ZK: OK. So we remove onParticipantAdded, ... 16:07:27 q- 16:07:33 … we don't need it. When you split you get a telephony call. 16:07:42 Josh: What happens when someone else just hangs up? 16:07:49 ZK: I think that is signalled. 16:08:00 q+ 16:08:08 … the event comes in the telephonyCall object. 16:08:09 q- 16:08:16 Josh: We don't need a second event. 16:08:40 ZK: OK, can look at wehther that is really needed for GSM 16:09:03 JS: Need to handle transition from 3-person conference call to 2-person call. 16:09:13 ZK: This will have implications for state management 16:09:18 s/wehther/whether/ 16:09:22 ack hs 16:09:41 HY: Can we rename split to removeParticipant? 16:10:09 ZK: Wouldn't be consistent. split puts the participant into a normal call. 16:10:22 JS: join and split seem like good names to go together 16:10:33 ZK: We have middleware that uses these names. 16:10:49 [discussion of semantics of names] 16:10:55 … think split is clearer 16:10:58 SP: Agree. 16:11:19 ZK: Call History. No search, just says what attributes should be saved into call history. 16:11:33 … do we have to save the disconnectReason? 16:11:39 Josh: direction should be an enum 16:11:52 … not DOMString 16:12:21 ZK: This specifies a database interface 16:12:29 [explanation of "enum"] 16:12:38 http://en.wikipedia.org/wiki/Telephone_number_mapping 16:13:04 ML: mentioned we need to support XMPP etc. 16:13:14 ZK: Think it is bad, but we have chosen to only support GSM 16:13:41 JS: Should think of specifications as living things. Want to avoid planning for a future if we don't clearly need them 16:14:22 Mikko: Code here is not independent of underlying code. If GSM is not available you cannot use this at all. If you had agnostic, you could work on desktop with SIP 16:14:31 ZK: There is a SIP stack in javascript 16:14:41 JS: Not convinced that a desktop app would use this API. 16:15:04 … there are limitaitons that are bynature for GSM. 16:15:52 CMN: That isn't by nature, it is because you insisted on removing the feature that would allow supporting non-GSM 16:16:09 JS: What we removed wouldn't support all of them 16:16:12 ZK: Yes it would 16:16:28 Josh: Does the function allow the implementation underneath, or the app, to choose what they want? 16:16:49 ZK: It would let both implementation underneath, and if it was there, applications on top, the ability to choose transports 16:17:14 Josh: There were three things... 16:17:33 [CMN: Kings? Blind mice? People talking in a room full of non-plussed people?] 16:18:09 Mikko: Value of this API is what is described in the slide, that you can use the same API to implement your corporate system as well as GSM. 16:18:36 JS: Disagreement about the valid use cases unsurprisingly leads to disagreement on what the spec does. 16:18:38 -> http://www.w3.org/wiki/System_Applications_WG:_Telephony_API 16:18:40 a list of UCs 16:18:45 q+ to suggest do we need 2 Apis? Gsm telephony and sip telephony? 16:19:13 ack DKA 16:19:13 DKA, you wanted to suggest do we need 2 Apis? Gsm telephony and sip telephony? 16:19:15 ZK: Sure. The API spec supported the things taht people want to implement, if we restrict it as you asked, developers have to do that on their own. So long as we don't break forward compatibility I am fine with the restrictions. 16:19:34 DKA: Should we have a GSMTelephony spec, and a SIPTelephony spec? SIP is pretty widely used. 16:19:46 ZK: It would be the same with s/GSM/SIP/g 16:19:58 ML: Don't think we need a SIP API. 16:20:27 DKA: I heard that corporates use SIP, it is important to enterprise. 16:20:38 Josh: THink you're solving a first-world problem. 16:20:54 ML: SIP may be valid use case, but we have other ways to implemetn the protocal in the platform. 16:21:08 SC: See you have references directly embedded... 16:21:20 … makes everything normative. 16:21:35 ZK: Right. editing artifact that we know must be fixed. 16:21:53 CMN: Don't think SIP is just a first-world problem. 16:22:13 Josh: Right. We are in violent agreement. 16:22:34 q? 16:22:34 DKA: Think here people are focused on consumer use cases, trying to point out that entreprise use cases are also potentially important. 16:22:42 [adjourn] 16:23:11 tantek has joined #sysapps 17:18:45 lgombos has joined #sysapps 17:21:46 ming has joined #sysapps 17:35:51 ming has joined #sysapps 17:41:06 zkis has joined #sysapps 17:42:29 lgombos has joined #sysapps 17:50:46 tomoyuki has joined #sysapps 18:36:05 Zakim has left #sysapps