16:07:14 RRSAgent has joined #tagmem 16:07:14 logging to http://www.w3.org/2014/04/01-tagmem-irc 16:07:16 RRSAgent, make logs public 16:07:16 Zakim has joined #tagmem 16:07:18 Zakim, this will be TAG 16:07:18 I do not see a conference matching that name scheduled within the next hour, trackbot 16:07:19 Meeting: Technical Architecture Group Teleconference 16:07:19 Date: 01 April 2014 16:07:36 Meeting: Technical Architecture Group Face to Face 16:07:59 Chair: Dan Appelquist & Peter Linss 16:08:14 Scribe: Jeni Tennison 16:08:17 ScribeNick: JeniT 16:09:39 Present: Domenic, Yehuda, Dan, Yves, Tim, Jeni, Peter, Sergey, Anne, Dave 16:12:19 twirl has joined #tagmem 16:14:28 Topic: Agenda Planning 16:17:47 twirl has joined #tagmem 16:18:44 Agenda: https://www.w3.org/wiki/TAG/Planning/2014-04-F2F 16:27:25 dka has joined #tagmem 16:27:29 http://www.w3.org/community/ortc/ 16:28:16 annevk has joined #tagmem 16:28:21 http://htmlpreview.github.io/?https://raw.github.com/openpeer/ortc/20131103/ortc.html 16:33:45 Present- Dave 16:33:50 Present+ Alex 16:33:55 cf https://raw.github.com/openpeer/ortc/20131103/ortc.html#informative-references 16:34:10 vs http://htmlpreview.github.io/?https://raw.github.com/openpeer/ortc/20131103/ortc.html 16:34:23 the internal links don’t work 16:35:53 Why won’t people design version control system websites to fit around the web site itself when the VCS is being used to make a web site. 16:36:01 16:37:46 They can go as deep they want, but of the myriadd views of the data, just keep the raw url for the finished product. 16:38:36 The finsihed web siteif the onlythink which needs to have clean URIs. Everything else can have parameters and decoration all over the URI. 16:42:52 timbl has joined #tagmem 16:44:32 Topic: Extensible Web Summit Planning 16:45:45 dka: we'll start the day with some curated lightning talks (5 mins) 16:46:10 ... to get people's creative juices flowing 16:46:43 ... then we'll have a barcamp-style grid 16:47:24 ... and there will be sessions around those topics 16:48:41 ... and then anyone else can suggest topics 16:49:12 ... and we'll invite people who have suggested topics to speak a few words about them to give extra context 16:53:41 Present- Alex 16:54:32 (http://htmlpreview.github.io/?https://raw.github.com/openpeer/ortc/20131103/ortc.html should be avaialble at https://github.com/openpeer/ortc/20131103/ortc.html) 17:00:37 wycats__: can we have collaborative scribing? 17:00:56 dka: yes, but someone needs to set it up 17:01:48 dka: http://oksoclap.com/ 17:02:10 [discussion of using wiki to record URLs of collaborative notes] 17:03:16 dka: we have 88 signups so far 17:04:54 Topic: TC39 Update 17:05:46 wycats__: we need Dave for that 17:05:55 Topic: Capability URLs Draft 17:06:25 http://www.w3.org/TR/capability-urls/ 17:06:36 JeniT: not too much to say; need more input to move on to the next stage 17:06:50 plinss has changed the topic to: https://www.w3.org/wiki/TAG/Planning/2014-04-F2F 17:06:58 plinss has changed the topic to: https://www.w3.org/wiki/TAG/Planning/2014-04-F2F 17:07:03 plinss has changed the topic to: https://www.w3.org/wiki/TAG/Planning/2014-04-F2F 17:07:04 plinss has changed the topic to: https://www.w3.org/wiki/TAG/Planning/2014-04-F2F 17:07:13 dka: we didn't follow up with a PR campaign for getting comments from relevant parties. 17:07:52 dka: when I presented to developers at a meetup, I got a lot of positive encouragement (although not actionable feedback) 17:08:29 wycats__: we should reach out to the GitHubs of the world, and ask if they agree with our guidance. If they are doing something against the guidance, do they agree it's bad, or do they think guidance should be changed? 17:09:09 JeniT: other examples include Dropbox (but that's password reset, which is generic)... 17:09:36 wycats__: Google sharing is generally based on capability URLs. Note they have ACLs on top of it... they have a capability URL mode... 17:09:54 JeniT: Google Calendar is more purely capability URLs 17:10:17 wycats__: Google clearly has thoughts on this based on the way they present things in UI 17:10:25 JeniT: other examples are Doodle and Flickr 17:12:04 annevk: HTTPS leaks Referer when requesting off-origin HTTPS 17:12:20 wycats__: that seems completely broken 17:12:30 annevk: it's broken for capability URLs 17:12:54 Domenic: we can try to get a change in browsers, or advise people to use a redirecter 17:13:12 annevk: CSP policy covers this 17:13:25 ... also rel=noreferer 17:13:43 wycats: should add redirector to the document 17:14:12 ... rel=noreferer only works when you have the ability to add that rel 17:14:22 To be clear, that's a new proposed CSP policy 17:14:26 I'm not sure it's implemented yet 17:14:46 timbl: URLs have been extended to pieces 17:15:00 wycats: there's lots of places where metadata is desired, and it's being put into URLs 17:15:01 wycats: browsers use URLs in many ways where it's hard to tag on metadata like noreferrer. is only one place. 17:15:38 timbl: could we add magic strings in URLs to indicate it's a capability URL? 17:15:50 wycats: we'll run out of ways to do that 17:16:10 ... because there are only so many odd characters to include 17:16:35 timbl: zip URLs are different because you're embedding URLs/fragments in URLs 17:16:58 ... but with capability URLs you could add ;capability=true to the URL 17:17:18 wycats: URLs weren't designed for extensibility like this 17:17:40 ... !s for example are supposed to be reserved, but actually aren't treated like this 17:17:59 timbl: this is like .well-known 17:18:34 ... who is using ?capability=true in their existing URLs? 17:18:51 wycats: params get put into databases 17:19:08 annevk: there are two issues: how do I protect referers 17:19:31 ... and the other one is if you have a URL, there are whole bunch of additional things you want to say about it 17:19:52 wycats: the integrity URLs have the same thing 17:20:12 annevk: it protects against rogue CDNs 17:20:41 wycats: you provide a SHA along with the URL 17:21:02 ... in the jQuery case you don't want to fetch it again, if the SHA matches 17:21:20 http://w3c.github.io/webappsec/specs/subresourceintegrity/ 17:21:27 ... there is additional metadata 17:22:01 ... which we try to add via attributes in tags, which we can't do all the time 17:22:13 dka: the draft addresses existing scenario, not fixing browser behaviour 17:22:32 annevk: wycats is raising a larger problem, which is that whenever there's a URL you want to have a bunch of additional parameters 17:22:41 ... eg srcset on img 17:22:58 ... where you need the extra properties for these new URLs 17:23:09 Domenic: is there a quick fix for capability URLs? 17:23:20 wycats: the only quick fix is the redirect 17:23:37 ... noreferer doesn't work because you can't put it everywhere 17:24:13 annevk: for all third-party resources that you don't trust 17:25:32 JeniT: so you'd refer to same-origin server, which provided 302 redirects to relevant resources 17:26:01 twirl: for images you'd have to proxy 17:26:15 Domenic: maybe github have found this pain point already, or maybe they don't care 17:26:50 [redirector strips out Referer] 17:27:07 dka: also need to account for CSP in the document 17:27:59 http://w3c.github.io/webappsec/specs/content-security-policy/csp-specification.dev.html#referrer 17:28:04 ... that should be another recommendation, to always use this CSP, even though browsers don't support it yet 17:28:35 JeniT: what should the recommendation be? 17:28:52 annevk: I think you either want to do 'origin' or 'origin-when-cross-origin' 17:28:58 ... or 'none' 17:29:39 ... Google wants to use 'origin-when-cross-origin' for example 17:29:46 Domenic: there's no 'none-when-cross-origin' 17:30:02 annevk: we could introduce that if there's a use case 17:30:25 ... 'none-when-downgrade' is the current default, which doesn't work 17:30:38 Domenic: if you're using vanity capability URLs with the subdomain as the capability 17:30:44 annevk: but then you don't want to use origin 17:30:50 Domenic: right, then you want to use 'none' 17:31:03 annevk: if the capability isn't in the path or query, you need to use 'none' 17:32:09 timbl: imagine if instead URLs were designed with domain names in the other order, and with /s as the separator 17:32:28 ... would we be able to have cross-origin security extrapolated down the path? 17:32:41 annevk: you'd do it from the IP address 17:33:31 timbl: from the PoV of security, you might have separate areas with different security 17:33:42 wycats: you can do that with ServiceWorker 17:34:13 annevk: but you can still access APIs, it's all origin-bound 17:34:19 wycats: you could have APIs that were per-ServiceWorker 17:34:38 timbl: I wonder whether we should move towards having the URL space more strictly hierarchical for security purposes 17:34:53 Domenic: that's almost less necessary over time, now that it's easy to get a domain name 17:35:38 timbl: it would be good if you have a storage account to hive off different parts of it 17:35:44 ... that's how filesystems work 17:36:47 wycats: yeah, it's related to how "members.aol.com/username" is a massive security anti-pattern 17:37:29 dka: the action plan 17:38:46 ... make the specific changes that we've discussed re CSP & redirects 17:39:39 JeniT: ask for issues on the capability-urls repo 17:39:52 dka: we need to do a blog post about the draft 17:39:58 ... I'm happy to do that 17:40:47 JeniT: so wycats is pinging someone at GitHub 17:40:51 ... Yves someone at Flickr 17:41:02 Yves: we should ask slightlyoff to ping someone at Google 17:41:45 JeniT: wait a month then do another draft? 17:41:47 dka: yes 17:43:05 timbl: shouldn't you have a 403 rather than a 404 or 410 when the capability URL expires? 17:43:36 ... eg when booking a flight and the session expires 17:43:54 Yves: if the capability URL expires, do you want to expose the fact that it existed or not? 17:44:03 wycats: mostly you don't 17:44:17 ... GitHub will just give you a 404, it pretends it doesn't exist 17:45:22 ... the point is that you don't want to expose the capability URL because that enables brute-forcing 17:46:03 BREAK 18:15:56 Topic: 209 18:16:16 wycats: you need to catch Domenic up on the fact that there is a controversy surrounding 303... 18:17:18 JeniT: the problem being addressed is URLs/resources which do not have representations anyone wants to send 18:17:39 The URL/resource has a relationship with another URL/resource that *does* have a representation 18:18:08 JeniT: examples... (see slides) 18:19:29 JeniT: at the moment we handle this via a 303 18:21:01 JeniT: but 303 causes two round-trips, has problems pre-HTTP 1.1bis 18:21:39 wycats: does this impact licensing problem? 18:21:50 JeniT: not really; this level of discussion is not about that 18:22:06 JeniT: final problem is that it hurts linking because the redirect URL is the one people copy and paste 18:23:58 JeniT: the proposal is "209 Contents of Related"; a draft exists based on discussions within Linked Data Platform Working Group (who ran into the linking issue) 18:24:10 about bookmarkability, see also http://www.w3.org/TR/cuap (that might need an update) 18:25:00 wycats: to clarify, 209's body would be the related content, whereas 303's body would describe the redirect 18:25:22 annevk: why does this require a new status code? E.g. deliver the partial body and add Link rel="complete" 18:25:43 JeniT: issues with 209. Which resource do headers apply to? 18:25:49 wycats: that *is* the licensing problem actually 18:26:52 JeniT: how do apps that only recognize 200 react, etc. 18:27:11 JeniT: various alternatives discussed on www-tag 18:28:37 Various discussion of use cases... 18:30:13 wycats: the semantics you are trying to get across is that "what you are looking at is not the current URL" 18:32:07 Discussion of per-media-type ways of solving this problem, e.g. RDF solves this problem 18:32:40 Yves: this seems like a UI problem 18:33:00 slightlyoff: wycats, you are saying we should hoist this metadata into a header so the UI can address it? 18:33:04 wycats: yes, essentially 18:33:45 slightlyoff: this has specific impacts on the manifest format we + Mozilla are working on. Addressing the application vs. addressing content the application hosts. 18:34:56 slightlyoff: e.g. the difference between bookmaking and article and saving/bookmaking "the blog" containing that article (i.e. as a "homescreen app") 18:35:02 dka: can I invite other Mozillians to attend sessions? 18:35:10 slightlyoff: I'm hoping to use some combination of manifests and service workers 18:35:12 q? 18:35:13 q+ 18:35:48 slightlyoff: service workers allow you specify app scope... (didn't quite follow this) 18:36:36 on the bookmarking issue http://www.w3.org/TR/cuap#cp-bm-neg (now updated with permalinks and other use cases) 18:36:50 wycats/slightlyoff: this is basically a browser limitation; there is only one URL bar that needs to represent two things 18:37:18 timbl: related to how GitHub URLs represent two things, the content in source control vs. a view of that content 18:38:33 timbl/wycats: e.g. when you hit the star button perhaps it should give you a choice which URL you want to "bookmark" 18:38:45 dka: why can't the app developer make this choice for you 18:38:55 wycats: because whichever choice they make will be wrong some of the time 18:39:04 JeniT: the user is the one who knows which is more interesting 18:39:23 JeniT: by the way, it's not necessarily a choice between two URLs, it's a choice between 1 ... Infinity 18:40:26 JeniT: this is all related to 209, but somewhat different 18:42:17 Discussion of whether HTTP 2 server push works... 18:43:10 timbl has joined #tagmem 18:44:21 annevk: what do you expect a general purpose user agent to do with a 209? 18:44:34 annevk: probably nothing more than 200 so just use a custom header + 200 18:44:59 Yves: that might not be the case, e.g. images on mobile as an example 18:45:31 annevk: the consensus way forward for images is a type of content-negotiation approach 18:45:37 Yves: that has issues for caches 18:45:59 annevk: yeah, that's indeed a problem, but that's the way people are going 18:46:10 wycats: to me the biggest issue is that you only get one set of headers... 18:46:22 It seems like Vary support will be something that's tackled sooner or later 18:46:57 wycats: what if you want to send headers talking about the original request instead of about the other resource 18:47:11 JeniT/timbl: then use 303; you can't do it with 209 18:47:36 Yves: you can insert headers into the Link header 18:47:39 wycats: seems bad? 18:47:53 Yves: less bad than 209 18:49:51 JeniT: I feel that the 209's use of Link header is not very accurate 18:51:03 Yves: 209 should be cached as a 200 18:51:23 timbl: because 209 is saying "pretend I was doing a 303 and gave you this" 18:53:31 annevk: reemphasizing that since it has no general-purpose semantics over 200 it should just be 200 + a special-purpose header 18:54:22 wycats: this is the kind of case where we use headers 18:54:30 Yves: headers don't modify the meaning of the reply 18:54:37 annevk: yes they do, e.g. Content-Type 18:54:47 timbl: no but Content-Type is *part* of the content 18:55:20 the meaning of the reply as defined by the status code 18:55:52 Yves: clarifying--- tools that *don't* understand 209 will cache as 200 18:55:57 timbl: and we're ok with that!? 18:56:47 Yves: in general proxies will behave the same for any 2xx code (per HTTPbis) except partial content 18:57:28 wycats: if we're saying this is exactly the same as a 200 but with some special things for new clients, then why not put the new stuff in a header 18:58:08 annevk: the existence of other status codes is only there because they affect general-purpose clients 18:58:47 JeniT: what is the argument against using just a header? 18:59:05 Domenic: sounds like it's mostly a semantic argument about headers vs. status codes? 18:59:44 http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-26#section-6.3 19:00:45 wycats: the specific semantic web case seems different from the others 19:01:02 wycats: the semantic web case seems to need a new status code whereas the others remind me of things we already use headers for 19:01:14 specifically things like Range and Content-Type 19:01:28 dka: to me it seems like two different problems; 209 may not make sense for browsable web 19:01:43 JeniT: I was sympathetic to that until I looked at the diagram opening my slides 19:02:31 JeniT: you could have various relationships not just "described by" 19:02:37 annevk: sounds like the Link header 19:02:55 timbl: then what do the other headers apply to 19:03:17 q? 19:03:20 q- 19:03:27 timbl: clarifying--- there are two types of headers, entity headers and non-entity headers 19:03:37 q+ to ask what the downside is of adding a status code… 19:03:38 timbl: examples of non-entity headers? 19:03:43 Yves: all the connection headers 19:04:28 dka: we've heard a lot of arguments saying "don't do 209"; what is the exact argument against it? Implementation-based or that it doesn't accomplish its job? 19:04:39 ack e 19:04:41 ack me 19:04:41 dka, you wanted to ask what the downside is of adding a status code… 19:04:50 wycats: I think it's implementation based; its utility has not shown itself to be worth the implementation cost 19:05:29 wycats: remember that we don't want people to move from 200 to 209; we want people to move from 303 + 200 to 209 19:05:37 wycats: but remember that legacy infrastructure will not treat this the same way 19:06:42 We want people to move from 303+200 -> 209, but they won't be able to move to 209 if they have to worry about legacy infrastructure 19:06:56 timbl: so how would the Link header version work? 19:07:00 even though the behavior on legacy infrastructure is well-understood 19:07:16 annevk: clients who care would get the 200, look for the magic header (Link header?), and do the special processing. 19:07:56 annevk: Link rel="content-location" could do it 19:08:26 timbl: 209 is saying "the rest of the headers apply to the following, not the requested location" 19:08:34 wycats: only for new clients 19:09:11 Yves: no 19:09:15 timbl/wycats: yes 19:09:36 Yves: partial content use case 19:09:40 wycats: that's what the Range header is fgor 19:09:44 s/fgor/for 19:10:32 Range header is only for 206 19:10:49 plinss: what about 309 instead of 209? 19:10:59 timbl/Yves: nope, 3xx content is about the redirect 19:11:08 timbl: no, 209 is better 19:11:41 plinss: but if we're relying on new clients to understand new semantics for the status code, 3xx would be better since it can fallback to 303 19:12:01 Yves: it should display as a 300, which gives the user a choice 19:12:03 JeniT: that's OK 19:12:03 (I sort of feel like the HTTP WG would do a good job at shooting this down (or allowing it...) I'd rather work on something else) 19:13:46 dherman has joined #tagmem 19:14:19 JeniT: 309 works well for headers 19:17:35 Action: Jeni to create a proposal documenting discussion (?) 19:17:35 Created ACTION-856 - Create a proposal documenting discussion (?) [on Jeni Tennison - due 2014-04-08]. 19:18:58 slide outline was at: http://theodi.github.io/presentations/2014-04-01-http-209.html 19:50:54 twirl has joined #tagmem 19:52:32 timbl has joined #tagmem 19:54:23 Scribe: Jeni 19:54:28 ScribeNick: JeniT 19:54:32 Topic: TC39 19:55:05 dherman: the MS Word document that is the draft for ES6 hit the limits of MS Word 19:55:28 ... due to 11-bit limits on numbering schemes 19:56:12 slightlyoff: C++ is now HTML+GitHub 19:56:51 dherman: ISO & ECMA require MS Word 19:57:54 ... the temporary fix is to break up the document 19:58:08 ... this is part of a larger process problem 19:59:07 ... which also requires single editorship because of using Word 19:59:26 ... editors should be reviewing Pull requests & monitoring style etc, not doing all the writing too 19:59:57 ... we will need to generate a Word file, but we don't have to work with that during writing 20:00:16 slightlyoff: I suggest converting to PDF and importing one image per page into a Word file 20:00:23 e.g., the C++ spec: https://github.com/cplusplus/fundamentals-ts/ 20:00:45 dherman: the source format needs to be inviting to web developers; we'll probably use Markdown to encourage contributions 20:01:03 timbl: which Markdown version? 20:01:20 wycats: GitHub version 20:01:57 dherman: each edition of the spec does have a major rewrite 20:02:28 ... there's a meta-language which is gradually getting more maintainable 20:03:03 ... that's the update on the process 20:03:22 wycats: we're moving to a new model where we work on features 20:03:40 ... where features can be implemented individually when they are ready 20:03:48 ... particularly where those features are isolated 20:04:24 ... we have got to an end of adding new features in ES6 20:04:36 ... we're moving towards writing it all down & getting it standardised 20:04:56 ... I've talked about classes & modules, which are both in 20:05:03 ... there's a thing called 'with' in JS 20:05:20 ... it introduces an object to the scope chain 20:06:04 ... what variables are in scope are a list of objects that are in scope 20:06:20 ... this causes problems when you add new properties on objects which exist on other objects 20:07:11 ... we'll add an 'unscopable' feature that stops the properties being visible using 'with' 20:07:24 annevk: this also matters for event handlers 20:08:03 wycats: basically don't use 'with' 20:08:16 ... new DOM APIs should add themselves to the unscopable list to avoid these clashes 20:08:20 (What wycats is saying is that event handlers use the same model as with.) 20:08:35 ... modules are the biggest current issue 20:08:54 ... the way we factored the modules system is we created a delegation system from module loader to the network/file system layer 20:09:08 ... the module system doesn't know where it's getting the data from, it just knows that there is a way to get content 20:09:41 dherman: there's always been a split between ES semantics & browser semantics 20:09:52 ... modules touch on both 20:10:11 ... how the bits get fetched for modules is on the browser side 20:10:48 ... if you're doing ES server-side you have one way of saying where the modules come from 20:11:02 ... but if you're doing it on the browser, you have to say how module names get mapped to URLs to fetch the code 20:11:14 ... that has to be specced outside TC39 20:11:21 plinss: who's working on this? 20:11:25 dherman: wycats and I 20:11:33 timbl: do relative URLs work? 20:11:46 dherman: that's tricky wrt compatibility with existing module systems 20:11:57 ... ie node/npm and XXX 20:12:12 s/XXX/AMD/ 20:12:29 wycats: absolute lookup on the file system is different from what it means on the web 20:12:38 ... on the file system it's a scan 20:13:01 timbl: all the programming languages I've used that have class paths etc that get scanned, it's always caused pain 20:13:19 wycats: Node doesn't quite work like that 20:13:35 ... it's supposed to look in the current directory 20:13:47 dherman: we don't have to make any design decisions about that 20:14:05 ... it's up to whoever creates a JS engine 20:14:24 timbl: I want to create HTML+JS and package it * 20:14:31 ... & put it on a web server 20:14:51 wycats: the browser loader will work like that, but Node should also be able to evolve into the ES6 module system 20:15:05 ... there is a loader abstraction that enables the environment to decide how to do it 20:15:18 ... we've talked about making the ES spec more specific about what that means 20:15:42 ... getting the browser and Node to be compatible is hard work 20:16:00 dka has joined #tagmem 20:16:11 ... the module syntax & loader abstraction should make it possible to work on the web and in Node without moving files around 20:17:00 dherman: there's the syntax of the module that you write, which we want to be portable 20:17:09 ... then there's package management systems, which are out of scope 20:17:32 ... we're not trying to create workflows that say 'here's how you register packages for other people to download' 20:18:31 ... the lookup semantics (eg package registry) is out of scope 20:19:29 timbl: you should be able to use an absolute URI to refer to an npm module, not have to point to npm 20:19:51 Domenic: is the issue does Node want to be able to point to absolute URLs for modules? 20:20:25 timbl: suppose someone else created their own repository for Node modules (eg because they were specialised) 20:20:40 ... you want to be able to point to those modules with an absolute link 20:20:53 dherman: that's the design of the package system, which aren't in scope 20:21:45 ... you could design something like npm or design a different system 20:22:16 ... we can build a sensible set of defaults for the browser loader 20:22:24 ... so you can download the source from a specific HTTP URL 20:22:31 ... and that makes sense for relative URLs within a given server 20:22:44 ... all the configurability of the system will allow for experimentation on that default policy 20:22:55 ... so people could develop their own package management ecosystems 20:23:00 ... that's a community building process 20:23:25 slightlyoff: trying to do this for the browser is likely to create something that won't work for other environments 20:23:39 wycats: the greatest success will be if many modules are written for both the browser and for Node 20:23:56 ... we need to start with small evolutionary steps that enable experimentation 20:24:07 timbl: my students have to write for both 20:24:14 Domenic: I think that happens in lots of places 20:24:49 slightlyoff: the two environments (browser vs server) are completely different (eg CPU) 20:25:23 ... our experience is that there are small bits of code that you will want to move, but they're the exception rather than the rule 20:25:39 wycats: they may be the exception but they're extremely valuable 20:26:16 slightlyoff: Node running on your local computer vs Node running in a browser are very different 20:26:36 twirl: we write code that works on both, particularly models 20:26:54 s/models/modules 20:26:58 wycats: I hope is that we'll have a system that *allows* people to write modules that can be deployed in both environments 20:27:44 dherman: the module tag 20:27:49 slightlyoff: cannot be the module tag 20:27:52 dherman: oh yes it can 20:27:55 slightlyoff: oh not it can't 20:28:00 FIGHT FIGHT FIGHT 20:28:17 dherman: the new module system has to have an end-to-end process that makes sense 20:28:45 ... there needs to be a good way to kick off your application, to write your main driver code embedded in HTML 20:28:54 wycats: like the main() function 20:29:03 dherman: there's a bootstrapping problem 20:29:21 ... you can say system.import that gives you a promise 20:29:26 ... but that's a very low level approach 20:29:43 ... we want a declarative approach to avoid boilerplate etc 20:30:04 ... we want people to say 'import' in their top-level code, but it needs to be asynchronous 20:30:18 ... so the design of the module system is that the import syntax can only be used in an environment that's asynchronous 20:30:35 ... ES6 doesn't allow you to say import except inside a module 20:30:51 ... module can only be run in asynchronous environments 20:31:01 ... in Node you might relax that 20:31:23 ... we want people to be able to say import but you can only do that in a module 20:31:30 ... you can't do that in a script tag 20:31:51 ... which puts you in the global scope, polluting the global namespace 20:32:15 ... we want a new tag that gives a clean end-to-end story 20:32:22 ... where temporary variables are entirely local 20:32:28 ... where you can use the declarative import form 20:32:35 ... and where it's asynchronous by default 20:32:40 ... the tag is all these things 20:32:48 ... it declares an anonymous module 20:32:57 ... it has the same semantics as script defer 20:33:01 https://github.com/dherman/web-modules/blob/master/module-tag/explainer.md 20:33:30 ... there are various evolutionary parts of the story where we have to make a transition story where module has to work in legacy browsers 20:33:43 ... it has to be implicitly CDATA 20:33:46 https://github.com/dherman/web-modules/blob/master/module-tag/explainer.md#how-do-we-get-there-from-here 20:34:16 dherman: the stopgap is a new script type 20:35:04 JeniT: why would anyone move to then? 20:35:07 dherman: because it's short 20:35:43 ... shorter than