►
From YouTube: WebPerfWG call 2021 08 19 - NetInfo reboot proposal
Description
No description was provided for this meeting.
If this is YOUR meeting, an easy way to fix this is to add a description to your video, wherever mtngs.io found it (probably YouTube).
A
The
recording
will
still
okay
go
ahead.
All
right.
Thank
you
very
much
for
the
invite
joaf
and
hello
everybody.
My
name
is
tom
seiner,
I'm
a
developer
relations,
engineer
from
google
and
yeah
today,
I'm
here
to
talk
about
rebooting
the
network
information
api.
A
I
will
share
them
after
the
presentation
and
yeah
with
that,
just
a
little
bit
bit
of
background
on
the
available
data
with
the
current
api.
So
if
you
just
type
navigator.connection
into
the
console,
this
is
what
you
get
so
you
can
see
downlink,
download,
max
effective
type
on
on
change
and
on
type
change,
rtt
round
trip
time,
save
data
and
type
unknown.
So
I
ran
this
from
my
desktop
computer.
A
A
couple
of
things
that
confuse
people,
for
example
I'm
on
a
wi-fi
connection,
but
the
api
says
I'm
on
a
4g
collection,
which
yeah
is
the
effective
type,
but
it's
kind
of
confusing
to
use
this
really
and
yeah.
This
is
one
of
the
things
the
fact
that
there
is
on
mobile
the
type
exposed
as
cellular
or
wi-fi
has
been
identified
as
a
source
that
could
allow
you
to
track
users.
For
example,
if
someone
enters
an
office
building,
they
will
switch
to
wi-fi.
A
If
someone
leaves
the
office
building,
they
will
switch
to
cellular
with
enough
other
additional
data
points.
This
is
a
privacy
issue
and
yeah.
This
is
just
a
little
bit
of
background.
Can
I
use
the
network
information
api?
You
can
see
edge,
chrome,
opera,
android,
browser,
opera,
mobile
chrome
for
android
firefox
for
android
samsung
internet
queue
browser
baidu
kaios,
so
I
looked
at
it
in
a
little
bit
more
detail
on
everything
chromium.
A
We
have
the
sort
of
full
information,
with
the
difference
being,
as
you
saw
before
I
was
here
on.
A
desktop
computer
and
type
was
just
reported
as
unknown.
Of
course,
chrome
knows
that
I'm
on
a
wi-fi
connection,
but
this
is
only
exposed
as
far
as
I
can
tell
on.
Mobile
firefox
has
a
partial
implementation,
so
you
can
see
here.
A
Navigator.Connection
is
defined,
navigator.connection.effectivetype
is
not
defined,
which
means
something
like
a
test
to
see.
If
effective
type
includes
2g
will
fail,
and
this
has
caused
actual
breakage
of
sites,
as
I
said,
I
will
share
the
link,
so
you
can
just
follow
through
there's
a
bad
compact
issue
about
this
yeah,
and
this
is
firefox
with
the
partial
implementation
that's
causing
this
and,
of
course
this
is
not
to
pick
on
firefox,
it's
just
something
that
I
found
that
broke
in
real
life.
A
Nevertheless,
it's
a
very
popular
api-
and
I
was
surprised
by
these
numbers
myself.
If
you
look
at
the
page
loads
in
chrome
status,
you
can
see
that
it's
roughly
on
40
percent
percent
of
all
page
loads.
So
that's
massive.
I
documented
the
data
a
little
and
I
saw
and
it's
used
in
a
lot
of
widgets
that
are
very
popular.
As
you
can
see
here,
there's
facebook's
messenger
chat,
so
a
lot
of
shops
have
messenger
integration.
A
It's
used
by
youtube's
iframe
embed,
which
is
also
obviously
very
popular.
It's
used
by
a
lot
of
performance
plugins,
so
there's
something
called
instant.page,
for
example,
that
sort
of
pre-fetches
pages
and
web
content.
Sorry
web
content-
and
it's
also
obviously
part
of
a
lot
of
web
analytics
tools.
Like
things
that
you
can
buy
sort
of
so
if
you
go
and
find
a
web
analytics
provider,
but
also
big
companies
like
wix,
have
gone
on
the
record
to
say
that
for
their
users
they
just
record
this
data
as
well.
A
So
there's
also
some
company
internal
analytics
going
on
where
big
companies
that
power
a
significant
part
of
the
web
as
wix
does
yeah
use
this
data
as
well.
Some
of
the
problems
with
it
there's
an
overlap
with
some
of
the
use
cases,
but
with
what
is
now
the
save
data
api.
This
essentially
started.
Sorry
not
essentially
initially
started
as
part
of
the
net
info
api.
So
there's,
as
you
can
see
here,
save
data
false.
So
this
is
exposed
here,
there's
also
a
safe
data
header.
A
This
was
removed
from
the
initial
network
api
and
is
now
an
own
api.
Save
data,
as
you
can
see
here,
but
yeah
there's
a
certain
overlap
with
the
use
cases
that
are
defined
by
netinfo
and
better
defined
by
safe
data.
A
It
has
privacy
issues,
so
you
can
see
mozilla
had
the
partial
implementation,
but
left
out
some
of
the
critical
bits
they
considered
so
mozilla
considered
harmful
and
they
say
it's
better-
that
sites
use
methods
that
dynamically
adapt
to
the
available
bandwidth,
that
this
is
more
accurate
and
likely
to
be
applicable
in
the
moment.
A
Webkit
apple
are
a
little
bit
more
frank.
They
say,
as
the
spec
openly
admits,
this
would
be
a
privacy
disaster
because
of
fingerprinting
opportunities.
So
this
being
implementing
this,
there
is
not
an
official
webkit
position
that
you
can
ask
on
the
webkit
desk
mailing
list,
but
this
was
sent
to
the
as
responses
to
the
box.
That
asked
asked
for
the
feature
to
be
implemented,
so
I
found
this
very
interesting
and
yeah.
This
obviously
also
explains
why
they
didn't
want
to
implement
it.
A
Interestingly,
the
tag
had
a
pretty
smooth
and
short
and
sweet
review.
They
just
said
in
terms
of
their
game
design.
This
seems
reasonable.
We
understand
that
there
are
a
number
of
trade-offs
in
this
design
space
and
there
is
some
risk
here.
However,
we
feel
that
publishing
something
in
this
space
is
generally
good
because
it
meets
a
significant
need
in
the
platform,
even
if
it's
not
initially
perfect-
and
this
is
what
I
want
to
highlight
here-
even
if
it's
not
initially
perfect,
this
was
done
in
2016.
A
Now
it's
20
21..
So
I
thought
it's
time
for
a
reboot
and
some
of
you
may
remember
these
good
old
reset
buttons
on
computers,
also
the
turbo
button.
But
this
is
another
story,
so
I
went
and
thought
how
can
I
reboot
this
api?
How
can
I
start
fresh
with
all
these
problems
and
maybe
come
to
a
point
where
we
can
get
cross
vendor
agreement
on
implementing
this
in
different
browsers?
A
A
There
was
an
issue
with
many
one
that
triggered
this,
which
states
it
update
the
repo
on
the
spec
to
show
this
is
no
longer
being
actively
incubated
and
johath
and
noam,
and
I
talked
a
long
time
ago
and
said
yeah.
We
should
do
something,
as
always,
things
didn't
happen,
but
should
have
happened,
but
never
did
so.
This
trigger
issue
was
actually
the
reason
why
I
started
rebooting
and
actually
starting
looking
at
this
again
and
yeah.
This
is
driven
mostly
by
issue
85.
A
Then
an
issue
84
85
says:
should
effective
connection
type,
be
a
fixed
set
of
values
and
issue
84
said:
can
we
just
do
metered?
You
have
commented
in
the
mozilla
position
discussion
saying:
let's
focus
on
those,
and
this
is
what
I
did
so
here's
a
proposal.
You
can
see
the
new
network
information
interface,
it's
very
simple:
it's
essentially
just
the
boolean
metered
and
it's
an
unrestricted,
unrestricted
double
sustained
speed
and
you
can
see
an
event
handler
on
change.
So
that's
it.
A
How
does
this
look
like
in
code?
Let's
look
at
two
examples
here:
downloading
non-essential
content,
so
we
have
a
variable
non-essential
content
loaded
as
false
and
we
have
a
function,
download
non-essential
content
and
if
the
non-essential
content
is
already
loaded,
we
just
return.
Our
job
is
done
here
and
then
we
look
at
if
the
navigator
connection
is
not
metered,
which
means
we
have
the
freedom
to
use.
A
As
much
data
as
we
want,
then
we
just
fetch
whatever
non-essential
content
and
set
our
variable
to
true
and
in
the
beginning,
of
course,
we
need
to
call
this
once
download
non-essential
content
and
we
can
then
listen
for
changes.
A
So
if
the
metered
status
should
change,
which
can
of
course
always
happen,
someone
switches,
networks
or,
I
don't
know-
decides
to
pay
more
money
on
a
hotel
wi-fi
so
that,
instead
of
250
megabytes
that
you
buy
for
100
bucks,
whatever
they
have
one
gigabyte
that
they
purchase
for
200
bucks
whatever.
So
they
could
say:
okay,
I'm
no
longer
on
a
needed
network.
Whatever
I'll
just
do
this,
so
then
the
function
would
be
called
something.
Maybe
a
little
bit
more
challenging
is
limiting
bandwidth
usage.
A
And
for
this
I
looked
at
an
example
from
a
program
called
web
or
program,
a
tool
called
web
torrent
that
allows
you
to
download
completely
legal
movies
and
series
from
the
internet
using
the
bittorrent
protocol,
and
it's
documented
here.
So
I
just
highlighted
here
the
documentation,
so
you
instantiate
a
new
client
by
calling
new
web
torrent
and
you
can
set
the
download
limit
to
initial
sustained
speed
and
bytes,
and
I
say
50
of
it
and
you
can
see
here.
A
I
get
this
initially
from
navigator
connection
sustained
speed
which
is
defined
in
bits.
So
I
divide
by
three
to
get
it
in
bytes,
which
is
what
the
api
here
accepts
and
then
because
my
initial
speed
will
of
course
not
be
the
same
all
the
time.
I
set
up
a
change
listener
and
say
if
the
current
speed
in
bytes
current
sustain
speed
and
by
its
changes.
A
I
just
set
the
new
client
by
calling
the
client
throttle
download
to
the
50
of
the
available
speed
that
I
have
in
theory
so
that
I
can
have
this
running,
but
I
don't
consume
all
my
bandwidth
and
it
dynamically
adopts
based
on
whatever
my
my
network.
Speed
is
so.
This
is
not
a
made
up.
Example.
This
is
actually
something
that
people
use
in
practice.
So
web
tournament
is
a
very
popular
thing
for
watching
completely
legal
content
on
the
internet
that
you
can
on
the
fly.
A
Download
from
ups
client
http
headers,
so
I
defined
client
and
headers
that
accompany
these
new
properties.
So
you
can
see
sec
ch
for
secure
appliance,
immediate
connection
and
sect
ch
sustained
speed.
They
just
simply
reflect
what
the
two
attributes
do:
quick
example:
the
server
announces
that
it
accepts
an
epic
information.
Client
hints,
so
you
can
see
here
the
accept
ch,
header,
sec,
ch,
meter,
connection,
section
sustain
speed,
and
it
also
says
that
it
will
vary
the
response
based
on.
A
If
something
is
a
needed
connection,
because
in
this
main
example
I
will
say,
if
I
call
a
list
of
products,
I
will,
if
the
user
is
on
a
media
connection,
not
return
all
the
whatever
500
products
that
I
have,
but
only
a
sub
selection
that
is
optimized
for
the
lower
connection
speed.
And
then
you
can
see
here.
The
client
responds
and
says
that
it's
on
a
minute
connection,
so
one
it's
a
boolean,
so
it
reports
as
one
meaning.
A
It's
a
minor
connection
and
sexy
age,
sustains
b,
sustained
speed,
essentially
reports
that
it's
a
50,
mbit
connection.
You
don't
know
if
this
connection
is
dsl,
you
don't
know
if
this
is
wi-fi
cellular,
5g
4g,
it
doesn't
matter
because
all
we
want
is
the
absolute
speed
and
the
speed
would
be
divided
in
buckets.
So
you
don't
get
the
exact
exact
speed,
but
you
would
essentially
take
a
sliding
window
where
the
operating
system
has
observed
the
speeds
in
the
last,
whatever
30
seconds,
what
have
you
and
then
it
would
be
put
in
buckets.
A
50
ambit
is
roughly
where
we
are
at
right
now,
so
this
covers
the
entire
world
so
fully
developed
countries
to
in
development
countries
to
countries
that
don't
even
have
internet
all
the
time,
so
50
mbit
seems
like
a
reasonable
thing
to
start
with,
and
then
I
just
say
I
grow
this
exponentially,
so
the
next
would
then
be
100
m
bit.
The
next
lower
bucket
would
be
25
megabits.
A
The
reason
for
this
so
exponentially
growing
is
a
law
that
someone
has
put
up.
That
holds
true.
Just
like
the
law
for
the
cpu
speed
that
each
year
we
will
double
our
connection
speed.
So
this
is
why
these
packets
are
defined
like
that.
A
A
A
Let
me
just
leave
full
screen.
The
current
spec
is
on
my
local
host
yeah,
so
you
can
see
it's
in
a
okay
shape,
and
this
is
my
very
first
spec
that
I
start
from
scratch.
So
there's
probably
things
that
are
wrong.
That
experts
will
figure
out,
for
example.
Initially
I
had
named
my
attribute
is
mean
it
dominic
corrected
me
on
that.
So
now
it's
just
needed.
A
So
there
will
be
some
mistakes
in
this.
You
can
see.
There
is
an
explainer
that
is
a
little
bit
yeah,
more
sorry,
less
formal.
So
you
can
see
here
where
this
data
comes
from
on
windows.
You
can
toggle
this
little
thing
here
and
say
my
connection
is
needed
on
android.
You
can
do
the
same.
You
can
say
where
is
it
here?
I
don't
know
it's
here,
network
usage
treat
as
muted,
so
on
android,
you
can
say
my
connection
is
is
needed.
A
This
is
how
it
looks
like
when
you
look
at
the
task
management
window.
So
you
can
see
here
the
connection
speed.
I
did
a
speed
test
50
units
by
accident,
also
my
actual
dsl
speed
at
home.
So
you
can
see
here.
This
is
what
was
observed.
A
This
is
what
it
looks
like
in
mac.
Os
activity
monitor.
So
it's
a
little
small
somewhere
down
here,
there's
of
course,
linux
tools
that
do
the
same,
so
you
can
run
net
top
and
you
get
information
about
your
network.
So
the
idea
is,
the
network.
Information
is
already
available
on
the
operating
system
level.
The
user
agent
would
then
take
this
information
and
yeah
do
the
bucketing,
something
I
found
would
make.
Maybe
mozilla,
or
maybe
brave
I
don't
know
happy
would
be.
A
If
I
say
sustain
speed,
is
something
that
I
consider
as
a
user
agent,
privacy,
sensitive
or
too
privacy
sensitive.
I
can
just
report
infinity,
which
is
why
my
suspense
speed,
sustained
speed
attribute
here,
is
defined
as
something
that
is
yeah
infinity
can
be
infinity.
So
it's
a
a
double
examples
here
and
yeah.
This
is
the
client
an
example,
and
you
can
see
a
lot
of
discussion
is
still
happening
in
the
motivational
document.
So
you
can
see
this
is
the
net
info
reboot
motivation
document.
A
So
I
would
very
much
welcome
all
of
you
to
look
at
the
repo
look
at
the
spec.
Look
at
my
little
explainer
look
at
this
document
yeah
and
just
ask
your
questions.
A
Make
this
happen,
and
my
plan
for
this
is
bring
everything
in
a
shape
that
is
free
of
errors
that
are
yeah,
mechanical
and
fixable,
and
then
reach
out
to
other
vendors
reach
out
to
the
tag,
get
an
early
stage
review
and
then
hopefully
start
implementing.
If
you
all
think
it's
worth
yeah
the
effort
and
with
that,
thank
you
very
much
for
listening
and
I
guess
we
have
what
is
it
six
minutes
time
for
questions.