►
From YouTube: Implementation Sync: 2021-06-17
Description
Meeting notes: https://bit.ly/38pal2Z
A
Oh
jesse
is
also
he's
having
he's
he's
busy,
so
he
may
also
join,
but
anyway
I
can
give
a
a
quick
update.
We
are
kind
of
closing
in
on
the
issues
that
are
open
for
life
cycle.
Oh
12-0,
there's
one
sort
of
big
question
that
we
need
to
answer
about:
how
we're
going
to
architect
some
code
to
solve
a
tiny
problem
that
it
should
be
tiny,
but
it's
it's
challenging
to
solve.
A
So
once
we
figure
that
out,
I
put
that
on
the
agenda,
but
we
should
be
able
to
proceed
with
shipping
our
release
candidate,
and
I
have
some
more
thoughts
about
how
that
might
go
that
I
put
on
the
agenda.
B
B
Does
that
mean
that
no
one
will
be
able
to
use
the
new
api
without
you
know,
pack
changing
the
builder
logic
to
create
this
file,
and
if
pac
does
change
that
logic,
does
that
mean
you'll
be
able
to
use
new
builders
for
the
older
apis?
I
think
this
is
getting
into
one
of
our
problems
of
api
overlap
that
I
hadn't
really
thought
about
until
this
moment
that
the
stack
tamil
schema
changed
sort
of
changes
like
right
now
you
can
use
any
builder
with
any
platform
api,
and
that
might
not
be
true.
Now.
B
A
I
thought
we
could
we
could
move
on
to
release
planning
which
we
kind
of
talked
about.
I
could
share
my
screen
if
we
want
to
just
take
a
quick
look
at
the
milestone.
I
don't
think
much
has
changed
since
last
week,
but
just
go.
A
A
A
This
is,
this
is
just
a.
We
need
to
open
a
question
actually
jason.
Maybe
we
can
ask
you.
We
were
gonna,
ask
a
question
and
ggcr
I'll
I'll,
throw
it
on
the
agenda
so
that
we
can
circle
back
to
it,
but
I
think,
for
the
purposes
of
release,
planning
doesn't
hopefully
doesn't
cause
us
additional
work
and
I'm
I'm
working
on
this
chore
as
we
speak.
So
it's
all
in
motion.
I
think
the
big
one
that
requires
work
is
this
well,
which
we
touched
on.
A
A
Okay,
all
right,
so
I
guess
let's
dive
into
these
discussion,
I
think
that
might
be
circling
back
to
we're.
Gonna
ignore
the
stackpack
ones
for
now
so
so
convenient
that
you're.
Here
I
had
an
action
item
from
the
last
of
these
meetings
to
kind
of
reach
out,
because
we
have
some
folks
who
are
trying
to
use
build
packs
and
if
they
do
not
provide
a
trailing
slash
when
they
configure
their
secret,
it
all
like
just
blows
up
because
of
the
way
we're
doing
the
matching
and
I
kind
of
dug
into
the
code.
A
If
I
follow
the
trail
right,
I
think
you
know
this
trailing.
Slash
is
sort
of
a
hard
requirement
and
I
believe,
there's
code
in
docker
as
well.
So
we
were
wondering
if
there's
anything
that
could
be
done
to
make
this
a
friendlier
experience
for
users,
because
they
they
get
very
confused
as
to
why
they're
not
able
to
connect
to
their
registry
with
a
secret
that
looks
correct.
C
Right
without
completely
knowing
the
full
history
of
this,
I'm
sure
that
we
could
do
a
better
thing
in
ggcr
about
this,
and
even
something
as
simple
as
like.
If
there
is
no
treading
slash,
add
a
trailing
slash
and
keep
going.
I
will
talk
to
john
who
I
think
knows
more
about
the
the
spec
requirements,
or
at
least
behavioral.
You
know
de
facto
spec
requirements,
but
this
off
the
top
of
my
head,
it
seems
like
this
should
be
easy
to
fix
in
ggcr
and
pick
up
so
yeah.
C
Thank
you
thank
you
for
bringing
it
to
our
attention
and
for
not
doing
what
I
think
a
lot
of
people
would
do,
which
is
to
paper
over
it
before
contributing
it
upstream.
So
definitely
thank
you
for
letting
us
know,
and
we
will
take
a
look
and
let
you
know
actually
I'm
going
to
go.
I'm
going
to
file
an
issue
on
ggcr
now
to
talk
about
this
lcc
you
natalie
or
anyone
else
who
wants
and
and
reference
this
issue.
A
I
guess
with
that
that
companion
concludes
the
ones
that
we
had
for
needs
discussion,
although
I
think
there's
quite
a
few
discussion
items
which
maybe
we
could
jump
to,
we
usually
leave
some
time
to
kind
of
just
say
what
are
the
open
rfcs
that
relate
to
implementation.
I
think
all
of
these
are
actively
being
talked
about.
We
just
had
they
were
all
mentioned
in
some
form,
so
I
guess
just
encourage
everyone
to
keep
an
eye
on
the
discussion.
That's
happening,
yeah.
D
E
E
D
Folks,
here
it's
like
mostly
life
cycle
work.
If
we
do
that,
so
just
there's
no
point.
I
have
no
idea
what.
B
A
As
you
mentioned,
quite
a
sweeping
change,
so
yes,
we
should
all
weigh
in
on
that
on
this
one.
A
I
guess
with
that
I
think
we
can
move
on
to
our
agenda.
I
know
micah
added
this
here,
but
jason.
I
believe
you
opened
this
issue.
Do
you
want
to
speak
to
it.
C
Yeah,
so
I
don't
exactly
remember
how
I
started
looking
into
all
of
this,
but
I
noticed
there
was
a
there's,
a
long-standing
life
cycle
issue
for
supporting
arm,
and
I
just
sort
of
got
curious
about
it
and
I
think
it's,
I
think,
it's
dangerously
close
to
being
possible
to
support
arm
and
life
cycle.
C
C
A
lot
of
the
logic
is
in
the
make
file.
The
makefile
builds
one
linux,
amd64
binary,
and
then
one
windows,
binary
windows,
amd64
and
then
does
sort
of
parallel
logic
to
assemble
those
into
to
images
and
then
to
stitch
them
together
in
the
release
github
action
into
a
manifest
list.
I
have
quite
a
lot
of
experience.
Doing
that
sort
of
thing,
that's
exactly
what
code
does?
Oh
basically
is,
is
sort
of
like
build
packs
except
hyper
focused
on
go
only,
and
then
it
also
has
this
arm
where
it
does.
C
Some
animal
stuff-
I
don't
really
like
that
part,
but
the
idea
for
co
is
that
if
you
have
a
go,
binary
or
you
know,
go
source
and
want
to
build
it
into
an
image
and
you
don't
depend
on
sego,
we
can
do
that
for
you
very
efficiently
and
we
can
do
that
with
multi-arch
images,
multi-platform
images
very
easily
because
it
goes
cross
compile
support.
So
the
idea
is
that
either
buildtext
could
build.
C
Next
lifecycle
could
use
code
literally
use
code
to
build
the
images
or
just
standardize
on
something
like
what
code
does
and
do
cross
compilation.
I
think
the
image
is
actually
only
built
on
a
windows
machine
right
now.
C
Which
might
complicate
your
release
process,
it
should
be
in
theory.
It
should
be
possible
to
build
a
multi-arch
image
from
whatever
platform,
because
it's
just
a
go
binary
asterisk.
You
currently
use
sigo,
and
I
don't
think
you
have
to
I
forget
which
issue
that
is,
that
is
to
use
6
30
life
cycle,
6
30..
If
you
do
that,
then
you,
then
you
can
much
more
easily
take
advantage
of
those
cross-compilation
support
and,
I
think,
really
at
least
straight
streaming
streamline
slimmed
down.
I
tried
to
say
both
of
those
words.
C
At
the
same
time,
you
release
process
into
sort
of
a
an
easily
reproducible
stamp
outable
process
across
all
architectures
and
os's.
C
That
would
make
arm
support
easier,
but
that
would
also
like,
incidentally,
make
you
know:
s390x
support
easier
and
power
pc
easier.
I
don't
know
if
that's
all
interesting
to
you
but
yeah,
so
I
I
think
micah
mentioned
that.
The
whole
reason
I'm
here
is
that
mike
mentioned
this
meeting
was
happening,
and
this
would
be
a
good
sort
of
set
of
people
to
talk
to
about
this.
I
don't
know.
Does
anyone
have
any
thoughts?
Does
anyone
think
this
is
a
good
idea,
a
bad
idea?
D
B
There's
a
reason
we
did
this,
you
see
go
instead
of
just
using
this
is
called
library.
I
don't
100,
remember
what
the
reason
was,
but
I
think
I
can
filter
through
the
history
and
find
it
out,
but
we
definitely
didn't
want
to
use
ceco.
You
know
it
would
be
fun
to
not
use
seagull,
but
I
think
there
was
a
a
hard
blocker
on
just
using
the
go
standard
live
what
we
were
trying
to
do.
C
Interesting,
okay,
that
is
that's
good
to
know.
I
I
suspected
that
was
the
case,
because
what
kind
of
monster
would
you
see
go
when
they
did.
C
But
I
thought
just
in
case
I
mean
if
it's
if
we
can
root
cause
that
to
some
issue
in
like
this
is
called
packaging
go
111
that
is
now
fixed
in
116.
That
would
be.
That
would
be
ideal
all
right.
Maybe
we
didn't,
we
don't
need
to
use
it
anymore,
but,
oh,
maybe
that
was
that
it
this
this
set
uid
multi-threading
issue,
I'm
not
sure.
Certainly
I
think
we
all
agree.
It
would
be.
C
It
would
be
super
nice
not
to
use
sego
and
then,
if
we
do,
I
would
like
to
propose
that
we
we
streamline
the
release
process
so
that
it
can
just
be
like
four
arch
in
these
arches
for
os
in
linux
windows.
C
You
know
build
and
stitch
together
an
image.
I
think
that
would
be
awesome,
but
obviously
you
all
know
way
more
about
this
than
I
do
so
I
I'm
at
your
mercy.
B
C
Yeah
I
saw
I
saw
that
in
the
release
process
and
I
was
like
oh
no.
What
what?
Why
is
this?
No,
but
I
assume
there
was
a
reason
if
this
is
the
reason
that's
great,
because
that
means
we
can
not
have
it
anymore.
If
there
is
any
sort
of
like
test
case
that
I
can
run
to
to
prove
that
building
with
with
says
paul
instead
of
sigo
works,
that
would
be
ideal.
B
Yeah,
I'm
like
it's
slowly
coming
back
to
me,
I
think
when
we
use
the
go
implementation,
the
dropping
privileges
only
worked
for
a
single
thread.
So
if
you
ran
one
of
these
bills
that
has
to
like
start
as
root
and
then
drop
privileges,
some
threads
would
end
up
with
the
wrong
privileges.
B
C
Yeah
yeah
yeah,
my
favorite
kind
of
bug-
one
you
can
never
completely
prove,
is
next
great.
So
so
I
will
attempt
to
not
reproduce
this
bug
with
the
syscall
change
and
then,
if
I
think
that
change
is
sort
of
nice,
whether
or
not
we
end
up
re
rebuilding
the
release
process,
but
this
being
out
of
the
way,
would
make
it
possible
for
the
release
process
to
be
a
lot
more
sort
of
standard
across
os's
and
platforms.
C
I
I
had
originally
proposed
this
or
phrased
this
proposal
in
terms
of
literally
adopt
the
tool
co
and
I
think,
as
I've
thought
about
it
over
the
last
week.
I
think
it's
probably
not
a
good
fit
exactly
because
you
also
do
like
simulink
stuff
to
make
the
life
cycle
binary
available
as
detector
and
analyzer
or
whatever.
I
don't.
I
don't
feel
strongly
that
you
need
to
literally
exactly
use
code,
but
I
think.
B
The
reason
we
can't
use
code
literally
is
the
same
reason
that
we
really
can't
use
build
packs
literally
to
build
this,
which
is
there's
this
elaborate
file
system
based
api
that
needs
to
happen
in
inside
this
image,
so
you
like
really
have
to
lay
things
out.
Very
specifically,
it's
not
you
know
it's
not
just
a
go
up.
That
runs
it's
right,
yeah.
C
I
am
here
I
mean
this
is
purely
curiosity
and
and
not
it
doesn't
need
even
to
be
answered.
I'm
curious
why
it
seemed
like
you
have
this:
this
life
cycle
single
life
cycle
entry,
point
binary
that
you
sim
link
to
many
locations
and
then,
when
it
runs
it
says,
am
I
being
run
as
reflector,
and
you
know
analyzer
or
detector
or
whatever?
Is
there
a
reason
you
chose
to
do
that,
instead
of
to
just
literally
build
eight,
whatever
binaries,
that.
D
E
C
Yeah,
no
there's
no
there's
no
judgment
there.
I
just
thought
it
was
a
interesting
and
I'm
sure,
motivated
by
something
image,
size
definitely
makes
sense.
Aesthetic
streamlining
also
makes
sense.
Okay,
so
so
I
will
try
to
see
if
the
syscall
change
is
good
and
if
it
is,
we
can
get
it
in
and
then,
if
that
goes
in,
we
can
see
about
trying
to
streamline
the
release
process.
At
least
streamlining
it,
for
the
two
you
have
today
would
be
great.
C
If
streamlining
it
makes
it
much
more
easy
to
add
two
or
three
or
four
other
options
that
would
that
would
be
even
better
full
disclosure.
I
intend
to
use
this
in
tecton.
We
also
use.
We
have
a
lot
of
users
who
want
multi-arch
support
and
increasingly
annoyingly
windows
support
in
tecton,
and
so
the
more
buildback
supports
this.
The
better
tech
time
will
be
and
the
better
build
packs
in
these.
So
that's
that's
one
thing.
C
So
thanks,
I
don't
really
have
anything
else,
but
I
will
happily
seed
to
the
next
discussion
topic.
If
there
is
one.
A
This
would
be
cool,
so
we
have
two.
We
have
three
more
topics.
I
think
we
should
maybe
just
like
this
is
this.
This
one
is
like.
I
want
to
look
at
some
code.
I
want
people
to
tell
me
what
to
do
with
this
problem.
It's
probably
a
longer
discussion,
so
maybe
we
could
get
the
first
two,
the
last
two
out
of
the
way
I
I
added
them
all
so
the
into
the
next
life
cycle
we're
planning
to
ship
a
release
candidate.
A
We
want
to
hopefully
avoid
some
of
the
the
the
the
mistakes
of
the
past
and
have
like
some
sanity
checks
on
our
stuff
in
in
a
variety
of
environments.
That's
that's
the
dream
right
before
we
ship
the
final
one.
When
I
floated
this
with
the
picano
team,
they
said
we'll
happily
consume
a
release
candidate,
but
please
don't
tag
it
with
a
senver
tag,
at
least
sorry.
A
The
life
cycle
image
that
we
publish,
please
don't
tag
that
one
with
a
semford
tag,
because
we'll
mistake
it
for
a
real
one
and
pull
it
into
our
our
production
pipeline.
They
they've
since
fixed
that
issue
right.
So
they
can
now
properly
tell
if
it's
you
know,
there's
like
a
dash
rc
or
whatever
that
they
won't
treat
it
as
a
fully
released
one,
but
it
kind
of
got
me
thinking
like
who
else
right?
A
Who
else
out
there
is,
you
know,
has
automated
pipelines
that
might
trigger
on
a
new
life
cycle
image,
and
you
know.
A
A
I
don't
know
how
valid
is
that
concern,
but
when
I
created
the
github
action
to
actually
create
the
release
candidate,
it
will
create
a
release
candidate
on
github
right,
so
you'll
get
a.
You
know
that
github
release
page
with
the
tar
balls
are
all
you
know,
versioned
with
an
rc,
but
it
won't
actually
retag
the
lifecycle
image.
So
it
you
know,
you'd
have
to
know
the
commit
shot
and
go
pull
it.
A
You
know
deliberately,
which
you
know
I
don't
I
I
don't
know
how
that
workflow
is,
and
I
was
also
thinking
that
you
know
even
a
release
candidate
on
github
could
confuse
some
people
right.
You
never
know
what
logic
people
have
to
pull
in
these
artifacts,
so
just
wanted
to
get
everyone's
thoughts.
B
There's
a
part
of
me
that
says
we
shouldn't
worry
about
it
too
much
like.
I
think.
The
thing
that
we
shouldn't
do
is,
I
know
like
right
now,
when
we
publish
semver
life
cycle
images,
when
we
publish
a
new
one,
we
also
move
the
latest
tag.
I
definitely
don't
want
to
move
the
latest
tag
to
point
at
the
rc
other
than
that
I
feel
like
people
can
deal
with
it
like.
B
I
know,
we've
had
situations
where
we're
consuming
automated
dependencies
and
you
know
other
types
of
automated
dependencies
in
a
bunch
of
situations,
and
maybe
someone
doesn't
get
the
logic
correctly
right
for
how
someone
starts
publishing
an
rc.
But
hopefully
you
know
a
pair
of
someone
is
looking
at
things
before
things
get
shipped
out
to
users,
and
I
don't.
A
Yeah,
so
actually
emily
your
comment,
it
got
me
thinking,
I
don't
know
if
we
currently
move
the
latest
tag
every
time
we
because
we
publish
a
new
image
for
every
new,
commit
to
maine
and
the
release
branches,
and
so
we
might
actually
be
updating
the
latest
tag
already.
Let
me
just
see
where
do
I
get
latest.
A
D
B
Not
so
you
know,
I
worked
on
the
java
stuff
and
it
sort
of
has
its
own
automation,
it's
different
from
the
other
buildbacks,
but
I
don't
want
how
a
lot
of
the
image
automation
works
on
the
java
side
is.
Basically,
you
know
using
crane
ls
to
get
a
bunch
of
tags
and
then
sorting
them
and
then
picking
the
latest
one.
So
it's
not
just
using
latest
all
the
time.
A
A
Okay,
having
a
tagged
with
the
version
of
the
livestream
that'll,
make
other
things
simpler
and
I'll
probably
make
it
easier
to
actually
use
that
rc
image.
So
right
now
I
was
putting
a
little
note
in
the
release.
Notes
like
go
go
here
to
find
the
image
associated
with
this
binary.
But
that's
that's
not
a
good
experience.
A
Okay,
I'm
glad
we
have
direction
on
that
and
then
the
other
thing
that
I
wanted
to
discuss.
This
is
just
kind
of
like
conversation.
That's
been
happening
among
various
people,
but
do
we
need
to
have
this
meeting
every
week.
D
On
the
cadence,
I'm
trying
to
drop
my
platform
maintainership,
because
I
don't
do
very
much
on
that
side,
but
I
still
open
rfcs
and
kind
of
occasionally
do
things
around
the
lifecycle.
So
I'm
trying
to
show
up
to
more
of
these
or,
like
wanna,
pick
the
sub
team
and
show
up
to
it.
If
that
makes
sense,
so
bi-weekly
cadence
would
definitely
be
better
for
me,
because
my
calendar
is
terrible
if
you're
looking
for
votes,
but
I
think
emily's
feedback
would
probably
be
more
important.
A
Well,
we'll
we'll
leave
this
open,
I
would
can
bring
it
up
again
next
time.
I
I.
I
also
think
that
it's
good
that
we
touch
base.
You
know
in
person
every
so
often
like,
don't
want
to
lose
that,
but
I'm
not
sure
that
a
weekly
cadence
is
really
necessary
and
you
know
we
spend
a
lot
of
time
on
the
updates
and
it's
like
you
know
it
doesn't
change
a
lot
week
to
week
so
anyway,
we'll
bring
it
up
again
in
the
time
that
we
have
left.
I
would
love
to.
A
I
know:
anthony's
had
a
chance
to
look
at
this
code,
but
I'd
love
to
kind
of
just
talk
about
this
problem
that
we're
facing,
which
is
you
know
right
now,
when
you
think
about
the
tomal
files
that
we're
using,
for
you
know,
platform
communication.
A
lot
of
those
are
just
represented,
I
mean
all
of
them.
Right
now
are
just
like
bare
struts
that
we
marshal
into
and
out
of,
or
you
know
we
might
construct
on
the
fly
and
we're
currently
making
the
first
non-additive
change.
A
You
know
in
a
while
for
the
sector
in
between,
so
if
I
pull
it
up,
no
packs
back
and
I'll
just
look
at
the
platform
side,
here's
stack
tomml.
A
A
Oh,
oh
then,
emily's
builder
concern
goes
away
too
right.
I
I
was
wrong,
but
actually,
I
think,
that's
still
a
concern.
But
let's
talk
about
the
let's
talk
about
this
next
analyze:
okay,
yeah!
So
here's
how
here's,
how
it
was,
and
here
how
is
how
it's
going
to
be
in
the
future-
and
so
you
know
having
a
bear
struck
is
like
it's
no
longer.
A
You
know
simple
in
the
code
and
and
we've
talked
about
various
ways
forward
in
the
past,
we've
said
you
know
what,
if
we
had
one
struct
that
held
all
the
different
ways
that
you
could
represent
the
data
and
then
you
just
have
some
sort
of
like
validator
per
api,
that
you
know
checks
that
the
data
came
in
in
the
format
that
you're
expecting
it.
That's
how
we
went
in
a
previous
pr.
We
had
like
an
encoder
decoder,
which
I
think
it
actually
worked
out
pretty.
A
Well,
so
maybe
that's
one
way,
but
then,
when
you
need
to
get
the
data
out
right
when
I
need
to
ask
okay,
you
know
give
me
give
me
the
image
that
was
analyzed.
You
have
to
know
how
to
refer
to
it.
Right
you're
going
to
either
do
dot
image
for
the
old
api,
or
you
do
previous
image
for
the
new
apis.
It's
like
kind
of
still
messy
and
so
the
I
I
I
spent
some
time.
A
I
was
like
all
right
how
how
how
do
I
want
to
solve
this,
and
I
made
a
pr
which
has
many
many
changed
files,
because
I
also
had
to
move
some
stuff
around,
and
so
I
just
want
to
go
back
and
get
the
interesting
ones.
A
I
put
it
in
this
common
place
in
the
platform
package,
and
I
made
this.
We
can
ignore
this
for
now
some
complicated
interface
to
allow
you
to
build
up
the
struct
while
keeping
it
platform
agnostic,
and
then
I
moved
all
of
the
bear
strucks
right
because
I
didn't
want
to
have
to
like
I
mean
this,
you
could
like
make
infinite
interfaces
right.
I
wanted
to
be
able
to
return
a
pointer
to
a
concrete
thing
without
having
to
have
that
also
be
an
interface.
A
So
I
just
moved
all
of
the
bearish
trucks
into
this
common
place
as
well,
and
then
what
I
did
is
for
the
individual
platforms.
A
A
Here's
the
here's,
this
the
bears,
whatever
here's
the
struck,
that
holds
the
data,
and
then
I
have
this
like
you
know
it
implements
the
interface
and
you
know
for
the
fields
that
it
doesn't
care
about.
It
just
returns
empty
stuff,
right,
previous
image
and
previous
metadata
being
the
stuff
that
the
earlier
platform
apis
care
about
right
and
then
it's
similarly
for
the
oh
gosh,
the
newer
platform.
A
Right
is
going
to
have
you
know
it's
going
to
implement
the
interface
and
it's
going
to
return
more
stuff
because
it
holds
more
stuff
and
that's
that's
the
essence
of
the
change.
You
know,
however,
it's
like
if
you
ignore,
I
mean
if
you
ignore
the
54
change
files,
which
was
like
me
moving
stuff
around.
It's
a
it's
just
a
lot
of
like
boiler
boilerplate.
I
know
anthony
had
some
thoughts
about
this
builder
pattern.
A
I
I
just
didn't
know
because
you
have
a
couple
places
where
the
analyzer
like
it
needs
to
build
up
the
struct,
and
then
it
calls
right
tamil
on
that
struct
and
it's
like.
A
It
you
don't
know
it's
gotta
work
for
all
the
platforms,
so
I
needed
some
some
mechanism
to
like
keep
that
struck
private,
but
also
so
it's
just
like
there's
a
lot
of
code.
I
didn't
enjoy
having
to
write
all
this
code.
I
don't
want
to
have
to
write
all
this
code
for
every
single
file.
You
know
if
we
end
up
changing
like
I
don't
know,
group
tommle
or
something
in
the
future
like
this
is
just
a
lot
of
like
boilerplate.
It
feels
like
at
the
same
time
it
works
and
it
makes
sense.
A
You
know
I'm
like
I
I
you
know
when
you
read
the
code.
It's
like.
Oh,
is
this
it's
very
clear
to
me:
if
I'm
not
in
the
platform
package,
it's
like
very
clear
what's
happening,
so
this
is
by
my
ask
for
just
like
please
give
feedback
because
in
some
sense
we're
setting
a
pattern
for
what
we
want
to
do
going
forward,
and
you
know
I
I
want
to
get
it
right
because
it's
just
been
pain
been
a
pain
for
a
while.
A
A
I
didn't
want
to
like
when
the
analyzer
is
building
up
the
struct,
so
that
it
can
write
it
into
a
tamil
file
later
I
didn't
want
to
have
to
have
like,
if
platform
api
less
than
blah.
You
know,
write
this
struct
and
then
write
this
tomale
right
like
it.
A
D
The
like
a
key
thing
about
that.
The
builder
pattern
where
I've
seen
it
used
before
is
the
kind
of
lazy
evaluation
of
everything
so
like.
If
you
look
at
like
ggcr,
is
one
of
my
great
examples
of
a
large
large
go
library,
it's
kind
of
close
in
the
space
that
you
know
does
some
similar
things
to
what
we
do.
D
I
think
it
uses
builder
pattern
a
lot
for
like
you're,
going
to
write
a
remote
image,
or
you
know,
like
kinds
of
actions,
look
really
different
depending
on
the
type
of
image,
but
they
all
fit
the
v1
image
interface
right,
which
is
kind
of
similar
to
what
you're
doing
with
the
like.
You
want
to
create
an
abstraction
across
different
versions
of
the
api,
that's
similar,
but
I
think
they
use
the
builder
pattern
more.
D
You
know,
because
those
actions,
you
know,
don't
really
make
sense
to
occur
individually.
It's
better.
If
you
configure
your
object,
you
know
using
that
pattern
and
then
apply
all
the
operations
at
once.
You
know
with
custom
logic
that
pertains
to
the
you
know
if
it's
remote
versus,
if
it's
local
versus,
if
it's
like
you
know
in
memory
or
something
like
that,
if
you're
just
setting
struct
fields
it
you
know
and
builders,
the
building
pattern
is
like
adding
complexity
to
the
kind
of
design
that
you
you
don't
like.
D
You
know,
I
wonder
if
the
moving
to
the
interface
pattern,
so
you
reduce
the
complexity
of
having
to
deal
with
the
different
versions
at
the
same
time
and
then
flattening
the
builder
stuff
out.
Maybe
it
seems
like
yeah,
you
go
if
that
makes
sense,
but
you
know
it's
a
like.
Without
it's
been
a
long
time
since
I've
I've
looked
at,
you
know,
what's
good.
Like
last
last
time
I
looked
at
lifecycle
code,
there
weren't
multiple
versions
of
things
in
it,
so
the
you
know
I
mean
that
could
be
terrible
advice.
A
D
And
the
reason
that's
like
so
I'm
thinking
about
the
problem,
you
have
these
files
and
they
look
different
for
different
versions
and
the
builder
pattern
is
used
to
create
structs
out
of
the
files,
and
you
is
that
right
and
you
don't
want
to
you-
can't
really
marshal,
because
the
structs
could
look
different.
D
Is
there
a
way
you
could
say
like
like
an
interface
I
can
imagine,
for
this
is
like
you
know,
b2
or
because
you
know
the
api
version
ahead
of
time
right,
you're,
not
you're,
not
you're,
not
trying
to
guess
what
the
files
api
version
is.
Is
that
right
like?
Could
you
have
like
v2
package
dot?
You
know
create,
and
then
you
pass
the
file
name.
Then
it
returns
the
struct
for
that
package.
A
Oh
yeah,
it's
that
I
think
we
have.
They
have
that
somewhere
else,
because
there's
like
different
ways
like
there's
different
ways
that
we
we
make
the
structs
like.
Sometimes
we
read
the
information
from
a
file.
Sometimes
it's
like.
A
We
know
the
information
and
we're
assembling
the
struct
so
that
we
can
then
write
it
to
the
file
later.
So,
like
I
mean
this,
this
could
all
this
could
all
go
away
right
in
favor
of
like
one
function
that
you
know
takes
a
bunch
of
stuff
and
returns
a
you
know,
returns
the
interface.
D
Yes,
do
you
need
a
function,
or
do
you
just
just
need
a
struct
and
then
because
all
the
methods
on
the
outside
are
just
going
to
set
fields
in
the
struct?
Is
there
a
reason
you
want
the
abstraction
for
creating
the
struct
from
scratch
versus
just
having
the
consumer?
I
guess
the
struct
isn't
exported.
Is
that
the
problem?
Could
you
export
destruct.
A
I
could
export
this
struct,
but
I
don't
want
to
like
an
if
else
in
the
like
say
in
the
lifecycle
package.
That's
like
you
know
if,
if
platform
api,
you
know
this
then
make
this
kind
of
struct
and
if
platform
api,
this
make
this
kind
of
struct.
I
just
want,
like
the
struct
itself,
to
be
sort
of
invisible
and
just
like,
I
want
a
data
object
that
has
these
things
and
the
platform's
responsible
for
like
for
putting
it
into
the
struct.
D
You
have
a
shouldn't.
This
might
be
a
terrible
idea,
but
could
you
have
a
generic
struct
that
takes
all
of
the
fields
right
or
that
takes
the
format
that
you
want
to
create
and
then
have
all
of
the
individual
version
packages
consume
that
struct
and
then
turn
that
struct
into
the
version
specific
things
that
way
you
don't
have
to
use
an
interface.
You
don't
have
to
use
like
a
pattern
that
requires
code
outside
of
the
package,
if
that
makes
sense
it
from
outside
of
the
package.
It
just
looks
like
I
do
normal
go
things.
D
D
Yeah
yeah,
I
mean
like
the
cast,
would
be
you
know
manually
implemented
in
the
package
right.
It's
not
not
like
a
like
a
direct
type
cast
or
something
like
that.
But
but
yeah
like
like
have
a
struct.
That
is
the
generic
version
that
then
can
turn
into
a
version
specific
type,
and
you
probably
you
probably
wouldn't
create
a
persistent
instance
of
it.
It
would
be
like
you
call,
you
know,
vo0
dot,
new
analyze
metadata,
and
then
you
pass
analyze
metadata
config,
but
that
config
doesn't
live
in
the
package.
D
Is
the
versioned
instance
of
the
struct.
A
Then,
how
do
I
get
stuff
out
of
that
truck?
So
if
I
want
to
like
later
like
introspect
on
well,
what
was
the
previous
image
right?
I
don't
want
to
have
to
know
to
that
it.
You
know
in
one
version
of
the
platform
it
lives
in
this
field,
on
the
struct
and
in
another
version
of
the
platform
it
leaves
in
this
field
like
I
just
want
to.
I
just
want
the
previous
image.
I
don't
care
how
it's
stored.
D
And
maybe
I
either
don't
understand
or
I'm
not
explaining?
Well,
I
think
if
that
makes
sense,
maybe
the
so
stepping
back
your
your
goal
is
to
create
a
version
specific
struct
right
and
you
want
you
don't
want
a
bunch
of
conditionals
when
you're
constructing
the
version.
Specific
struct,
like
you,
don't
want
to
say,
like.
D
Describe
how
okay,
sorry,
when
you're
using
the
builder
right,
let's
talk
about
what
it
looks
like
now
right
on
the
outside,
you
know
what
version
you're
trying
to
create,
and
so
you
instantiate
a
builder
for
that
version,
and
then
what
are
you
switching
on
like?
What
are
your?
What
what
are
your
conditionals
on?
In
that
case.
A
D
That's
okay,
if
you
didn't
do
that,
what's
what's
the
data
that
you
would
be,
you
know
using
excessive
conditionals
in
order
to
have
to
deal
with.
D
Got
it
I'm
not
talking
about
a
way
of
constructing
the
struct?
I'm
not
I'm
not
talking
about
returning
a
generic
struct.
Let
me
talk
about
generic
strike
as
input,
because
I
thought
I
thought
the
problem
was
that
it's
like
hard
to
create
the
version
specific
struct
with
the
interface
in
front
of
it
without
the
builder
pattern,
because
you
have
to
you
know,
switch
on
conditionals
based
on
the
version
to
construct
the
version
specific
struct,
but
instead,
if
you
had
a
generic
input,
struct
that
resulted
in
version
specific
output,
struct
does
that.
A
A
Okay,
let's
just
get
started
this
one!
Okay:
where
do
we
actually
consume
this?
So
we
just
say
like
with
previous
image,
so
that's
like
in
the
analyzer
right,
so
the
analyzer.
A
Needs
to
return
it,
it
needs
to
like
eventually,
this
analyze
metadata
is
going
to
be
written
to
automo
file
right,
so
it
needs
to
return
a
thing
that
has
these
properties
right
and
in
this
package
I
don't
want
to
care
what
field
holds
the
previous
image.
I
just
want
a
thing
that
has
that
data
stored
in
the
appropriate
format.
D
Okay,
so
a
dot
platform
is
a
version
or
a
dot
platform
is
a
version
specific
platform.
Is
that
right,
but
the
builder
that
get
er,
but
that
conforms
to
an
interface
that
allows
new
analyze
meta
with
new
analyze
metadata
builder,
so
that
you
can
get
different
versions
of
the
struck
back
in
different
versions.
The
underlying
structure
structure
built
when
you
run
those
commands
right
yeah.
So,
instead
of
instead
of
using,
like
the
maybe
a
little
more
heavyweight
builder
pattern
that
requires
you
know,
the
chain
function,
calls
and
interfaces
and
boilerplate
there.
D
You
could
have
one
generic
struct
instead,
that
just
has
fields
has
fields
that
apply
to
all
of
them
like
previous
and
previous
image,
metadata
or
whatever,
and
then
you
construct
that
here
and
then
you
do
a
dot
platform
dot
you
know
create
or
something
and
you
pass
the
generic
struct
to
it
and
create
is
implemented
to
consume
the
generic
struct
and
transform
it
into
the
version
specific
struct.
That
way,
you
don't
need
the
builder
boiler
plate
and
you
can
kind
of
simplify
your
input
thing,
and
maybe
that
that
gives
you
enough.
A
D
That's
all
I
meant
is
like
it's
like
there's
an
alternative
to
builder.
If
you
wanted
to
keep
ness
there,
but
he
didn't
want
to
do
the
heavyweight
builder
part
as
well.
Sorry,.
A
D
There's
a
way
to
reduce
that
boiler
plate
sort
of
using
embedded
structs,
so
you
can
come
up
with
an
embedded
struct
that
returns
all
nil
values
or
sometimes,
instead
of
mill
values.
In
this
case,
I'd
like
to
use,
I
use
a
return
value
and
an
okay
and
just
make
people
explicitly
check
that
like
because,
if
you're
saying
it's
not
supported
by
that
version,
you
may
want
that
information
separate
from
the
field
wasn't
empty
about
that,
but
separately
from
that
a
trick.
I've
used
in
this
case
is
create
a
like
a
thing
called.
D
B
E
No,
I
I
dig
it
it's
just
you
know.
I
think
the
problem
here
is
about
when
it
gets
used
right
like
when
you're
using
a
specific
field
right
like
what
does
the
code
look
like
is
this?
Is
it
gonna
be
like
if
platform,
six?
Oh
six,
do
this?
If
platform
o7
do
that
and
then
how
many
times
does
that
show
up
right.
D
D
A
E
D
I
think
that
would
just
change
at
the
level
of
this
this
file,
that's
highlighted
right
because
the
field
name
and
the
json
could
change,
and
maybe
you
wouldn't
have
to
change
the
name
of
the
struct.
You
probably
want
to
the
name
of
the
field
in
the
struct.
You'd
probably
want
to
change
the
name
of
the
field
of
destruct
too
just
to
match,
but
then
it
would
only
have
to
change
in
this
this
file
that
encapsulates
that
logic.
It
wouldn't
have
to
change
for
all
consumers
of
the
general.
B
D
D
E
E
I
think
I'm
just
not
communicating
correctly,
but
I
appreciate
the
discussion,
though
I
think
plenty
of
good
ideas
here.
I
hope
natalie
you
got
what
you
want,
though,
out
of
it.
A
I
got
I
mean
I
think
I
have.
I
have
more
direction
than
I
had
before.
Well
I'll
keep
bringing
this
up.
I
think
this
is.
Sadly
this
is
something
that's
going
to
hold
the
next.
We
have
to
figure
this
out.
You
know
before
we
can
ship
the
next
milestone,
but
I'm
gonna.
Oh,
you
know
I'll
keep
prodding
for
input
from
various.
You
know
people
and
hopefully
we
can
get
enough
consensus
that
we
can
proceed,
but
I
I
already
with
with
the
suggestions
that
have
been
made
here.
A
I
feel
that
you
know
I
can
make
it
better.
So.
D
That's
good.
My
the
two
things
I
mentioned
are
just
random
ideas
like
don't
don't
feel
like
you
need
to
do
that
for
any
reason
you
know
emily
might
have.
I
really
have
a
different
thing
and
I
don't
know
what
patterns
you're
already
using
so
also
like
just
you
know,
create
a
grain
of
salt
or
whatever
thanks.