►
From YouTube: WG Component Standard Office Hours 20200107
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
All
right
good
morning,
folks
welcome
to
the
tuesday
january
7th
2020
working
with
component
standard
office
hours
happy
new
year,
everyone
you
know
as
usual.
This
is
our
hour
for
folks
to
drop
in
ask
questions,
get
help
with
things
that
they're
working
on
whatever
they
need
so
welcome.
Everyone
happy
new
year.
A
B
All
right
yeah,
so
like
over
christmas
and
stuff,
I
was
going
through
the
cube,
control
manager,
cli
kind
of
like
parsing
stuff,
and
I
took
some
notes
and
just
you
know
maybe
just
want
to
go
through
it
again
with
you
just
like
talk
through
it,
and
just
see
that
I
understood
everything
correctly.
Okay,.
A
You
can
share
your
screen.
Yeah.
B
A
B
B
This
looks
good
now,
all
right
cool
all
right,
so
we
are
in
new
cube
controller
manager,
command
and
first
thing
it
does.
It
creates
an
options
kind
of
struct,
and
I
think
this
is
very
similar
to
what
you
described
in
the
document
as
the
cubelet
flags
struct
right.
This.
A
Might
be
closer
to
like
cube
proxy
cubic
cubit?
Does
it
like,
in
a
way
simpler
way
than
controller
manager,
does
so
be
wary
of
assuming
that
yeah
I
was
like,
I
think
the
options
stuff
holds
like
I
might
be
munging
this
wrong,
but
I
think
it
holds
like
both
the
configuration
and
some
like
runtime
structures.
B
I'm
not
sure
to
be
honest
right.
Let's.
B
I
think
these
are
like
all
the
configuration
things
for
the
controllers
right
and
there's
also
some
like
flag
logic
and
then
basically,
the
returns
like
there's
a
flex
set
for
each
controller.
I
think-
and
I
think
we
have
an
ad
flags
for
each
yeah
and
then
there's
an
apply
too
and
at
the
end,
it's
just
like
one
big
config,
which
gets
populated
from
from
those
options.
I
think
and
also
does
validation.
I
guess.
A
I
see
okay
now,
so
the
options
are
the
command
line
options
coming
in
and
then
the
custom
function
to
apply
that
to
the
configuration,
as
opposed
to
registering
the
flags
directly
on
the
configuration.
B
Yeah
so
we're
like
we're
getting
all
the
like
component
configs
here
right
from
like
the
version
one.
A
B
A
That's
interesting:
what
is
what
is
component
config
in
this?
Is
that
that's
the
config
struct,
that
is
the
conflict
structure.
I
see
what
is
the
new
default
component
config
do.
A
A
Isn't
it
like
this
function
or?
Oh,
that's,
it's
indirect
like
another
place
where
defaulting
functions
get
registered
for
specific
versions
of
types.
Let
me
see
if
I
can
find
that
one
second.
B
A
Maybe
there's
not
maybe
there's
maybe
it's
missing
and
we
need
to.
We
need
to
actually
add
it.
I
don't
know,
let
me
let
me
see
if
I
can
find.
A
A
A
That's
that's
generated
right,
it's
not
generated,
it
is,
and
maybe
the
stub
is
generated
when
you
first
set
it
up,
but
it's
it's
handwritten,
and
this
is
where
all
the
defaults
are
set
for
cuba
configuration.
B
B
Yeah,
it
stands
like
generic
defaults,
like
controller
generic
control
manager
defaults,
but
it
doesn't
say
anything
about
like
the
port
which
is
set
here.
It's
interesting.
A
A
A
This
function
is
intentionally
not
registered
in
the
scheme
as
a
normal
set
default.
Underscore
foo
function
to
allow
consumers
of
this
type
to
set
whatever
defaults
for
their
embedded
configs,
forcing
consumers
to
use
these
defaults
of
your
program
problematic.
It's
defaulting
in
the
scheme
is
done
as
part
of
the
conversion
and
there
would
be
no
easy
way
to
opt
out.
A
C
A
Didn't
want
to
force
that
I
think,
as
we
figure
out
how
to
like
subdivide
the
the
configs
for
all
these
sub
controllers.
A
D
A
B
Yeah,
I
might
have
to
dig
into
this.
Well,
I
wrote
it
down,
so
I
can
chase
it.
Okay.
What
will
we
so
see.
B
Component
config
at
this
point,
this
is
converted
to
the
internal
api
right
and
then
well,
basically
from
that
we're
populating
this
option,
struct
right,
which
yeah.
E
A
B
A
C
A
View
controller
manager
configuration
I
see
so
they're
setting
okay.
So
then
this
is
the
defaulting
logic
that
gets
called
as
part
of
that
conversion
and
they're
using
all
the
recommended
ones,
and
then
they
have
a
couple
things
here:
the
the
client
connection
qps
inverse
they're
overriding
the
recommended
defaults.
B
But
at
which
point
does
this
actually
get
called
this?
This
function.
A
Yes,
so
if
you
look
at
package
controller,
apis
config
view
on
alpha1
register.go,
there's
an
init
in
that
file,
that
registers
add
defaulting
funcs,
it
says
dot,
register,
add
defaulting,
funcs
and
then
defaulting
functions
in
yeah,
and
then
it
calls
basically
this
one
here:
yeah,
which
calls
register
defaults
scheme
and
register
defaults
wherever
that
is
yeah.
A
Okay,
so
that's
generated.
So
if
you,
if
you
name
something
set
defaults,
underscore
foo,
it
goes
into
the
generating
code.
C
A
B
B
And
so
like
at
this
point,
we
will
have
the
you
know
expected
defaults,
which
we,
you
know
defined
from
from
the
external
api
like
in
the
internal
and
then
like
the
whole,
the
whole
flag
thing
happens
right.
We
create
a
flag
set
from
the
cobra
command.
B
A
B
Yeah
so,
and
so
this
this
one
is
empty
and
then
we
create
a
flag
set
for
for
the
controllers.
A
Okay,
so
then
they
call
add
flags,
so
that
returns
a
flag
set
with
all
of
the
flags
registered
on
it
and
they
all
point
into
cube
controller
manager
options.
A
C
A
There's
a
parse
function
on
flagstaff,
so
you
could
see
if
that
is
getting
called.
There
may
also
be
a
way
to
just
run
the
command
that
implicitly
triggers
the
parse.
I
just
I
remember
from
when
I
was
doing
the
cube
flag
stuff.
That
cobra
has
like
a
lot
of
implicit
things
that
will
trigger
a
flag
parse.
A
D
A
B
A
A
A
A
So
if
we
wanted
to
like
load
a
config
from
a
file
and
then
overlay
the
flag
values
on
that
config
to
like
support
the
backwards
compatibility,
you
had
to
parse
the
command
line
twice,
because
you
had
to
parse
it
once
so.
You
could
get
the
path
to
the
config
file
and
then
you
had
to
register
the
flags
on
the
struct
that
was
loaded
from
that
config
file.
And
then
you
had
to
parse
it
again.
D
A
You
didn't
want
to
re-parse
global
flags
that
were
like
outside
of
that
outside
of
the
config,
but
still
had
to
be
on
the
flag
set,
because
that
might
like
mess
up
how
they
were
parsed
originally,
like
some
flags,
are
accumulators
like
so
like
every
time
you
invoke
the
flag,
it
adds
value
to
a
list
of
replacing
the
value,
so
you
didn't
want
to
like
end
up
with
duplicates
by
parsing.
It
twice
like
some
things
might
affect
global
behavior,
like
logging.
That's
already
set
up,
and
you
don't
want
to
screw
with
that.
C
A
Got
these
we
have
these
goofy
workarounds
here
it
looks
like
things
are
a
little
more
isolated
because
flags
are
registered
on
this
options,
struct
and
then
there's
manual,
mapping
and
supply
functions
that
maps
it
on
to
the
config,
so
maybe
easier
for
you
to
keep
things
separate
here
and
like
only
parse,
the
command
line
once
at
start
and
you'll
get
all
the
options
and
then,
if
you
need
to
load
a
config
file
and
overlay
flags
on
it,
you
already
have
that
data
in
options,
and
you
already
have
the
apply
functions
that
you
can
call
to
do
the
overlay.
B
No
and
the
idea
is
like
the
idea
is
we
we
basically
load
the
config
file
and
then
we
apply
the
flags
to
to
that
config
file.
Basically,
so
the
flags
take
precedence
anyway,.
A
Yeah
and
the
reason
the
reason
to
do
that
is
so
like
across
an
upgrade.
If
somebody
had,
you
know
previously
set
a
flag
on
command
line.
It
continues
to
like
apply
to
the
new
location.
E
A
So
we
need
to
make
sure
that
that
value
from
the
flag
like
is
plumbed
to
wherever
that
config
file
is
plumbed.
So
anything
trying
to
use
that
value
in
that
location
gets
the
correct
value,
which
is
the
one
that
was
being
set
by
the
flag,
not
like
the
default
one
that
would
come
in
from
the
config
file
being
loaded
without
the
thing
being
set
in
it.
A
B
A
Before
we
enter
run
yeah
if
executes
parsing
them,
yes,
okay,
and
if
you
can
so
so,
here's
the
the
nice
thing,
if
you
can,
if,
if
this
architecture
like
basically
has
a
clean
enough
separation
that
we
never
have
to
re-parse
the
command
line
already,
then
you
also
don't
have
to
do
all
the
goofy
stuff
to
work
around
cobra
that
we
had
to
do
in
cubelet.
A
B
There
are
like
three
functions
here,
I
think,
which
do
like
global
things.
A
A
A
A
A
A
I
think
the
reason
it
does
that
is
because,
like
you
know,
if
you're,
maybe
you
expect
to
be
parsing
all
the
command
line.
Flags,
including
the
globals,
and
this
command
only
has
command.flags
on
it.
So
cobra
is
trying
to
like
help
you,
but
in
our
case
it
adds
implicit
behavior
that
doesn't
help
us
so
that
that
was
something
we
did
have
to
work
around.
I
think
that's
like
a
sort
of
a
separate
problem
from
getting
to
component
config.
A
But
it
is
a,
it
is
another
problem
that
is
important
to
control,
because
vendoring
new
code
can
change
our
command
line
api
and
we
should.
We
should
maintain
control
of
that
it
shouldn't
be
just
down
there
like
a
random
dependency.
Getting
vendored
in
most
people
won't
see
that
when
it
gets
vendored
in
because
they're
not
running
like
the
help
and
diffing
it
against
the
old
help
in
every
pr.
Maybe
we
should
have
a
test
for
that.
B
All
right
and
then
run
we're
basically
creating
the
cubecontroller
config
from
that
option.
Struct
right
at
the
end,
I
think
we're
calling
apply
to
so
it
applies
all
the
options
here
from
destruct
to
the
you
know:
conflict
struct
here
what.
A
Does
this
word,
this
is
in
config
returns
a
controller
manager,
config
objective.
B
This
is
run
so
we're
like
printing
flags
and
we
create
a
config
which
is
then
basically
executed
this
completed
config.
I
don't
understand,
like
the
step
of
of
this
one
here
like
why
completing
the
conflict
like
we're
doing
the
better
token
thing
here,
but
I
guess
it
kind
of
like
checks
it
or
something
and.
A
A
B
A
A
Oh,
like
say,
you
read
in
some
config
for
a
controller
and
there's
also
like
an
object.
That
is
the
controller
itself
right.
Okay,
like
that,
would
be
the
runtime
struct.
So
like
the
thing
with
like
the
run
method
hanging
off
of
it.
E
A
Of
stuff,
sometimes
there's
there's,
like
you,
know,
less
complicated
things
like.
Maybe
you
just
have
some
data
structure
that
is
like
a
special
has
special
methods
on
it.
A
E
A
Think
some
of
these,
some
of
these
configs
in
here
have
runtime
structs
hanging
off
of
them
like
the
completed
config,
or
maybe
this
config
like
there's
an
event
recorder
on
here.
That's
a
runtime,
struct
yeah,
there's
rest
clients
on
there.
A
So,
like
anything,
that's
like
an
interface
isn't
serializable.
Okay,
so
they
have
the
component
config
in
this
config
and
then
they
have
all
this
other
stuff
that
is
runtime,
so
maybe
complete
has
something
to
do
with
that.
But
I'm
not
100
certain.
B
A
B
B
B
A
That
was
that
in
the
sort
of
component
config
substructures
for
all
the
sub
controllers,.
A
B
This
one
here:
what
file
is
that
same
apis,
config
types.
A
And
that's
because
this
is
like
the
top
level
thing
and
writing
it's
all
embedded
in
here
yeah.
I
think
the
major
question
we
gotta
answer
is:
do
we
just
keep
it
that
way
or
do
we
split
it
out
into
multiple,
like
sub
objects,.
A
A
So
we
need
some
some
object
outside
this
set
of
sub
controllers.
That
serialize
that
contains
that
configuration,
and
I
think
that's
that's
kind
of
where
all
the
arguments
stopped
was
was
early
last
year.
We
kind
of
talked
about
this,
and
then
there
wasn't
a
decision
and
people
moved
on
to
other
things.
B
C
B
Another
thing
you
said
was,
I
kind
of
like
want
to
look
at
migrating
it
to.
We
want
better
one
right
and
find
the
issues
which
kind
of
block
it
or
like
like
prevent
it
to
be
serializable.
Given
this
options
struct,
we
have.
A
B
B
A
We
don't
need
to
serialize,
we
shouldn't
need
to
serialize
the
options
structs,
because
those
just
hold
the
flag
values
that
get
right
in
right.
We
should
just
need
to
be
able
to
parse
a
cube
control
at
minimal.
If
we
don't
even
split
anything
up,
we
should
have
just
have
to
parse
this
q
controller
manager,
configuration
component
config
file.
A
A
And
I
don't
people
had
said
that
they
were
not
like.
You
saw
the
issue,
they
said
they
weren't
serializable.
I
want
to
know
why
yeah,
because
this
looks
pretty
serializable
on
the
face
of
it,
and
maybe
maybe
it's
because
the
defaulting
logic
is
no
because
we
saw
this
at
defaults,
that's
there.
So
I
don't.
I
don't
know.
I
don't
know
why.
Maybe
they
just
meant
that
the
the
individual
sub
controllers
configurations
were
not
serializable,
maybe.
A
So
maybe
that's
all
it
applies
to
and
if
we
were
gonna
use,
the
big
fat
object.
It
wouldn't
be
a
problem,
but
I
I
just
I
people
were
worried
about
that.
So
I
wanna
know
why.
B
B
A
B
Okay,
well,
I
guess
what
I
want
to
do
is
look
at
this
whole
like
is
it
serializable
right
like
see
it?
Can
we
like
serialize
it
as
a
big
massive
config
like
as
one
file
start
there
yeah.
A
B
And
see
if
that's
possible
and
if
not,
you
know
we'll
we'll
just
go
from
there,
I
guess
and
if
it
if
it's
possible,
then
just
maybe
we
can
look
at
the
prone
cons
and
see
what
would
be
necessary
to
split
it
up.
And
then
you
know
start
our
discussion
around
that
yep.
That
sounds
good.
A
All
right
cool
tossing
if
you
had
any
questions,
I
want
to
give
you
a
chance
since
alex-
and
I
have
been
talking
about
the
meeting.
D
Happy
new
year
yeah,
so
I
I
wanted
to
ask
this
question
about.
You
know
my
pr
about
removing
seri
serialization
of
internal
types
in
tests,
okay,
so
at
first
what
they
did
was
directly
decoding
into
one
external
tip
to
another
external
type,
but
you
said
to
first
convert
to
internal
type
and
then
again
to
external
type.
D
So
so,
yes,
I
I
have
updated
the
pr
and
did
this
so
first
I
have
the
yml.
This
is
the
external
type
and
I
decoded
it.
Then
it
became
the
internal
internal
object
right,
yes
and
then
so,
and
the
scheme
has
a
convert
method
and
I
used
it
to
convert
the
internal
object
to
the
other
external
object.
So
is
this:
is
this
corrector.
A
A
A
D
D
A
A
Cool
savito:
do
you
have
any
questions
you
got
about
five,
I'm.
E
A
All
right
folks
does
anyone
have
anything
else.
A
Week,
oh
one
more
thing
alex,
I
out,
I
remember
nancy
said
she
was
gonna.
Send
like
a
maintainer
track
talk
cfp
for
kceu.
So
if
we
want
to
do
a
talk
eu,
let's
keep
an
eye
out
for
that.
B
Okay,
cool:
what's
up
mine,
where's,
that
being
broadcast
that
I
said
on
like.