04:22:10 RRSAgent has joined #portals 04:22:10 logging to https://www.w3.org/2019/09/18-portals-irc 04:30:17 romain has joined #portals 04:34:03 prushforth has joined #portals 04:34:07 present+ 04:34:20 Ian has joined #portals 04:34:21 koji has joined #portals 04:34:39 jackbsteinberg has joined #portals 04:34:42 AdrianHB has joined #portals 04:34:44 hober has joined #portals 04:34:46 Topic: Portals 04:34:54 present+ 04:34:56 rrsagent, make minutes 04:34:56 I have made the request to generate https://www.w3.org/2019/09/18-portals-minutes.html Ian 04:34:57 plinss has joined #portals 04:35:04 dino has joined #portals 04:35:18 -> https://github.com/WICG/portals/blob/master/explainer.md Portals explainer 04:35:30 tomayac has joined #portals 04:35:46 Jeremy: You want to put content in a page, and enable seamless transition when navigating to that page. 04:36:02 ... the user goes from point A to point B without a full load cycle in-between. 04:36:07 [API Surface] 04:36:16 - element 04:36:32 ...would be similar to iframe in that enables inclusion, but it has an "activate" method 04:36:38 rouslan has joined #portals 04:36:50 ...it promotes the activation target to the top-level browsing context on activation 04:36:54 hyojin has joined #portals 04:36:57 ...e.g., zoom the portal to fill the screen 04:37:17 ...the top-level page can embed the previous page as a portal, to enable going back and forth between documents without losing context (e.g., script context) 04:37:28 dezell has joined #portals 04:37:32 ....the portalHost object allows communications with parent page that hosts the element 04:37:41 ..that relationship is not reflected in the existing frame hierarchy. 04:37:51 [Use cases] 04:38:05 1) Multi-page web app 04:38:21 q+ to ask why only portals should have these wonderful experience as opposed to all existing transations and popups 04:38:22 ....the app can orchestrate seamless transitions between docs without needing to rewrite as a single-page web app 04:38:30 2) Partial preloading 04:38:59 ...you can load a template in a portal, then flesh out with content that the user actually selected 04:39:08 ....could work also in cross-origin pages 04:39:16 3) Pre-navigation preview. 04:39:30 ...eg., touch gesture on a mobile device 04:39:40 ...as the user release content, it replaces the existing page. 04:40:00 ...this allows content to existing in different documents and achieving these effects 04:40:04 4) Cross-origin 04:40:26 ....seamless navigation among origins to complete a journey 04:41:00 -> https://wicg.github.io/portals/ Draft spec 04:41:27 -> https://wicg.github.io/portals/portals-state-transitions.svg State machine 04:42:29 Jeremy: We need to specify interactions between these new browsing contexts and the various features that interact with iframe and nested browsing contexts 04:42:34 ...e.g, respect cross-origin policy 04:42:46 ...in Chromium this is implemented behind a flag 04:42:58 ...targeting broader experimentation later this year or in early 2020. 04:43:21 ...may start experiments with same-origin use cases, but we think the interesting use cases are really cross-origin since rewriting as a single-page app is not an option. 04:43:31 q? 04:43:34 ack rouslan 04:43:34 rouslan, you wanted to ask why only portals should have these wonderful experience as opposed to all existing transations and popups 04:43:36 rouslan: Love the UI 04:43:46 ...can this type of UI be applied elsewhere. 04:44:06 ...why not bring this new UI to existing APIs, e.g., transitions between pages or when you pop up a window 04:44:06 slightlyoff has joined #portals 04:44:16 q? 04:44:23 q+ 04:44:28 KenjiBaheux has joined #portals 04:44:42 q+ 04:45:02 Rouslan: I call window.open(); today it opens a window with a new URL. What if, instead of opening the window as we do to today, we open a window in a corner and the user needs to click on it to get it. 04:45:25 Jeremy: Need an API for any sort of animation. 04:45:38 KenjiBaheux has joined #portals 04:46:06 Kenji: does not have anything to do with animation..it's like an iframe because it embeds things, but unlike an iframe you can navigate to it. 04:46:07 q+ 04:46:22 ...the fancy UX you are describe may already be achievable with CSS today 04:46:32 rouslan: So basically is "breaking out the iframe" 04:47:17 Jeremy: If all your content is in a single page today you can get animations with CSS. The challenge today is when content is in multiple pages, or even moreso cross-origin. That's where you need portals. 04:47:19 q? 04:47:38 Kenji: The UI is left to designers based on context; the API is lower level than that 04:47:49 ...maybe at some point we can add a higher-level API for some UX patterns. 04:48:47 q? 04:49:20 Kenji: All but one demo today are live (with features behind a flag) 04:49:46 q- 04:49:55 q+ manu 04:49:57 ack sligh 04:50:06 dlibby has joined #portals 04:50:12 slightlyoff: There are lots of debates about the shape of the API 04:50:31 deiu has joined #portals 04:50:58 q+ 04:51:00 Jeremy: You don't call "activate" until you've completed an animation 04:51:18 slightlyoff: What happens in case of problem inside of activate? 04:51:46 Jeremy: As we currently think about it, the activation occurs. If you do nothing or throw an exception, your predecessor browsing context is closed 04:52:14 Rick_Byers: We think that most of these use cases, especially on phones, may raise perf issues 04:52:37 dino has joined #portals 04:52:56 [Debate about whether people use portals wisely taking into account performance implications] 04:53:02 q+ 04:53:06 koto has joined #portals 04:53:06 dezell has joined #portals 04:53:12 Kenji: Performance is something everyone should take into account (for this API or others); some do and some do not 04:53:31 Rick_Byers: Does a page being hosted in a portal need to opt-in? 04:53:53 Jeremy: We will respect CSP - if you don't want to be framed you won't be portaled either. 04:54:06 ...we'd like feedback on defaults 04:54:11 q? 04:54:14 ack romain 04:54:44 Romain: Coming back to the publication use case (Manga)...would you implement that as a link of pages, or could you implement this as a master page with a set of portals. 04:55:07 Jeremy: You probably would do this as a linked chain for performance reasons. But there may well be carousel use cases as well 04:55:53 manu has joined #portals 04:55:55 ...people will need to make tradeoffs (e.g., content common to documents that can be preloaded) 04:55:59 q? 04:56:01 q+ 04:56:13 ...e.g., for a table of contents, preload the intro which is common, then do something else for other sections 04:56:14 ack manu 04:56:39 manu: Can you open windows with different sizes? 04:57:12 Jeremy: When activated portal gets the size of the top-level context. The browser is updated to show the portal origin. 04:57:38 Manu: In the shopping example where there's a preloaded template, what communication happens? Is there a comms protocol between contexts? 04:57:56 Jeremy: Post-message while embedded. You can also put data in the activate message. 04:58:22 Manu: Regarding security and privacy - what happen if people run bitcoin miners ...? 04:58:42 Jeremy: You can do bitcoin mining in an iframe; so same problem elsewhere. 04:58:59 ...user agents would be encouraged to present info about resource consumption to users in a useful way 04:59:20 Manu: In the portal, content is loaded (including JavaScript) as soon as created? 04:59:38 ? 04:59:41 q? 04:59:43 Jeremy: Correct. There are proposals elsewhere for pausing iframes in some situations, and that might be used with portals, but not currently part of the proposal. 04:59:48 ack deiu 04:59:50 s/?// 05:00:02 deiu: What about threading? 05:00:18 Jeremy: In Chromium we have the flexibility of putting portal content in a separate process. 05:00:39 ...portal spec gives us flexibility, and we expect in typical use cases to do so 05:00:59 ...heuristics might lead us to do different things (e.g., due to resource constraints) 05:01:23 ricea has joined #portals 05:01:23 deiu: Is there any restriction from a service-worker perspective? Anything resource that you pull in from a service worker could be available to portal 05:01:26 Jeremy: I don't see why not. 05:01:27 q? 05:01:42 q+ 05:02:03 Jeremy: In current model portal cannot take input until activation. 05:02:29 @@: So with portal, resources are loaded in background? 05:02:43 Jeremy: Yes. You can render it onscreen or offscreen. 05:03:03 ...similar to iframe..it begins to load when parent doc loads 05:03:05 ack dino 05:03:17 present+ 05:03:19 dino: Suppose you are a news site with 50 articles on your home page 05:03:28 q+ 05:03:32 ...you think the user might go to 20 of them 05:03:48 ...it seems frightening that there's any easy win for developers to pre-load resources 05:04:34 ..the scary thing is that this seems to incentivize developers to create an experience where the performance will likely deteriorate 05:05:01 Kenji: It is true that people say "we want this" and then they load a bunch of documents and they realize that it won't work for them 05:05:17 Dino: But it will...you get an experience where the most popular link is pre-loaded 05:05:35 Dino: Why wouldn't google search results pre-load every amp page 05:05:50 dezell has joined #portals 05:06:02 Jeremy: This is true for many Web APIs..I don't think portals solves this issue nor does it do much new with respect to this issue 05:06:11 Dino: Can I choose to not load a portal? 05:06:31 Kenji: We hope that web site owners respect user settings in their browsers about resource usage 05:06:45 ...it might not be that hard to track resource usage (e.g., what was preloaded but not used) 05:07:24 Jeremy: I think restricting the API to "one portal per domain" would make the proposal unpredictable 05:07:36 q+ 05:07:37 Dino: My main point is that this incentives people to use up user resources. 05:07:49 q? 05:07:56 q+ 05:08:31 Jeremy: We should enable good user experiences. Many good user experiences could be abused. 05:08:51 Kenji: Maybe there is room for surfacing some information to web sites to incentivize them to do the right thing. 05:09:07 mattwoodrow has joined #portals 05:09:13 Jeremy: The UA could do some things to e.g., ensure CPU cycles are avilaable. 05:09:24 rrw has joined #portals 05:09:36 Rick_Byers: Google search has indicated intent to provide portal experiences to lightweight content 05:09:49 ...though I share Dino's concern. 05:10:07 ...one note is that the browser can intervene here on the user's behalf in light of CPU availability. 05:10:17 Dino: Can you detect that portal didn't load? 05:10:26 Jeremy: We don't have that today (e.g., "UA declined to load") 05:10:44 Rick_Byers: We have some ways, e.g., load event does not figure 05:10:45 s/figure/fire 05:10:45 q? 05:10:51 q+ 05:11:01 ricea: Do portals obey xframe options? 05:11:22 Jeremy: Yes. That was subsumed by CSP. 05:11:31 q? 05:11:35 ack ricea 05:11:39 ack koto 05:12:08 koto: How about other security-based header policies such as @@, the request header that talks about mode of navigation 05:12:14 ...how do you sync with that? 05:12:24 ...there are also a set of recently introduced headers that isolate windows 05:12:30 ...would those be respected as well? 05:12:49 Jeremy: I'm not familiar with the particular headers you mentioned. But in general our attitude is that we should respect the intent of these headers. 05:13:12 ...so if someone expresses an intention wrt to an iframe, we would do that for a portal while in the background 05:13:22 ...it sounds like we should be sending nested navigate, but I'm not aware.... 05:13:36 ...my general position is that "while embedded, looks a lot like an iframe" 05:13:43 q+ silly_coil_guy 05:13:43 I have made the request to generate https://www.w3.org/2019/09/18-portals-minutes.html Ian 05:13:52 q? 05:13:55 romain_ has joined #portals 05:14:26 dlibby: You mentioned that portals don't have input until active. How does that relate to accessibility (e.g., screen readers)? 05:14:35 Jeremy: We have bug's registered to look at this in more detail. 05:14:53 q- silly_coil_guy 05:14:54 ...insofar as portals are used as previews, we could use alt/title on portals 05:14:59 q+ adrian_hope_b 05:15:18 ...we certainly think that if we are not accepting input we should not accept input from specific APIs. 05:15:28 ...but agree we need to make accessible experience 05:15:30 ack adrian 05:15:40 ask dlib 05:15:46 ack dlib 05:15:54 adrianHB: Why not just use iframe? 05:16:12 Jeremy: One thing I would point out is that we are allowing some operations that are not allowed for ordinary iframe. 05:16:21 ...activate would not make sense for some iframes, for example. 05:16:42 ...similarly there are some operations allowed on embedded contexts that would not work when portal is top-level 05:17:03 q+ 05:17:08 ...you would also have some funny edge cases 05:17:24 ...related to the ability to modify or not modify parts of the DOM 05:17:34 ...we thought that an element would be less confusing 05:17:41 ack deiu 05:17:46 dezell has joined #portals 05:17:55 deiu: Other than the resource usage concerns, there are also some UX concerns 05:18:21 ...if a company wants to provide a specific user experience, they may want to describe or control how the experience looks as transitions to portals happen 05:18:41 Jeremy: We respect CSP so you can control which things are embedded. 05:18:52 ...e.g., I will only load frames from these origins 05:18:58 q- 05:19:13 ...or I will only allow myself to be loaded if within certain origins. 05:19:20 q+ 05:19:20 dino has joined #portals 05:19:28 deiu: Can you restrict recursive activation of portals? 05:19:38 Jeremy: No. Just like navigating away from any top-level origin 05:19:50 I have made the request to generate https://www.w3.org/2019/09/18-portals-minutes.html Ian 05:20:02 Kenji: You can also have out-of-band communications among parties 05:20:12 smfr has joined #portals 05:20:16 q+ 05:20:26 Jeremy: Don't link to sites your users don't want to go do. Navigation surrenders control. 05:20:29 ack matt 05:21:00 mattwoodrow: Could you allow authors to request portals. And if UA says "No you cannot have one" and allow the author to manage a fallback 05:21:17 ian: isn;t noscript or noframe a variant 05:21:32 jeremy: that's a global vairant 05:21:36 q? 05:21:39 mattwoodrow: Video doesn't have this and it sucks 05:21:44 Kenji: Could be interesting to consider 05:21:54 Jeremy: But I have some concerns about expressing this in the DOM 05:22:11 ...you could imagine extending the API like saying "This one is deferrable" and then being able to ask "Did you load this one?" 05:22:32 AdrianHB: Could you render the HTML of the portal as a fallback? 05:22:49 ...if the browser chooses not to fetch the portal, it could deliver what was in the mark-up 05:23:08 Jeremy: Not sure I necessarily agree; authors may not support the use cases 05:23:16 ...I suspect authors will feature detect 05:23:37 ...do you want to give the browser the right to make a decision? 05:24:01 ..I expect sites will present one user experience if portals are supported, otherwise some other user experience. I would not expect fine-grained experience management. 05:24:02 q? 05:24:49 Kenji: I think it's interesting to consider "regular nav" as a fallback 05:25:00 q? 05:25:04 q- dino 05:25:07 q- smfr 05:25:12 RRSAGENT, make minutes 05:25:12 I have made the request to generate https://www.w3.org/2019/09/18-portals-minutes.html Ian 05:25:18 RRSAGENT, set logs public 05:28:57 smfr has joined #portals 05:29:03 smfr has left #portals 05:30:31 romain has joined #portals 05:33:45 mattwoodrow has joined #portals 05:34:31 dino has joined #portals 05:35:00 deiu has left #portals 05:35:26 AdrianHB has joined #portals 05:35:33 rouslan has joined #portals 05:43:00 rrsagent, bye 05:43:00 I see no action items 05:43:00 zakim, bye 05:43:00 leaving. As of this point the attendees have been prushforth, hober, rouslan 05:43:00 Zakim has left #portals