IRC log of portals on 2019-09-18

Timestamps are in UTC.

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