13:13:21 RRSAgent has joined #sysapps 13:13:21 logging to http://www.w3.org/2013/08/28-sysapps-irc 13:13:23 Zakim has joined #sysapps 13:13:32 Scribe: Josh_Soref 13:13:35 ScribeNick: timeless 13:13:46 Zakim, this is SysApps 13:13:46 timeless, I see UW_SYSAPPS()8:00AM in the schedule but not yet started. Perhaps you mean "this will be SysApps". 13:14:00 Zakim, this will be SysApps 13:14:01 ok, timeless; I see UW_SYSAPPS()8:00AM scheduled to start 74 minutes ago 13:14:43 RRSAgent, draft minutes 13:14:43 I have made the request to generate http://www.w3.org/2013/08/28-sysapps-minutes.html timeless 13:14:49 RRSAgent, make logs world 13:14:50 RRSAgent, draft minutes 13:14:50 I have made the request to generate http://www.w3.org/2013/08/28-sysapps-minutes.html timeless 13:15:07 Chair: mounir, wonsuk 13:15:17 Agenda: http://www.w3.org/wiki/System_Applications:_2nd_F2F_Meeting_Agenda 13:15:25 RRSAgent, draft minutes 13:15:25 I have made the request to generate http://www.w3.org/2013/08/28-sysapps-minutes.html timeless 13:15:43 Meeting: SysApps Face-to-Face #2 13:15:46 RRSAgent, draft minutes 13:15:46 I have made the request to generate http://www.w3.org/2013/08/28-sysapps-minutes.html timeless 13:16:20 zkis has joined #sysapps 13:16:25 UW_SYSAPPS()8:00AM has now started 13:16:32 +[Mozilla] 13:17:40 lgombos__ has joined #sysapps 13:18:24 topic: Telephony 13:18:27 wonsuk: good morning 13:18:37 ... first we'll talk about Telephony, zkis will lead the discussion 13:18:43 lgombos has joined #sysapps 13:18:45 s/topic: Telephony/topic: Agenda/ 13:18:56 ... after that, we'll talk about generic API Design issues 13:18:57 Dong-Young has joined #sysapps 13:19:13 Present+ Anssi_Kostiainen 13:19:13 ... and then we'll probably split the group before having lunch 13:19:21 ... does anyone have comments on that? 13:19:27 dsuwirya has joined #sysapps 13:19:33 zkis: could we ask which people are interested in that? 13:19:34 Present+ Jungkee_Song 13:19:39 mounir: we should discuss groups before lunch 13:19:44 topic: Telephony 13:19:51 Present+ Laszlo_Gombos 13:20:24 Present+ Wonsuk_Lee 13:20:44 genelian has joined #sysapps 13:20:46 Marta has joined #sysapps 13:20:48 room has joined #sysapps 13:20:53 Present+ Mounir_Lamouri 13:20:54 marcosc has joined #sysapps 13:21:00 jmajnert has joined #sysapps 13:21:03 Present+ Olivier_Potonniee 13:21:11 Claes has joined #sysapps 13:21:15 Prsent+ KueiFong_Lee 13:21:18 zkis: we won't discuss using System Messages / Factory objects 13:21:31 ... i'd like to discuss how we deal w/ Telephony Services (CDMA...) 13:21:39 ... the rest of the details can be discussed offline 13:21:46 Present+ KuiFong_Lee 13:21:57 http://www.w3.org/2012/sysapps/telephony/ 13:21:58 JonathanJ1 has joined #sysapps 13:22:14 Present+ Claes_Nilsson 13:22:17 Present+ Jonghong_Jeon 13:22:21 s|http://www.w3.org/2012/sysapps/telephony/|-> http://www.w3.org/2012/sysapps/telephony/ Web Telephony API| 13:22:27 left issues: https://github.com/sysapps/telephony/issues 13:22:48 zkis: telephony is based on standards 13:22:48 q? 13:22:57 ... the standards are implemented by modems 13:23:02 ... with varying command sets 13:23:11 ... and there are also sim cards 13:23:21 Present+ Gene_Lian 13:23:23 kjwallis_ has joined #sysapps 13:23:28 JonathanJ1 has joined #sysapps 13:23:40 ... The Ofono stack has the best handling of modems 13:23:54 ... i wanted to show its API set 13:24:13 Present+ hsinyi 13:24:15 http://git.kernel.org/cgit/network/ofono/ofono.git/tree/doc/modem-api.txt 13:24:57 zkis: one of the interface is voice call 13:25:04 s/interface/ 13:25:17 s/the is/the interfaces is/ 13:25:31 ... trying to map all of these things into a dialer is quite difficult 13:25:48 ... the Web Telephony API is trying to do a simple mapping 13:25:56 ... it assumes you have a modem, and the modem is online 13:26:12 ... if we don't have a telephony object on navigator, then the modem isn't available 13:26:22 ... when we dial out, there's a serviceId to be used 13:26:32 ... it's roughly a subscriber ID + service itself 13:26:39 ... a SIM card is a Subscriber identity module 13:26:51 ... in combination with a service, like Telefonica 13:26:57 ... they represent a service 13:27:04 ... the serviceID is a unique identifier 13:27:24 ... the problem with this approach is that it doesn't provide any means to use other functionality present in Telephony 13:27:31 ... when we do Network API or SIM API 13:27:41 ... it would have to be done on a different Navigator object 13:27:59 ... maybe instead of presenting [string] IDs, we could present Telephony Service objects 13:29:06 https://etherpad.mozilla.org/O0KQaiKEhN 13:29:26 q? 13:29:28 s|https://etherpad.mozilla.org/O0KQaiKEhN|-> https://etherpad.mozilla.org/O0KQaiKEhN zkis API proposal| 13:29:43 [ zkis projects API proposal ] 13:30:19 zkis: service, provider, displayName, method for dialing, sending tones, getting calls 13:30:33 spoussa has joined #sysapps 13:30:33 ... you could have a call active, and receive another call 13:30:53 ... you might be talking w/ a telephone 13:30:58 ... and reject Skype calls 13:31:32 gmandyam: on the 1x call in Verizon, the Skype calls are over the service switched path 13:31:54 zkis: you could set Skype up a port for IP 13:32:02 ... as well as circuit switched 13:32:15 ... -- but, this is about a policy 13:32:23 gmandyam: you need data concurrency 13:32:28 ... but CDMA blocks 13:32:42 zkis: since we have the capability to support both types of policies 13:32:46 ... this isn't an argument for it 13:32:49 ... but this solves it 13:32:53 Present +Sakari_Poussa 13:32:57 ... it also solves differences in protocols 13:33:09 ... it also presents SIM info, telephony, network 13:33:50 zkis: on TelephonyManager, we have a handler for incoming calls 13:33:55 ... and also on the service 13:34:29 gmandyam: can you go down to conference call handling? 13:34:45 zkis: conference call handling is the same, but it's on a different service 13:35:04 gmandyam: in the old system you called join() which returned a conference call 13:35:13 zkis: yes, it's the same here 13:35:23 ... but it's differently for VOIP 13:35:34 ... we discussed conference calls in a one-on-one meeting 13:35:38 ... i raised issues on it 13:35:46 anssik: zkis, which options makes the common UC simple 13:35:55 ... while allowing for complex UCs 13:36:09 ... if you want to make a web app to implement the common UC 13:36:22 zkis: the old approach is simpler to use for people who don't care about telephony services 13:36:28 ... and assume there's a service available 13:36:38 anssik: you're saying the common use 13:36:56 zkis: i'm saying we could have an object representing the service 13:37:10 ... but the problem with the old approach is that there could be no service available 13:37:15 ... you want to dial 13:37:23 ... and there's no indication that there's no service 13:37:37 ... it has problems on the error path handling 13:37:53 zkis: another option is TelephonyManager is a default telephony service 13:37:58 ... but then your object could change 13:38:09 anssik: how common is it that it changes? 13:38:17 marcosc: someone pops out the sim 13:38:23 anssik: could we just have "things are broken" 13:38:34 marcosc: zkis was saying that the error handling path 13:38:45 ... dialing is a top level thing which assumes a default service available 13:38:48 ... which may or may not be true 13:38:59 ... not having navigator.telephonyManager being a service is a problem 13:39:09 ... there are advantages/disadvantages to either approach 13:39:21 ... 90% of the time there's a sim, and it's a phone, so it can dial 911/112 13:39:29 ... you could mix/shift things around 13:39:32 ... it's not that hard 13:39:42 ... but for more advanced UCs, you might want to access SIM 13:39:47 ... it gets kind of funky 13:40:01 q? 13:40:15 ... i don't know what access to the telephony service itself allows 13:40:27 zkis: i think it would makes sense to depict the developer flow 13:40:32 ... when you write a dialer flow 13:40:39 ... you need to handle PIN query 13:40:46 ... and you need to handle Emergency calling 13:40:52 ... in Dialer, it's in contextual 13:41:12 ... it may be a Phone Number, and MMI string, an USSD, or an Emergency Number 13:41:24 ... based on what the user is typing, the UI may [need to] change 13:41:36 ... these all pretty much complicate the dialer 13:41:43 ... we try to make it easy for alternative dialers 13:41:49 anssik: you're an expert in Ofono 13:41:56 ... do you know how it looks on Android? 13:41:59 zkis: yes 13:42:05 anssik: what's the API? 13:42:08 zkis: it's very low level 13:42:22 ... it exposes GSM/CDMA 13:42:30 anssik: what type of third party apps are people building? 13:42:38 zkis: there's no problem for Android developers to use them 13:42:51 ... the assumption is that Operators or people in the Telephony business are writing them 13:42:58 ... we don't expect to have 1000 dialer apps on a store 13:43:01 anssik: exactly 13:43:10 ... so the target audience isn't millions of developers 13:43:14 zkis: that's my understanding 13:43:18 ... and the experience on Android 13:43:29 ... i wouldn't be afraid of exposing low level functionality in a way that makes sense 13:43:43 ... that the application needs to check the services available first 13:43:46 ... isn't a problem 13:43:59 anssik: so the target audience is a very specialized group of people who know this in and out 13:44:07 ... going lower level rather than higher level seems reasonable 13:44:22 ... OTOH, if the api is for typical developers, then it makes sense to expose something simpler 13:44:38 zkis: the idea was that keeping the API simple would allow more people to write dialers 13:44:53 ... but if we had service objects, then people could write more complicated apps 13:45:04 ... we could have a method to get a serviceObject by ID 13:45:59 hsinyi: the ED proposal is simple and easy to use 13:46:05 ... but to provide more complicated apps 13:46:19 ... Mozilla has XCC API, and Pin Lock APIs 13:46:26 zkis: where do you provide those? 13:46:29 lgombos has joined #sysapps 13:46:35 hsinyi: separate objects on navigator 13:46:44 s/XCC/ICC/ 13:47:03 ... and operator API 13:47:28 ... with this api, it isn't a problem to create complicated apps 13:47:32 zkis: it looks like a hack 13:47:44 ... starting with how modems are designed and how the radio is designed 13:47:50 hsinyi: if you want to look into the modem 13:47:55 ... then a separate ICC 13:48:06 ... In SMS/MMS, you need this functionality 13:48:12 ... having a separate functionality 13:48:17 ... reduces redundancy 13:48:23 zkis: you only handle part of the problem 13:48:42 ... you can't handle SMS via LTE-IP or Circuit-Switched 13:48:50 ... a telephony service can handle that 13:49:05 ... how do you know if you have telephony functionality at all 13:49:08 ... it could be a Tablet 13:49:45 zkis: this handles everything 13:49:55 ... i think the Mozilla API is built based on different UCs 13:50:00 ... I see a lack of design 13:50:06 ... you're adding interfaces as you meet problems 13:50:14 ... it wasn't designed properly from the start 13:50:28 ... this API is integrated and it handles all the UCs in Telephony 13:50:34 hsinyi: I agree that decision 13:50:52 ... with all the bits in an api, it's for experienced developers 13:51:09 ... but with separate things, we can make simple apis which basic developers can use 13:51:16 [ chatter between zkis and hsinyi ] 13:51:46 zkis: how simple would it be to have a single structure which handles all of these? 13:52:01 ... CDMA service, GSMA service, Skype service, SIP service 13:52:23 hsinyi: i'd like to have other members comment on this 13:52:47 hsinyi: after talking w/ sicking 13:52:49 ... and thinking 13:52:54 ... maybe we can provide another way 13:53:06 q+ 13:53:22 zkis: [do?] we want to provide an API that maps along the existing system 13:53:27 q+ 13:53:33 ... i wouldn't want to let Telephony correctness out of the picture 13:53:42 ... developers understand Telephony 13:53:50 ack jungkees 13:54:18 jungkees: a question about the Telephony Event interface 13:54:22 ... to receive an incoming call 13:54:30 ... the event is driven from a dom event 13:54:36 q? 13:54:37 ... so the telephony app needs to be running 13:54:42 ... why not use system messages? 13:54:50 ... so the telephony app 13:54:55 ... gets the call 13:55:02 ... is that a possibility? 13:55:08 zkis: we have an issue about it 13:55:21 ... in all the phones i've dealt w/, the dialer is a prestarted application 13:55:40 jungkees: with native, we don't actually have a running call 13:55:44 ... we push it up and run it 13:55:52 q? 13:56:01 zkis: otoh, we have to guarantee that you can answer the call 13:56:17 ... we need an upper bound limit on time to start the app and answer the call 13:56:23 ... UI coming up, you press a call 13:56:30 ... system messages don't solve that problem 13:56:31 Josh_Soref: +1 13:56:37 ack gmandyam 13:56:51 gmandyam: what's been added to enable IP Telephony? 13:57:05 ... i think we have too many efforts to enable IP Telephony in the browser 13:57:20 kenneth_ has joined #sysapps 13:57:32 [ gmandyam enumerates places where people are trying to integrate IP Telephony - W3C, 3GPP, IETF ] 13:57:42 gmandyam: i'm not convinced we need to bundle that functionality into this api 13:57:56 ... what in your proposal is being added to accommodate IP Telephony 13:58:14 zkis: this isn't adding specific things to work with IP Telephony 13:58:20 ... except an interface for Conference Call 13:58:30 ... a service represents a SIP account or SIM-based account 13:58:57 ... except SIM based has services 13:59:13 q? 13:59:50 ... for GSM, we may have a cellular service which implements telephony 14:00:00 ... which has sim settings, telephony network, call forwarding 14:00:06 ... but they might not be there in SIP 14:00:28 gmandyam: i can see that this proposal is better than the current draft 14:00:33 ... for CDMA/GSM 14:00:38 ... but for implementation/testing 14:00:44 ... we'd have to verify that this works for SIP stacks 14:00:55 ... i think that's unnecessarily burdensome 14:00:58 ... VoLTE is SIP 14:01:07 ... but you build that into the stack 14:01:21 zkis: you could do IMS with WebRTC 14:01:28 ... you could expose that service through this API 14:01:41 gmandyam: an implementer could do a valid implementation w/o VoLTE SIP based 14:01:50 zkis: if an implementer provides extra bits 14:01:54 ... then it has to document it 14:02:08 ... now we're talking about a voice call interface 14:02:08 q? 14:02:15 gmandyam: with BREW 14:02:34 ... We called it ITAPI 14:03:04 ... but CDMA's teleconference model made the system complicated 14:03:13 ... because it imposes constraints 14:03:44 zkis: call state management is different for CDMA 14:03:49 ... you can't guarantee call state with CDMA 14:03:53 gmandyam: yes, dialing is strange 14:04:11 zkis: it's a pity we don't have anyone from AT&T here 14:04:22 ... i think we still need to convince Mozilla 14:04:32 ... but i'm open to discussing to work on a usable API 14:04:45 marcosc: it's kind of hard to make a call-in 14:04:55 ... until we looked into it in more detail 14:05:22 Will clarify my comments: in previous experience w/BREW OS, we tried to develop a common TAPI (telephony API) for GSM/UMTS/CDMA. Conf. call for CDMA however had to be handled by app-layer logic. Zoltan's proposal tries to branch off the returned objects based on protocol, which will make development easier. 14:05:22 ... this [Etherpad] doesn't look really wrong 14:05:28 ... it seems to make sense 14:05:42 ... i'm fairly convinced that we need a cellular service object from previous discussions 14:05:42 q+ to ask about simple use case 14:05:48 ... i don't have an issue with adding this thing 14:06:03 zkis: we could do an example of how the development flow goes with both apis 14:06:08 q+ 14:06:15 ... checking a few things in a dialer app when you start up, isn't a big deal.. 2-5 lines of code 14:06:24 ack dsr 14:06:24 dsr, you wanted to ask about simple use case 14:06:39 dsr: on my android phone, i have multiple dialers 14:06:54 ... passing in a URI: tel: or sip: 14:07:00 ... i imagine the user is asked which thing to use 14:07:11 ... i might have multiple SIP services, multiple sim cards 14:07:17 marcosc: we have an issue for that 14:07:26 ... this API intersects 14:08:08 https://github.com/sysapps/telephony/issues/171 14:08:24 s|https://github.com/sysapps/telephony/issues/171|-> https://github.com/sysapps/telephony/issues/171 Describe the relationship to tel:| 14:09:00 https://f.cloud.github.com/assets/870154/690783/c2049176-db35-11e2-889f-6799df31e59c.png 14:09:43 mounir: in Firefox OS, we have Web Activities 14:09:50 ... for tel:, sms:, 14:09:54 ... we use Web Activities 14:10:07 ... which lets the User choose 14:10:23 dsr: if i'm on wifi and i want to use a cheaper calling system (Skype) 14:10:29 ... how does a user get to make that choice 14:10:47 mounir: Skype and built-in-dialer would be registered for the "dial" activity 14:10:59 ... you click dial and and get something like that 14:11:23 zkis: or someone implements a dialer which lets you ask which service you want to use on dialing out 14:11:40 dsr: so we have the opportunity to customize the UI for that 14:12:00 [ Maemo and BlackBerry let you pick the outbound service from the dialer UI ] 14:12:15 [ zkis reads through an issue list ] 14:12:17 q? 14:12:21 ack gmandyam 14:12:56 thinker has joined #sysapps 14:13:15 gmandyam: a lot of these states don't matter 14:13:20 ... i can't even fathom UCs for them 14:13:25 anssik: these are from GSM 14:13:30 zkis: these are from GSM/CDMA 14:13:33 ... some aren't mandatory 14:13:39 anssik: are there UCs for all of them? 14:13:46 zkis: we had a two month discussion on this 14:13:59 ... i was of the opinion that w shouldn't map the states 14:14:05 ... because it isn't guaranteed to happen 14:14:39 ... -- radio interface layer 14:15:00 zkis: my opinion is that we only expose state change with parameters defining state 14:15:04 ... and a possible state name change 14:15:25 zkis: you need a lot of these 14:15:34 ... even GSM networks which have these states 14:15:39 ... sometimes they're skipped 14:15:53 ... but it was hard to convince dialer developers that the network doesn't provide a fixed state machine 14:16:08 ... we have a depiction, but it isn't guaranteed 14:16:14 http://www.w3.org/2012/sysapps/telephony/images/inbound_call_state_diagram.gif 14:16:27 http://www.w3.org/2012/sysapps/telephony/images/outbound_call_state_diagram.gif 14:16:55 zkis: these are expected order, they happen 90% of the time 14:17:18 To summarize, in the existing Call State enum, there are several states defined that I don't believe are even exposed through the typical Radio Interface Layer (ril). I believe the enum should be simplified to the minimum no. of states exposed for GSM/CDMA based on the ril. 14:17:25 marcosc: "all diagrams are non-normative" 14:17:50 wonsuk: i think we have a lot of issues 14:18:15 ... we'll have a detailed discussion in the afternoon session 14:18:27 kjwallis has joined #sysapps 14:18:47 zkis: there was a discussion about using constructors 14:20:27 https://github.com/sysapps/telephony/issues/17 14:20:50 s|https://github.com/sysapps/telephony/issues/17|-> https://github.com/sysapps/telephony/issues/17 Evaluate spec for use of Promises| 14:21:06 zkis: i argue that on success and error we return a telephony call 14:21:13 ... it isn't a simple success/failure 14:22:06 zkis: you can't have a telephony call w/o a telephony service 14:22:41 q? 14:22:43 marcosc: you're correct that you need it 14:22:49 ... but idiomatically, you can abstract it away 14:22:54 ... in terms of objects and behaviors 14:23:04 ... anyone can pull the service out at any momemnt 14:23:09 s/momemnt/moment/ 14:23:14 ... the service could go away 14:23:21 ... you create the object, then start the dialing process 14:23:27 ... what you're saying makes sense 14:23:41 ... but idiomatically, it feels cleaner to make the object and then start dialing 14:23:49 Marta has joined #sysapps 14:23:51 ... you're saying you could make objects and never use them 14:24:04 ... but it's idiomatically to create an object 14:24:13 gmandyam: should the api recognize airplane mode? 14:25:31 marcosc: airplane mode would be detected at dial() 14:25:41 zkis: promises handle one end result 14:25:45 ... if you disconnect 14:25:50 ... you expect a disconnect reason 14:26:08 gmandyam: say you Land (flight) 14:26:13 ... you get authentication 14:26:17 ... initially Emergency 14:26:19 ... then Roaming 14:26:23 ... then Home network 14:26:26 ... first call fails 14:26:30 ... that promise gets invoked 14:26:41 ... you need some indication to the user as to why it failed 14:26:46 ... is that a true error condition? 14:26:55 zkis: you're dialing, it goes to network 14:27:03 ... it establishes a voice channel and goes to voice mail 14:27:10 ... you can't handle that with promises 14:27:17 ... you have to handle that with state management 14:27:23 q? 14:28:17 [ marcosc points to https://github.com/sysapps/telephony/issues/17#issuecomment-20193354 ] 14:28:30 zkis: you don't know if there's a real call, or a junk object 14:28:36 ... there's no telephony object in the network 14:28:56 gmandyam: during the last F2F 14:29:03 ... didn't sicking say some methods were synchronous? 14:29:22 marcosc: it turns out these are asynchronous 14:29:32 zkis: if you can do a promises proposal, make a branch 14:29:43 marcosc: we've wasted a ton of cycles on this 14:29:52 ... you've made a bunch of points 14:29:57 ... but the idiomatic design 14:30:05 ... you have a point about dependency of the service 14:30:12 ... you can keep dead objects around 14:30:16 ... after you hang up a call 14:30:21 ... so you're asking for getCalls() 14:30:24 ... you wouldn't 14:30:30 ... you'll only return active ones 14:30:45 ... there are issues w/ garbage collected objects 14:30:57 zkis: one idiom shouldn't be applied everywhere 14:31:05 ... you have to prove it works in telephony 14:31:09 marcosc: we could try to do that 14:31:17 gmandyam: you'd need to talk about the dead object UC 14:31:21 ... when you trigger GC 14:31:24 q? 14:31:35 anssik: below marcosc, i commented about testing this on real JS developers 14:31:47 ... but this API won't get much exposure amongst the developer community 14:32:05 ... marcosc, do you think this consistency with the rest of the platform is important 14:32:14 ... i understand the case if the api would be used by all web developers 14:32:31 marcosc: not really 14:32:34 ... it's not that important 14:32:43 ... but it sets a precedent we're trying to move away from 14:32:53 ... we can keep it, but try to discourage future apis 14:32:57 anssik: that's a good point 14:33:04 marcosc: we're seeing the same patterns through most of SysApps 14:33:14 gmandyam: and WebRTC 14:33:31 marcosc: the TAG had a call and it got very heated 14:33:39 zkis: the issue is still alive 14:33:42 marcosc: let's close it 14:33:56 marcosc: forget promises 14:34:03 ... Factor or Constructor 14:34:22 zkis: Promises with multiple outcomes 14:34:27 marcosc: that's not going to happen 14:35:21 ... the weirdness is that you don't ... 14:35:45 marcosc: there's magic behind the API 14:36:01 zkis: we need to give an example of the development flow 14:36:07 marcosc: we have some examples in the spec 14:36:29 +1 on writing more examples 14:37:36 zkis: i'm ok with leaving this open 14:37:52 marcosc: so we won't do Constructor... we'll keep the factory 14:39:33 marcosc: I promise to add more examples 14:39:43 [ scribe notes that there's only one example and it's virtually useless ] 14:40:01 zkis: mozilla seems to prefer the old way 14:40:11 ... gmandyam thinks the service would help solve problems 14:40:16 ... i still expect input on this 14:40:17 q? 14:40:27 [ Break ] 15:01:11 Scribe: Marcos 15:01:21 Scribnick: marcosc 15:01:46 TOPIC: API Design 15:02:50 zkis: I wanted to get feedback on how to deal with dynamically appearing/disappearing objects in an API. How do we signal those changes? 15:03:15 q? 15:03:37 zkis: I wanted to ask for feedback about how we deal with signalling this. Do we use a sequence and an event? 15:04:13 marcosc: which example in particular are we talking about? 15:04:26 zkis: let's take the telephony API 15:04:48 zkis: we have an array of calls, for example 15:09:43 ... marcos describes "the loop" in the browser and why using arrays and objects that reflect states in a system in real time can be a problem... this can lead to race conditions. Using a sequence is a trade off in that it gives you a snapshot of the state of some system as some moment in time. This has tradeoffs that need to be considered on an case by case basis. 15:10:49 ScribeNick: anssik 15:11:09 [mascosc explains how task queues are spec'd in HTML5] 15:12:02 marcosc: signaling happens at the start of the script exec 15:12:02 ... in practice, does not have an effect on developers 15:12:23 ... ES 7 will define the event loop 15:12:24 chaals has joined #sysapps 15:12:47 ... now it's in HTML5 spec 15:12:48 ... at least, on TODO list for ES 7 15:13:22 https://github.com/sysapps/telephony/issues/81 15:14:26 Title of this: Dynamically changing arrays could lead to race conditions 15:15:27 zkis: race conditions are a generic issue that needs to be resolved, for example see Telephony issue #81 15:15:29 marcosc: generic pattern is as follows, use array when it's going to be static or only part of the loop, if mapping to subset you'll need to use sequence instead 15:15:52 s/or only of the/or only change within/ 15:16:18 marcos: Mozilla's position on system messages is that they're problematic / bad thing 15:16:27 s/marcos/marcosc/ 15:16:37 ... something like using Event Pages would be better 15:16:48 ... how an Event Page would look like we'll need to discuss 15:17:24 ... in this group 15:17:53 ... UC: you want to wake up an app do something on the background 15:18:34 ... this UC is not addressed by system messages as they bring the full app alive, with a visible UI 15:19:16 ... what's in the Runtime spec is lacking, only couple of sentences 15:19:33 ... i.e. the Runtime spec as it stands currently is severely underspecified on this 15:19:56 virginie has joined #sysapps 15:20:20 mounir: Firefox OS system messages open UI all the time, but we want to support background page 15:20:27 rrsagent, draft minutes 15:20:27 I have made the request to generate http://www.w3.org/2013/08/28-sysapps-minutes.html chaals 15:20:52 https://github.com/sysapps/telephony/issues/14 15:21:12 marcos: we're seeing the limits of system messages 15:21:35 ... Mozilla handles this by registering system messages in manifest 15:22:30 q? 15:22:49 ... these issues should be throwed at the TAG 15:22:54 s/marcos/marcosc/ 15:23:03 q+ 15:23:16 https://github.com/w3ctag/api-design-guide 15:23:16 ... it there's confusion around generic design issues such as this, you should file a bug on XXX 15:23:40 Claes: about Promises, I'd like to get guidance on how to use Promises in specs 15:23:51 ... "how to write a spec using Promises" 15:24:18 ... e.g. then is the resolve algorithm used 15:24:36 chaals: not really 15:25:55 Zakim, who is on the call? 15:25:55 On the phone I see [Mozilla] 15:26:10 https://github.com/slightlyoff/Promises 15:26:16 https://github.com/sysapps/telephony/issues/17 15:26:34 marcosc: original Promises (then Futures) proposal is out of date 15:27:02 ... so be careful if you look at the slightlyoff's explainer 15:27:58 ... we need to push TAG more so they can refine the Promises spec to be more understandable for wider audience outside implementers 15:28:33 wonsuk1 has joined #sysapps 15:28:38 ... never throw an exception w/ Promises 15:28:57 ... only change we need to make in Raw Sockets API 15:29:17 ... filed a but on type checking with Promises 15:29:57 ... WebIDL v2 will address issues that break with Promises 15:30:31 ... good to keep in mind Promises is no silver bullet 15:31:33 RRSAgent, draft minutes 15:31:33 I have made the request to generate http://www.w3.org/2013/08/28-sysapps-minutes.html JonathanJ1 15:31:50 mounir: call for proposals for task forces 15:32:18 anssik: Application Lifecycle and Events was moved to be part of the Runtime discussion on Thu morning 15:33:13 [discussing potential TF topics] 15:33:52 thinker has joined #sysapps 15:33:57 Claes: Sockets API discussions 15:34:06 mounir: runtime/packaged apps discussions 15:34:27 zkis: interested on DataStore used in Contacts, Messaging and Telephony 15:34:41 also on Runtime 15:39:09 mounir: proposal, discuss runtime today afternoon, tomorrow split into groups based on interest 15:39:25 +1 15:39:30 +1 15:39:31 +1 15:39:34 +1 15:39:36 +1 15:39:40 +1 15:40:11 +1 15:40:17 +1 15:40:44 http://anssiko.github.io/runtime/app-lifecycle.html 15:40:49 mounir: what do people what to discuss about runtime? 15:40:59 anssik: I would like to discuss this proposal that we wrote 15:41:18 ... it seems that the system messages is not that great 15:41:24 ... so we should find a way to fix that. 15:41:35 ... We call that in our proposal "persistent events". 15:42:01 ... This is describing an event page model. 15:42:16 ... It is a model with multiple windows and takes care of race conditions when you have multiple windows. 15:43:03 ... We wrote down this proposal to cover use cases that are not covered by the current proposal. 15:43:52 ... This is currently focused on the packade apps use case but we should keep in mind of the browser use case. 15:44:23 ... So mounir, you mentioned issues about design issues in having event pages in the browser, could you share that we us? 15:46:28 galindo has joined #sysapps 15:47:50 https://developer.mozilla.org/en-US/docs/WebAPI/Simple_Push ? 15:49:08 anssik: I would like to provide some background on the use cases 15:49:28 ... for the group 15:49:30 Topic: Application Lifecycle and Events 15:50:49 Daniel_Samsung has joined #sysapps 15:50:59 anssik: subset of these use cases should be familiar to the group as they were part of the original charter discussions. Adam Barth wrote a draft straw man for outlining some use cases - which we used as input for our use cases. 15:52:01 ... the first use case we name it "A single entry point to the application" - so when you launch an app, there are cases where there should be no UI. For example, as system application that actually that wants to adapt the launch based on the environment conditions. 15:52:38 ... so, like an email application that boots up, sends and email and shuts down without UI. 15:53:13 ... you should be able to create a single entry point for the application - run some application option and then decide if you want to open up an window or not. 15:55:15 kenneth: when you code stuff in C++, you have a main function where you control the main function of the application. so it's a single entry to the application, you can receive information about the environment so you can make decisions about what the application should do - or see why the application was launched, etc.. So we believe that is a model that works very well (given the long legacy from other languages using a "main" entry point). 15:55:15 15:55:50 anssik: as mounir already pointed out, this need to rationalised to web developers as this is a bit of a foreign concept. 15:56:23 anssik: so in the model, a decision can be made as to wether the UI should be shown to the user. 15:57:29 ... in the second use case "behave adapt on launch" is basically what we already covered. It should be up to the developer is the application should be shown on launch. So again, it should be up to the application as to wether a UI should be shown or not. 15:57:54 dsr: so should it be a script that decides this? 15:58:18 anssik: so yeah, we are looking into that - it if should be a document or a script. 15:59:02 kenneth: so it could be a full document, but potentially with some limitations. This document would be able to detect particular lifecycle events. 15:59:40 rrsagent, draft minutes 15:59:40 I have made the request to generate http://www.w3.org/2013/08/28-sysapps-minutes.html Daniel_Samsung 15:59:45 anssik: so it's kinda like you create a worker - or that is at least one way to design this... or one could use a document, which would be easier for developers to work with. 16:00:20 marcosc: debugging workers is hell 16:00:29 anssik: yes, it's complicated and the tools are not there. 16:01:08 anssik: so using a HTML page (together with all the platform APIs) you can basically create a UI but it's just not visible. 16:01:46 kenneth_: in Chrome, it's a browser instance but not showing any UI. 16:02:05 mounir: so why not use a worker? 16:02:17 kenneth_: because you don't get access to the platform APIs. 16:02:31 anssik: if you start with workers, you don't get any platform APIs 16:03:16 mounir: we had this discussion within mozilla, but we felt that workers would be better because we could limit the number of APIs available and they are more memory efficient. 16:03:34 q+ 16:03:49 q- 16:04:05 q? 16:04:28 q? 16:04:33 ack lgombos 16:04:33 kenneth_: the problem is that you don't have access to APIs like geo 16:05:13 lgombos: I think this one of the key issues - though I don't have a strong stance on this. 16:06:22 lgombos: you can think this in either as a worker or as document - kinda similar to node.js, which provides a powerful set of APIs. I don't know which one is better. 16:06:56 anssik: my take away from this is that we agree on the use case, but not so much the solution. 16:07:21 kenneth_: we need more than just a worker - but we should probably seek more feedback from the web community. 16:07:33 anssik: we need to write code and experiment here 16:10:10 marcosc: in a previous life, a system I worked on used documents and developers found it very useful to be able to load jQuery, use XHR, etc. That would not be possible right now with a worker 16:11:09 q+ 16:11:39 mounir: this is a very basic thing people try to do... example, with google docs: you want to create an instance that shares the logic across pages (aka, shared workers). 16:11:56 mounir: there is no technical reason why we can't add XHR to workers 16:12:37 q? 16:13:05 ack dsuwirya 16:13:35 anssik: one use case that would require a document would be to create document fragments in one page and pass them to another. 16:13:59 Within worker context, we cannot fully make use of xhr request, e.g. cannot set response type to document, etc. 16:14:21 So, in terms of that example, worker context has limitations. 16:14:41 dsuwirya: I think this is an interesting feature - but is it the intention to provide some kind of services or "middleware" for applications? 16:15:22 dsuwirya: on Android, we can build such things on Android. 16:16:05 kenneth_: you can probably do that on Google's app platform using inter app communication - but not so much with this proposal. 16:16:42 anssik: so the use case for having a document is to construct the UI in the "main" document and then send in the UI into that. 16:16:49 q+ 16:17:23 q? 16:17:42 tantek has joined #sysapps 16:17:43 ack thinker 16:20:28 q+ 16:23:01 q+ 16:25:00 Dong-Young: I don't see the reason as to why we would have a single entry point? 16:25:11 s/Dong-Young:/thinker:/ 16:25:49 thinker: we don't need every application to have a single entry point. 16:26:51 kenneth_: I would put it the other way. I was to have a way of making it very simple - where you have multiple windows, one shuts down, but you still have a single point to handle events at a single point. 16:27:36 chaals has joined #sysapps 16:27:55 chaals1 has joined #sysapps 16:28:12 kenneth_: it's very complicated at the moment and it's very hard to get wrong because with shared workers you need to wire that all the dependent pages. With a single entry point, you have a single point from which to work from and control things. This reduces the potential to get things wrong. 16:28:44 thinker: it still has potential issues - like more memory usage, etc. 16:29:38 q? 16:30:01 ack dsr 16:30:11 [discussion about background vs foreground pages... etc] 16:32:35 rrsagent, draft minutes 16:32:35 I have made the request to generate http://www.w3.org/2013/08/28-sysapps-minutes.html chaals1 16:33:05 dsr: I think we can learn from browser extensions - from my experience, it should be possible to say if there a HTML page or a script. The tricky part is communication across documents. 16:33:26 gmandyam has joined #sysapps 16:33:55 q? 16:34:02 ack Dong-Young 16:34:08 marcosc: in Opera extensions we found the same thing. So we ended up exposing an attribute that was a reference to the window object of the containing documents... that make it easy for developers. 16:34:13 Chrome makes it easy to launch background from manifest which is nice, and in principle, the manifest could launch background or foreground. We however need to make it easier to communicate between foreground and background. 16:34:24 marcosc: better than using cross-doc messaging, which is hard. 16:36:12 ??: in your model, it sounds like javascript first - we already have some technology for doing applications without UIs. It all comes down to is if there is compelling use case for this - in your document, you need to clarify the use cases a bit more. 16:36:32 s/??:/Dong-Young:/ 16:36:49 anssik: would you be willing to do some experimentation in Node.js to achieve the same thing? I would like to see running code in node.js to prove your point. 16:38:50 anssik: we can talk offline about it a bit more 16:39:28 anssik: The next one is "Termination sequence" 16:40:44 anssik: our thinking is that before the app gets terminated, it should be able to do some cleanup . The important point is that the system can kill an app at any point, but it will never close it before calling this event. 16:41:50 q? 16:42:19 anssik: the final one is creating windows 16:43:18 anssik: we current have window.open, but it's not quite what we need... it has a lot of legacy baggage. 16:43:50 kenneth_: we are still working on the use cases for this 16:44:27 anssik: if you have worked with window.open, it's synchronous, etc. 16:44:48 mounir: it's not really synchronous 16:45:03 anssik: we should look at the requirements 16:45:22 anssik: I won't read them out loud, but I encourage everyone to take a look at them 16:46:27 anssik: please digest this idea over lunch and we will look the API proposal after lunch. 16:46:33 [lunch break] 16:47:21 rrsagent, draft minutes 16:47:21 I have made the request to generate http://www.w3.org/2013/08/28-sysapps-minutes.html chaals1 16:52:42 Daniel_Samsung_ has joined #sysapps 16:55:07 lgombos_ has joined #sysapps 17:09:00 kjwallis has joined #sysapps 17:21:23 kjwallis has left #sysapps 17:33:40 lgombos_ has joined #sysapps 17:46:41 marcosc has joined #sysapps 17:46:51 scribe: Josh_Soref 17:46:53 scribenick: timeless 17:47:01 topic: Environment 17:47:08 mounir: ehsan is trying to fix the A/C 17:47:14 ... (by finding someone to fix it) 17:47:37 topic: Application Lifecycle and Events 17:47:56 anssik: should we go over the requirements? 17:48:14 http://anssiko.github.io/runtime/app-lifecycle.html#requirements 17:48:41 [ anssik enumerates UCs/Requirements ] 17:48:45 q+ 17:49:14 JonathanJ1 has joined #sysapps 17:49:17 1. An application (e.g. a background service) must be able to run without visible user interface. 17:49:38 anssik: the first requirement is from the perspective of packaged applications 17:49:54 ... we should try to make this work for regular web content 17:49:55 q? 17:49:57 ack kjwallis_ 17:50:13 kjwallis_: when you say application/background service 17:50:18 ... what UCs were you considering here? 17:50:34 ... I see ... "a persistent service", like location tracking 17:50:43 ... or "an event based service" 17:50:54 ... I think both UCs are valid but they might have different Requirements 17:51:01 ... what informed these requirements 17:51:11 kenneth_: when i plug in my SD card, i want to be launched 17:51:15 ... and start a photo importer 17:51:22 ... it could also be a polling app 17:51:39 kjwallis_: i just wonder if different platforms might impose different restrictions based on what they want to do 17:51:51 ... BB10 imposes different restrictions on what could be done in the background 17:51:59 kenneth_: if you're allowed to do this, you might have to install it 17:52:32 kjwallis_: an would be registered for this 17:52:36 ... does the app have to be run first? 17:52:44 ... would there be a way to do this from the manifest 17:52:50 kenneth_: in chrome there's an OnInstalled event 17:52:55 ... maybe run w/ limitations 17:53:01 anssik: other questions? 17:53:20 2. An application must be able to decide when to show the user interface, if at all. It should be up to the application developer to decide when it is appropriate to show the user interface. 17:53:33 lgombos_ has joined #sysapps 17:54:23 q? 17:54:31 mounir: the runtime should be able to close the application even if the UI is visible 17:54:37 anssik: that isn't preferred 17:54:45 mounir: we shouldn't define things this way 17:54:55 ... just say "the runtime should be able to close an application at any time" 17:55:29 3. An application must be able to show the user interface only after it is fully constructed and all the needed data has been loaded. 17:56:02 marcosc: we faced the same problem in Responsive images 17:56:05 ... you don't actually know 17:56:18 ... you need an explicit way to know when your UI is completely layed out 17:56:49 marcosc: when this discussion happened on whatwg for ready 17:56:59 anssik: our model... the developer is in control 17:57:12 ... you invoke window.show() when your business logic is ready 17:57:18 kenneth_: i want to create a window, check screen size 17:58:01 q+ 17:58:14 ... when it's "ready", i show it 17:58:27 mounir: i tried some experiments using chrome apps 17:58:36 ... i saw what you demod 17:58:42 ack mounir 17:58:44 ... having to open a window when you launch an app 17:58:46 ... it's silly 17:58:50 ... everyone wants a window 17:58:58 anssik: i had this discussion with kenneth_ 17:59:04 ... i agree w/ mounir 17:59:11 ... but we have to make sacrifices 17:59:18 ... we have to serve all UCs 17:59:31 mounir: we can have a way to say in the manifest 17:59:35 ... "i want this page" 17:59:42 ... or "i want this script to run w/o a page" 17:59:52 ... if you have to write 10 lines of JS 17:59:58 ... this is a waste of time... 18:00:05 kenneth_: it's a difficult situation 18:00:17 ... we wanted it to be hard for people to create applications 18:00:20 ... with bad UX 18:00:29 ... this is the position apple takes w/ iOS 18:00:41 mounir: i don't see how your proposal improves UX 18:00:46 ... you're making life harder for everyone 18:00:52 ... and expecting people to do the right thing 18:01:02 +1 w/ mounir 18:01:04 ... everyone knows that if you expect people to do the right thing on the web 18:01:07 ... it won't work 18:01:12 kenneth_: i need to create a window 18:01:13 q+ 18:01:23 ... if i didn't create specify hidden 18:01:25 ... it will show up 18:01:33 ... this gives you the ability to show a splash screen 18:01:37 ... you can do it, it's possibl 18:01:42 s/possibl/possible/ 18:01:45 mounir: i understand 18:01:50 ... your point of view 18:02:01 ... but you're being very sophisticated 18:02:11 ... as a developer, i was very surprised that i had to create that file 18:02:15 ... just to get a window to show up 18:02:18 q? 18:02:20 q+ Josh_Soref 18:02:30 ... if you want something very complex w/ system messages, you can do that 18:02:41 kenneth_: Chrome allows you to use JS files and XML files 18:02:54 ... it could be possible for you to give it an html file and have it just show it in a window 18:02:58 ack dsr 18:03:04 dsr: very simple 18:03:09 ... from the developer's PoV 18:03:15 ... window:html or background:somescripts 18:03:23 ... there are lots of complication in Chrome extensions 18:03:40 ... an implicit html 18:03:44 ... i think it should be really simple 18:03:49 ... window:htmlfile 18:03:54 ... or backgroud:script 18:03:59 ... keep it simple 18:04:11 marcosc: the UC they have is that you do it imperatively 18:04:15 JonathanJ1 has joined #sysapps 18:04:16 q? 18:04:25 ... you're right it should be possible to do it declaratively 18:04:49