Episode 1: Feb 13, 2025 WECG Meeting Recap
Simeon and Oliver chat about what happened in the February 13, 2025 meeting of the WebExtensions Community Group. That may sound boring, but it was actually quite nice and fun, thankyouverymuch.
Chapters
00:47 - Start of main content
01:39 - Announcements: March Meetup
04:22 - Issue 755 | about: matching
13:08 - Issue 756 | Proposal: Exclude Matching
16:11 - Issue 762 | DNR: Add excludedTopFrameDomains (and topFrameDomains)
21:51 - Issue 763 | Proposal: Add excludeTopFrameMatches and excludeTopFrameGlobs
25:58 - PR 760 | Specification for loading extensions in WebDriver Classic
31:54 - Issue 746 | Proposal: Persistent Authentication
34:37 - Wrap up
35:07 - 👀
You can subscribe to the podcast at https://backgroundcontext.com
Transcript
Hello and welcome to Background Context, a show about the Web, Web
2
:Extensions and the people that build them.
3
:My name is Simeon and Vincent,
and this is episode one, February
4
:13th, 2025, WECG meeting recap.
5
:A couple of days ago, I sat down with
Oliver Dunk, a Google developer relations
6
:engineer working on Chrome extensions, and
we caught up on the February 13th meeting
7
:of the WebExtension Community Group.
8
:I unfortunately wasn't able to attend,
as you'll hear in the episode, browser
9
:but this was a good opportunity to kind
of catch up on the conversation and how
10
:things are evolving and, uh, also to just
nerd out a bit on browser extensions.
11
:I just wanna say a quick thank you to
Google and Mozilla for giving both Oliver
12
:and me the time to work on this project.
13
:Hopefully we can keep doing it.
14
:Simeon: I was supposed to chair the last
web extension community group meeting.
15
:I woke up five minutes before it ended.
16
:So, suffice to say I did not attend.
17
:This seemed like a good opportunity to
try to do a bit of a WECG meeting recap.
18
:Talk about what we talked about.
19
:For reference meetings
are not publicly recorded.
20
:They are public sessions and
we take minutes, but we don't
21
:actually record the meeting.
22
:So we don't have like a, don't
have a transcript and we don't
23
:have like a detailed recording
that people can go catch up on.
24
:So my hope is that we can sit down
and chat and share some information
25
:about what browsers and the
community talked about last week.
26
:Oliver: That sounds good.
27
:Simeon: So let's start off.
28
:The first thing on the agenda was
an announcement of the upcoming
29
:WECG meetup in Berlin in March.
30
:Uh, I know what I was planning
to say and therefore didn't.
31
:I'm curious, how did that kickoff go?
32
:What was shared there?
33
:Oliver: Yeah, so I think what
you've said is already a lot of
34
:what we've shared in the meeting.
35
:It was just a reminder that we're
having an in person meetup in March,
36
:and then a call out for anybody that's
an active member of the group that
37
:wants to participate to register their
interest so that we can get an actual
38
:headcount of who's looking to attend.
39
:And then I don't think there was much
discussion beyond that, so it was
40
:just a quick heads up and reminder.
41
:I'm really looking forward to that.
42
:I really enjoy those in person meetings.
43
:Simeon: They are pretty great.
44
:Yeah...
45
:I know that I say this every time we
talk about in person meetups, but I
46
:just really enjoy hanging out with this
group of folks and sitting down and...
47
:I don't know, it's also like a great
opportunity to nerd out on a niche
48
:area that you don't get to very often.
49
:The main thing that I wanted to call
out in, in this -- so I guess I'm
50
:appending it now -- the wiki page.
51
:We have...
52
:the WebExtension Community group has a
on our GitHub, and there is a:
53
:Berlin F2F Coordination [page] -- F2F
for face to face -- that is the place
54
:where I'm planning to consolidate all
of the information about logistics
55
:and schedule and all of that stuff.
56
:I am in the process right now of kind
of lashing together a rough sketch of
57
:objectives and goals for the session so
we can start to scaffold out what the
58
:individual meetings are going to be.
59
:So I'm going to be, hopefully,
sharing some updates on that shortly.
60
:Oliver: Great, I didn't know that that
wiki page existed, so that's good to know.
61
:Simeon: That's also why I added
it to the announcement page.
62
:So, if you go check out the
meeting minutes for the:
63
:WECG file meeting notes have
already been updated on GitHub.
64
:Cool.
65
:So let's dive into...
66
:Usually the sessions are divided into
kind of a couple of main sections:
67
:there's a triage, there's timely issues,
there's checking on an existing issues.
68
:People before the sessions
will volunteer topics and then
69
:they'll get added to the agenda.
70
:By default when any new issues that are
created since our last public meeting will
71
:get wrapped up into the agenda as well.
72
:So let's, I guess, start off with it's
a pair of issues: issue 755 and 756.
73
:The first is "Proposal: about:
matching" and the second is
74
:"Proposal: exclude matching."
75
:Oliver: I think one thing that we try
and do often in the meetings is to get a
76
:clear separation between what the specific
request is and what the use case is,
77
:because I think the use case is really
helpful to understand and then we'll
78
:usually start from a point of discussion
focused around the proposal and the issue,
79
:but sometimes if that proposal doesn't
make sense or doesn't seem likely to be
80
:something that we'd implement we might
then look at, is there something else
81
:that we could offer that would solve the
same use case and we'll then go back to
82
:the developer or whoever opened the issue
and say, "we would be supportive of this
83
:other thing, is that something that you'd
consider or that would work for you."
84
:The reason I call that out is because
I think this is a case where we
85
:had the initial use case and then
we discussed a few different ideas
86
:around how to solve that use case.
87
:So, as best as I understand the use
case -- and actually I should say
88
:here [that] sometimes the author
of the issue is present in the
89
:meeting, other times they're not.
90
:So, if they're not in the meeting,
then we do our best to understand
91
:the use case from what's in the issue
and just sort of using our intuition.
92
:This is a case where Erosman [eh-ROS-man]
wasn't -- is that how you say their name?
93
:Simeon: I say "AEROS-men",
but I don't know.
94
:Oliver: Okay.
95
:Where Erosman, they weren't present in
the meeting, so we did our best job to
96
:identify or understand the use case.
97
:It might not be quite right,
although maybe a piece is missing.
98
:But the use case was essentially, we
have the context menus API in extensions.
99
:where you can register
additional context menu items.
100
:So if you right click on your browser
action, which is the icon your
101
:extension has in the toolbar or on a
page, you see some specific options.
102
:And they wanted a way to have those
options appear if you right clicked
103
:on some sort of web like content.
104
:So either an HTTP or HTTPS page.
105
:Or maybe a blank frame, which
doesn't have a HTTP URL, but
106
:is still in a web like page.
107
:But they didn't want that context
menu item to appear if you were on
108
:a file: URL, because the particular
action that they were offering to
109
:users didn't make sense on a file: URL.
110
:Simeon: Right.
111
:Oliver: So these were a couple
of issues that were talking
112
:about how to approach that.
113
:Does that sort of make sense
as the initial pitch for the
114
:problem we're trying to solve.
115
:Simeon: yeah.
116
:And I think the first thing that
leaps to mind is Firefox has some
117
:additional capabilities related to
updating the content of a context
118
:menu after it has been displayed.
119
:And I don't think Firefox or, sorry, I
don't think Chrome or Safari support it.
120
:It's a Firefox only feature.
121
:But, it gives developers a imperative
way to solve this exact problem
122
:and to some extent, one of the
tensions that we're looking at here
123
:is imperative versus declarative.
124
:That the request is, kind of, implicitly
the ability to better declaratively
125
:target and the current solution , the
imperative one, is not widely supported.
126
:So I think it is kind of
a reasonable question.
127
:Like, we could solve this
with the imperative API.
128
:Is that the direction that
we want to take the platform?
129
:Oliver: Yeah, and that's actually
something that Rob brought up.
130
:I'm not too familiar with how that works,
but he did mention that it would likely
131
:be a solution to some of these issues.
132
:I don't know...
133
:The way I understood it when it
was described was you basically
134
:get the ability once the menu
is shown to hide certain items.
135
:Do you know, are you able to do
that before it has its first render?
136
:Or will the user see a flash of
certain items and then you have
137
:the opportunity to hide them?
138
:Simeon: I haven't tested it myself, so
I'm not sure how quick that cycle is.
139
:I know a hack that people often
use is a mouse over event.
140
:So sending a message to the
background script on mouse over and
141
:then In response to the mouse over
event, adjusting the contents of
142
:the menu before it can be shown.
143
:And that timing is tight: if the
extension's background context
144
:isn't alive at the time, it
may take too long to start.
145
:But, if it is alive, then you have
a fast enough cycle on desktops
146
:that I've seen to be able to
dynamically update that content.
147
:Oliver: Okay, so it sounds like even
in Firefox there might be benefit to
148
:having a declarative way of doing this
so you don't have to start the background
149
:context if it's non persistent, and
you don't have any of these timing
150
:issues that you might run into.
151
:Simeon: Yeah, I think in general
as we talk about and iterate on
152
:capabilities, one of the things on my
mind is like, how do we start up less?
153
:Oliver: Yes.
154
:So, the proposal in this first issue,
755, was to expand the match pattern
155
:syntax that we have in extensions.
156
:So extensions have a match pattern
syntax, which supports various patterns
157
:with wildcards for matching different
contexts -- usually URLs and then
158
:also a couple of other protocols.
159
:And the proposal was to add to
the existing patterns we support
160
:-- about:newtab and about:blank and various
other contexts that you might want to
161
:match -- because there is already a
documentUrlPatterns filter that you can
162
:use when you're creating a context menu.
163
:So you can already say, "I only want
the context menu to show if it matches
164
:one of these documentUrlPatterns."
165
:But the problem is, there's no way of
including things like blank frames or
166
:the New Tab page in that pattern because
they're not supported by the match syntax.
167
:So as soon as you add that field, they're
never going to show in those contexts.
168
:So just adding some additional matching
options was the first proposal.
169
:I think there was some interest
in doing that for contexts that
170
:we all share across browsers.
171
:So, for example, I know Timothy,
I believe, was supportive of doing
172
:that for about:blank because we all
have the concept of empty frames and
173
:about:blank, and so that's something
that we could potentially all support.
174
:about:newtab is, I think,
only a Firefox feature.
175
:I mean, we all have New Tab pages.
176
:But I don't think any other
browser has about:newtab as a
177
:special URL for that New Tab page.
178
:Simeon: Yeah, I think Chrome internally
has it as chrome:newtab and that
179
:might be aliased to about:newtab.
180
:I'm not sure.
181
:Oliver: Yeah, I guess we could check.
182
:Simeon: Actually.
183
:Yeah.
184
:Um, uh.
185
:Oliver: It looks like it does work.
186
:Simeon: Yeah.
187
:Oliver: Yeah.
188
:So yeah, maybe there's a
justification for supporting it.
189
:But I think we felt like doing it
that way didn't quite make sense.
190
:Because even if it's a URL which
is supported behind the scenes,
191
:it doesn't feel like a very
sort of browser neutral URL.
192
:Simeon: Hmm.
193
:Oliver: So then we started talking
about other approaches to this.
194
:One approach that we were discussing
was Using something similar to
195
:the match_origin_as_fallback field
that we have for content scripts.
196
:So content scripts are the scripts that
you inject into the your extension injects
197
:into a web page, and we have something
called match_origin_as_fallback, which
198
:is a Boolean flag that you can set.
199
:And if you set that to true, then as well
as checking against the list of URLs,
200
:you want your script to run in, we'll
also say if this is an about:blank frame
201
:or a blob: URL, then we look at what is
the origin that's associated with this.
202
:So, in the case of a blank frame,
it would just be the parent frame or
203
:the frame that created that frame.
204
:In the case of a blob: URL, it would be
whichever origin created that blob: URL.
205
:And so that provides us a nice way
to match these contexts that we
206
:can't match with a URL pattern.
207
:And so we could potentially match using
that in this case for context menus.
208
:Simeon: Hmm.
209
:Yeah, I can, that seems
like a, a potential pattern.
210
:Oliver: And I think that's where we
ended the discussion of this issue.
211
:So we came up with that possibility
and we wanted to go back and just
212
:see, would that work for the reporter?
213
:Is that a good approach for this?
214
:Issue 756 is very similar.
215
:The use case I actually think
isn't called out explicitly here,
216
:but given that they were opened
consecutively by the same author,
217
:I'm assuming it's a similar use case.
218
:And this was to have an
exclude matches field.
219
:And so you could presumably say, if I
don't want to run on file: URLs, then
220
:I just say exclude, and then in my
array of patterns to exclude I have
221
:the file: scheme with a wildcard.
222
:Simeon: Right.
223
:Oliver: So this is another
approach for doing that.
224
:It looks like the conclusion we came
to was just clarifying the use cases.
225
:I think, especially given the discussion
in the previous issue, it would make
226
:sense to see is it a case of we just
need to close one of these issues
227
:and then we solve the use case?
228
:Or is there a case where
we want to do both?
229
:I also think the second issue was
quite broad or at least not very
230
:specific about the APIs to touch.
231
:So the second suggestion is to
add additional matching properties
232
:to APIs that don't have them.
233
:Which I think is something we'd all
be supportive of, but we're going
234
:to need to discuss on a case by
case basis which APIs doesn't make
235
:sense to change and which properties
make sense for that specific API?
236
:Simeon: One of the other
complications that leaps to mind with
237
:exclude matching as the broad category:
match patterns are used in many different
238
:places and not always the same way.
239
:Oliver: Yes.
240
:Simeon: For example,
web_accessible_resources match
241
:patterns for the contents
that can be injected into...
242
:I believe that includes paths.
243
:Is that right?
244
:Oliver: I believe so.
245
:Yeah, you're definitely right
that there are certain cases where
246
:you can and can't have paths.
247
:I think content scripts,
you can have paths.
248
:Unless you're in Chrome and you specify
match_origin_as_fallback, in which
249
:case, we do support paths, but we will
only allow the path to be a wildcard.
250
:Simeon: This feels like a case
where we could do with some
251
:distillation of the inconsistencies.
252
:Oliver: Yes.
253
:host_permissions is another case
where when you list out the host
254
:that you'd like access to that
also uses the match pattern syntax.
255
:And again, in that case,
you have to specify a path,
256
:but the path is irrelevant.
257
:So if you don't specify a path, then
we'll show a runtime error saying,
258
:"we can't load this extension, this
is invalid syntax, there's no path."
259
:But no matter what you set the path to,
even if you set the path to example.com
260
:forward slash this very
specific path or no other path.
261
:We'll treat it as a wild card,
262
:which yeah, we, we should fix.
263
:Simeon: That could be a little clearer.
264
:A'right, let's move on to issue
762: DNR add excludedTopFrameDomains
265
:and topFrameDomains.
266
:So that's the excluded version
and the not excluded version of
267
:this "top frame domains" concept.
268
:Oliver: And I actually think we should
bundle this one with the next issue.
269
:So if you want to
introduce that one as well.
270
:Simeon: Yes, of course.
271
:Next issue is 763: Proposal:
add excludedTopFrameMatches
272
:and excludeTopFrameGlobs.
273
:Oliver: So the use case is
similar between these two issues.
274
:I think the really important thing to
call out is that these are proposals
275
:to modify two different APIs.
276
:So, issue 762 is about the Declarative Net
Request API, which is used for registering
277
:declarative filtering rules to say,
"if the browser makes a request to this
278
:URL, I want to block it or redirect it."
279
:Whereas issue 763 is about
updating the Scripting APIs.
280
:So, adding new fields that you can
choose, that you can use to control
281
:whether your extension injects
scripts on a particular page or not.
282
:Simeon: So what were the goals
of introducing this "excluded
283
:top frame of domains" concept?
284
:Oliver: So, this is an interesting
case where if you look at it purely
285
:in isolation from a technical point
of view, it seems sort of weird.
286
:Because, generally where you're injecting
is -- or whether you want to inject is a
287
:decision that you make based on the origin
of the page and not based on the top
288
:frame, which may or may not be related to
the frame that is currently being loaded.
289
:They could be completely
different origins, loading
290
:completely different content.
291
:But the use case...
292
:I think the first issue came from
Alexi, who works on Privacy Badger.
293
:Simeon: Right.
294
:Oliver: And the second issue came
from polywock, but I think they
295
:both speak to the same use case.
296
:Simeon: Mmhmm.
297
:Oliver: And, so let me let
me try and explain that.
298
:Let's say that you have a social network,
so you have example-social-network.com,
299
:and then on that social network page
there's a frame which is a game.
300
:So this is my-example-game.com.
301
:And as part of that game, it may
have some social features, it
302
:might want to use the API of the
social network to pull some data.
303
:And so even though this is a third
party frame that's completely unrelated
304
:to the social network, it's still
making requests to the social network.
305
:And the user might come along
and say, "I'd actually like
306
:to allow these requests.
307
:I'd like to allow...
308
:Anytime that I'm on this social
network, I don't mind if any of
309
:the frames in this frame tree are
communicating with that social network,
310
:because that sort of makes sense.
311
:The...
312
:For this entire tab, I'm interacting
with that social network, and I'm
313
:comfortable with making those requests."
314
:Simeon: Yeah, I...
315
:Oliver: Does that make sense?
316
:Simeon: I can see that example being
like, "I am consciously playing this
317
:game and playing it with friends.
318
:I want that relationship to be...
319
:Oliver: Yes.
320
:... Simeon: available.
321
:Oliver: And so one of the solutions
that extensions already have today
322
:is they'll say if I'm on a particular
site and that site is making requests
323
:which are first party to the origin
of that site, then you can probably
324
:ignore my Declarative Net Request rules.
325
:And so, we actually have a
way of doing that already.
326
:There's a domain type condition in the
Declarative Net Request API, and so
327
:you can say, "if the domain type is
third party, then apply this rule."
328
:Which allows you to say,
"if I'm on example.com
329
:and it's making a request to my
social network, then that's a third
330
:party request and they don't want it.
331
:But we don't have a way of saying, "unless
the top frame happens to be this URL."
332
:And so that's really what these requests
are about, is having some way to say,
333
:"look at the top frame, and if the top
frame URL is one of these URLs, then I
334
:don't want to apply these rules," or, "I
don't want to inject these scripts which
335
:are blocking some other functionality."
336
:Simeon: Interesting.
337
:I think...
338
:This also feels like it dips into the,
the realm of concerns that developers
339
:have highlighted around the more that
they have to rely on the platform
340
:providing these edge cases and niche
capabilities, the slower they are to
341
:evolve and iterate on these concepts.
342
:'Cause, previously there was no
343
:to what they could do in terms
of examining content and...
344
:blocking rules, or was or wasn't
permissible and that kind of thing.
345
:Oliver: Yeah, and I think this is really
a case where it's really good that we
346
:have developers using these APIs to tell
us about these use cases, because...
347
:I think it feels like a -- like I said
at the start -- it feels like a very
348
:weird concept purely looking at it from
a technical perspective in isolation.
349
:But when you hear the use case and the
behavior that a user would expect, I think
350
:it actually seems completely reasonable
and it's something that makes sense.
351
:And so, this first issue, 762,
we were all supportive of.
352
:And so we have the supportive Chrome,
Firefox, and Safari labels on that now.
353
:And it's something that we could
look at implementing in the future.
354
:Simeon: Very cool.
355
:Oliver: Then we had issue 763,
which like I said, is the same, but
356
:this is -- rather than for network
requests specifically -- this is about
357
:when you choose to inject scripts.
358
:Simeon: Right.
359
:Oliver: I think there are
a couple of concerns here.
360
:One that I had was was that
this is proposing some slightly
361
:different ways of matching.
362
:So this is proposing "exclude top frame
matches" and "exclude top frame globs."
363
:And so the matches is those match
patterns that we spoke about,
364
:and then globs is an even broader
sort of wildcard matching syntax.
365
:It's actually quite hard on a technical
level to do that, because generally if
366
:you have a frame which is cross origin
to the parent frame, then at some
367
:point along that path you lose the...
368
:you lose the path.
369
:Like, you know the origin of the parent
frame you're in, but you don't necessarily
370
:know the full URL of the frame above you.
371
:So, figuring out what is the full
path of the top frame is quite tricky.
372
:And without that full path it
doesn't necessarily make sense
373
:to support matches or globs.
374
:So one of the pieces of follow
up that we wanted was to figure
375
:out is matching against a full
match pattern or a glob needed?
376
:Or is it enough to simply say,
like, exclude top frame origins or
377
:domains and match without the path?
378
:Simeon: Very interesting.
379
:Looking forward to hearing more about that
use case and what people have in mind.
380
:This also, kind of, gets into
all of the different patterns
381
:that are available for matching.
382
:Depending on the context there's globs
and match patterns and regular expressions
383
:and possibly other syntaxes as well?
384
:Oliver: And then the other concern,
or at least, request that Rob from
385
:Firefox's side had was just to see
sort of more evidence that this was
386
:something that developers really
needed and that developers were
387
:already trying to do in other ways.
388
:So, this is something that you can
implement to some extent already.
389
:So, you can basically always inject
the content script, and then in
390
:JavaScript you can actually access
the origin of the top frame, so
391
:you can have a check, which says...
392
:Simeon: Mhmm.
393
:Oliver: ...if
394
:the origin of the top frame is...
395
:like matches my origin or is in this
list or whatever, then you can return.
396
:And so, you have a way to basically
have an early return in your script.
397
:Which doesn't prevent you from injecting
the script entirely, so that's a nice
398
:optimization that we could have if we
implemented this as a feature that was
399
:actually supported in the platform.
400
:But it does give developers a way
to implement this and show us,
401
:like, "we're trying to do this.
402
:If we had a better way,
we would also use that."
403
:And so Rob was quite keen
to see that sort of thing.
404
:Simeon: That is always a complicated
issue, especially if a developer is
405
:consciously trying to do something
so they don't have access...
406
:It's....
407
:It's...
408
:It feels wrong from the developer
point of view to inject it and then
409
:revoke it because you don't even
want to inject in the first place.
410
:Oliver: Yes.
411
:Yeah, it's, at the very least
extra data that has to be sent
412
:down to that particular page.
413
:Like, a script that has to be loaded and
parsed that might otherwise not be needed.
414
:I mean, maybe the whole script
doesn't have to be parsed.
415
:Browsers are very clever.
416
:But if you can avoid asking it
to run the script entirely, then
417
:that's probably better than asking
it to run the script and then it
418
:immediately returns on the first line.
419
:Simeon: Unfortunately, I think
it does have to be parsed.
420
:The entire thing [script] has to be...
421
:yeah, you need to parse the script
before you can begin execution
422
:and you can't do that....
423
:There isn't something at the parsing
stage that would enable you to
424
:bail, to the best of my knowledge.
425
:Oliver: Yeah, I just don't know...
426
:Can you pass...
427
:Maybe you can pass line by line and, like,
execute the first line and then bail?
428
:But yeah, definitely outside of my
level of understanding of the JavaScript
429
:engines that the various browsers have.
430
:Simeon: Cool.
431
:So next up, I think we have...
432
:PR 760: Specification for loading
extensions and WebDriver Classic.
433
:I believe Kiara has been driving
this work on the Apple team.
434
:Oliver: Yeah, so I don't think
there's too much to say here.
435
:We have been working on adding support
for loading extensions to WebDriver
436
:BiDi, which is the new communication
protocol for tests in browsers.
437
:We...
438
:so we have that specification.
439
:That landed a while back.
440
:Or at least a few weeks ago.
441
:Probably longer at this point.
442
:For Safari, they're planning to
implement this initially in WebDriver
443
:Classic, which is the previous
version of the communication protocol.
444
:And so this was just adding some notes on
how they're planning to implement that,
445
:and sort of making the links between,
this thing that we're implementing in
446
:WebDriver Classic is based on, this
step of the algorithm in WebDriver BiDi.
447
:And yeah, we briefly discussed this.
448
:I've already approved it.
449
:I think generally everyone's happy.
450
:So, hopefully this will...
451
:Oh, it has merged actually.
452
:I was going to say hopefully this
will be merged soon, but looking
453
:at the PR it has already merged.
454
:Simeon: Honestly, I'm really excited
about that work because it's also
455
:going to enable developers to
do more testing of extensions.
456
:I...
457
:You know, this is a mutually beneficial
area where us scratching our own needs
458
:as browsers and as people working on
trying to make behavior more consistent
459
:also helps developers better test
and experiment with and verify the
460
:behavior of their own extensions.
461
:Oliver: Yeah, for sure.
462
:I've written quite a few tests
for extensions in the past.
463
:Actually, I gave a talk in the past
around sort of how to test a browser
464
:extension and what you can and can't do.
465
:But previously I think what
we've had has been very limited.
466
:You've been able to use the
same frameworks that you
467
:can use to test the web.
468
:And that's gotten used so far, but
as soon as you want to do something
469
:which is extension specific -- where
you want to open the pop up or run
470
:some code in the service worker -- it
starts to get a lot harder.
471
:So yeah, building out all of this
infrastructure to be able to fully test
472
:extensions, I think is going to allow
us in the Community Group to write some
473
:cross browser tests that basically make
sure we have consistent implementations.
474
:And implementations that are
following the specification that
475
:we'll hopefully have eventually.
476
:And then, like you say, for developers
it hopefully means that the platform
477
:supports all of these things so that
they can then be easier to call in
478
:Selenium or Puppeteer or whatever
tool you're using to write your tests.
479
:Simeon: Fingers crossed.
480
:Looking forward to it.
481
:So, speaking of WebDriver, our
next issue, 764, is WebDriver:
482
:install command optional parameters.
483
:What's going on with this one?
484
:Oliver: Yeah, so this is basically
just a call to start discussion.
485
:So, Krzysztov has been...
486
:Krzysztof has been working on...
487
:He worked on the initial WebDriver BiDi
specification for how to load extensions.
488
:So, like I was saying, this
is the the precursor to the PR
489
:we just discussed from Kiara.
490
:And so, he's looking at what the
next steps are, and one of the
491
:things was, "are there various
features that we want to support?"
492
:So for example, I think Chrome,
Firefox, Safari, Edge -- we all support
493
:running extensions in incognito.
494
:And so, do we want to have
a way of controlling that?
495
:Allowing in...
496
:Allow an incognito setting
for an extension when we're
497
:loading an extension in a test?
498
:And then there are various other settings.
499
:Firefox has a way to install temporarily.
500
:There's pinning an
extension to the toolbar.
501
:There are all these things
that you may want to support.
502
:And so, this is just starting
some discussion around what
503
:those things should be.
504
:What should we support?
505
:What shouldn't we support?
506
:And we didn't actually get into the
discussion too much in the meeting,
507
:rather just calling out that this
issue existed and that we wanted
508
:everyone to leave their thoughts.
509
:Simeon: Yeah.
510
:Krzysztof, from the Ghostery
team has been championing some...
511
:this WebDriver expansion of capabilities.
512
:He's been working on the
implementation and doing great work.
513
:So, my hat's off to him.
514
:Oliver: Yeah, no, exactly.
515
:Same from me.
516
:I think it's been really nice
because we were starting to look
517
:at working on tests mostly from the
perspective of "how do we build these
518
:cross browser web platform tests?"
519
:Simeon: Yeah.
520
:Oliver: And then he came in looking at
this from the perspective of actually
521
:how do we support testing more from
a developer perspective wanting to
522
:write tests for their own extension.
523
:And it just turns out that we both have
our own reasons for wanting this work.
524
:I mean, I think we both also
appreciate the other reason.
525
:It's not like we have these two completely
separate reasons and we have no interest
526
:in the other reason for doing this work.
527
:But it's just sort of, it's
all aligned where lots of
528
:people are excited about this.
529
:And Krzysztof in particular has been
just going above and beyond with
530
:opening PRs and then working for a
lot of feedback to get those landed.
531
:I know as soon as you write anything
that has sort of specification text,
532
:you get a lot of feedback and so I
really appreciate him working through
533
:all of that and getting to the point
where we actually have something
534
:which has landed now and hopefully
browsers will be implementing soon.
535
:Simeon: That's the old adage: the
easiest way to find the correct
536
:answer is to share the wrong one.
537
:Oliver: Yes
538
:Simeon: and last up, issue 746:
Proposal: Persistent Authentication.
539
:I think this was a late add.
540
:Did anything end up
happening with this issue?
541
:Oliver: I think this was on the agenda
from the start of the meeting, but
542
:unfortunately we didn't get to it.
543
:So we didn't have any discussion.
544
:Simeon: Uh, It wasn't on
the agenda that I prepared.
545
:Oliver: Okay, maybe not then.
546
:Simeon: No, no, no.
547
:I, I, I think it was like it was suggested
in the time shortly before the meeting.
548
:Oliver: Okay, yeah.
549
:Simeon: I think it was from the start
of the meeting to the end on it.
550
:It just...
551
:Oliver: One thing I do really appreciate
is we have been getting a lot better
552
:over time at having more of the
agenda prepared before the meeting.
553
:Simeon: Yeah.
554
:Oliver: So this week actually was a
really nice case where I felt like more
555
:than ever before I was able to take a
look at the issues before the meeting.
556
:I had some conversations on the
Chrome side with various members
557
:of the team to see is there
something we'd be interested in?
558
:Do we have any thoughts that we
should share in the meeting so we
559
:can get some immediate feedback.
560
:And I think that just,
it helps us get a...
561
:It helps us sort of give our support or
any further questions on the issue as soon
562
:as possible, which keeps things moving.
563
:Simeon: Yeah, one of the other things
that we do to try to help organize
564
:and collect this information is...
565
:we create a agenda issue.
566
:In an issue on our GitHub repo with
the "agenda" tag, and there should
567
:only be one of those open at a time.
568
:That will be the next meeting's agenda.
569
:And people can make suggestions
about what they'd like to see added.
570
:I want to get better about, multiple
times over the the lead up to a
571
:meeting, updating the placeholder agenda
with content as people propose it.
572
:As it evolves.
573
:Usually I try to do it at
minimum 12 hours before.
574
:But I, I would like to
extend that further out.
575
:Oliver: But I think even the way it's been
working up to now, I think that works.
576
:It's easy enough to skim through
the comments on the agenda issue and
577
:see what's going to be discussed.
578
:Of course, keeping the summary at the
top open is, or up to date is also
579
:nice, because sometimes there might be
some discussion in the thread, and then
580
:you don't have to read through that
to see what the actual end result is.
581
:But I think it's workable.
582
:We haven't had too much
discussion up to now.
583
:Simeon: Badum
584
:Oliver: ba!
585
:Simeon: That's the audio sting you get
to say we're done with the episode.
586
:So that's it.
587
:It's a pleasure talking with Oliver.
588
:Hopefully gonna do
another one of these soon.
589
:We just had the February 27th meeting
of the Web Extension Community Group, so
590
:there should be another episode coming
out in the not too distant future.
591
:Don't know when.
592
:Turns out audio editing is hard.
593
:We'll figure it out.
594
:The show is online at
backgroundcontext.com.
595
:Thanks for listening and
see you on the internet.
596
:As a kind of final bit
you get me making noises.
597
:
598
:uugggh
599
:hrm
600
:
601
:head_desk.mov
602
:
603
:
604
:
605
:I don't know what that was.
606
:Well, you're listening to it.
607
:So that's the end.
608
:Bye.