►
From YouTube: Non-conventional Vue components bootstraping discussion
Description
Staff engineers chat about potentially the non-conventional bootstrapping of the Vue components for the purposes of Create::Editor group. With Natalia Tepluhina, Vitaly Slobodin, and Phil Hughes
A
Hello:
everyone
we
are
here
at
the
non-conventional
view,
components
bootstrapping
discussion
with
the
staff
engineers
to
discuss
one,
as
the
title
puts
it.
Unconventional
use,
like
bootstrapping
of
the
view,
components
that
I
would
be
really
interested
in
knowing
opinion
about
from
from
our
staff
engineers.
So
I
will
start
with
a
very
short
with
a
very
short
introduction
that
will
give
all
the
basic
background
to
the
to
the
process
and
to
the
actual
actual
issue
we
are
trying
to
trying
to
solve.
I
will
share
my
screen
now.
A
A
So
do
you
see
the
the
slide
now
cool?
Yes,
so
thank
you.
So
yes,
it.
The
the
main
question
is
coming
from
a
particular
problem.
We're
trying
to
solve
in
create
editor
group
and
here's
the
thing
we
have
the
source
editor,
the
editor
that
is
driving
all
our
code,
editing
experiences.
It
can
be
presented
as
the
raw
source
editor
in
the
javascript
environment,
in
rails
application
and
as
a
view
component.
A
We
also
connect
this
source
editor
to
different
dot
layers,
so
in
web
id
it
is
viewix
in
snippets.
It's
apollo
in
a
single
file.
Later
it's
straight
to
api
connection,
so
we
have
different
data
layers.
Source
editor
is
connected
to
all
of
them
at
the
moment.
At
the
same
time,
we
have
the
content
editor.
A
That
is
a
pure
view
component
and
the
problem.
The
particular
problem
we're
trying
to
solve
now
is
how
to
make
these
things
be
connected,
and
how
can
we
allow
users
switch
between
the
two
when
users,
in
particular,
when
users
edit
a
markdown
file,
because
content
data
is
about
editing,
markdown
files?
So
the
scenario
is
user
comes
to
a
markdown
file,
edits
it
and
then
realizes?
Okay,
I'm
I'm
done
with
the
with
this
weird
weirdness
in
markdown.
A
I
wanted
to
edit
this
as
a
proper
document
user
switches
to
the
content
data
and
does
editing
in
wizardweak
mode
as
simple
as
that,
and
they
they
have
to
have
the
possibility
to
switch
back
to
code.
If
that's
that's
what
they
want.
A
So
the
the
end
goal
is
very
clear.
The
question,
though,
is
in
this
setup,
where
we
have
source
editor
connected
to
this,
the
different
data
layers.
How
can
we
make
things
glued
together?
So,
as
obviously
the
very
first
solution
is
connect
both
source,
editor
and
container
to
the
same
data
layers
very,
very
clear
pattern.
A
We
all
know
this.
It's
established
pattern,
it's
clear
to
any
gitlab
engineer,
so
anybody
who
will
be
working
with
this
integration
will
know
how
to
do
this.
A
The
challenge
comes
in
exactly
this
scenario.
We
have
three
different
data
layers.
This
means
that
if
we
follow
the
conventional
view
path,
we
will
have
to
create
three
different
integrations.
We
will
have
to
connect
contemplator
for
in
view
in
the
web
id.
We
will
have
to
connect
content
edited
view
x
in
snippets.
We
will
have
to
connect
to
apollo
and
in
a
single
file
later.
That
is
not
view
yet,
but
of
course
it
will
be
refactored.
A
A
This
means
that
the
more
editors
we
add,
the
more
integrations
we
have
to
to
create,
and
so
this
conventional
view
view
path
might
come
with
integration
costs
and
scalability.
It's
not
big.
Let's,
let's
be
honest,
it's
not
big.
It's
only
three
data
layers,
we're
talking
about
at
the
moment,
but
in
order
to
have
another
another
possible
path.
The
second
option
we
are
discussing
is
source.
Editor
is
already
has
already
established
connections
to
all
three
data
layers.
A
So
what
if
we
make
content
editor
piggyback
these
connections
and
allow
source
editor
orchestrate
connection
of
the
content?
Communication
of
the
content
editor
with
all
those
three
sources.
Three
data
layers,
I'm
sorry
with
all
through
those
three
data
layers
through
the
already
established
connections,
so
the
communication
between
source,
editor
and
content
editor
will
be
just
with
regular
props
and
events.
A
Obviously,
the
question
is:
how
do
we
do
this
and
source
editor
allows
us
to
create
the
extensions
and
all
this
communication
between
source,
editor
and
content
data
is
suggested
to
be
done
in
the
source.
Editor
extension.
A
The
advantages
of
this
approach
is,
we
are
already
you.
We
will
be
using
the
established
data
connections
that
are
tested
every
day
at
the
moment,
so
there
is
a
little
very
little
chance
for
regressions.
In
this
case,
the
the
connection
will
be
very
well.
Scoped
means
everything
all
the
connections
between
source,
editor
and
content,
editor
and
potentially
other
editors
will
have
will
be
managed
by
one
source,
editor
extension,
so
this
comes
with
scalability.
A
The
big
question
is
this:
requires
this
new
unconventional
view
component
bootstrapping
at
the
moment,
I'm
not
sure.
Maybe
there
are
three
options
so
how
it
is
done
at
the
moment
like
in
in
the
in
the
scenario
that
we
are
discussing
so
source
header
will
be
the
view
component.
A
All
the
time
we
will
I
in
the
beginning,
I
noticed
I
I
mentioned
that
it's
it
can
be
used
as
a
raw
source
or
source
editor
or
as
view
component
for
simplicity,
we
assume
that
source
editor
will
always
be
used
as
the
view
component,
even
in
the
single
file
editor,
where
we'll
bootstrap
the
view
application
and
put
source
editor
as
the
component
there
within
this
source,
editor
component,
we
will
create
the
dynamic
component
that
will
be
orchestrated
by
this
source,
editor
extension,
so
the
content
panel
that
the
the
content
panel
prop
that
you
see
here
will
be
supplied
by
the
source,
editor
extension,
and
that's
that's
the
basic
the
background
of
the
integration
we
will
get
to
this
particular
source,
editor
extension
and
how
the
orchestration
happens.
A
A
No
okay
cool,
then:
how
is
this
source
editor
extension
built
in
in
general,
so
avoiding
unnecessary
details?
What
we
do
in
this
extension,
we
set
up
our
component
that
we
set
up
the
component.
A
But
the
way
we
set
up
set
up
this
component
is
we
do
not
bootstrap
the
new
view
application
in
order
to
avoid
bootstrapping
the
view
application
within
the
view
application.
So
what
we
do
is
we
build
the
component,
props
object
so
or
not
props.
We
just
built
the
component
component
object,
which
contains
which
has
all
we
need.
A
We
supply
the
event
listeners
to
this
function,
so
we
have
the
component
properly
set
up
for
communication
with
our
and
to
to
to
to
make
it
clear.
This
component
view
is
the
wrapper
around
content
editor.
So
it's
just
the
glue
that
meets
the
the
required
events,
but
otherwise
it's
unchanged
content
editor.
A
So
we
pass
on
the
event
listeners
and
what
we
do
in
order
to
be
able
to
to
set
up
this
component.
Is
we
do
this
trick
with
passing
the
data.
A
To
this
function,
setting
it
to
data
and
then
setting
the
props
to
actually
read
the
data.
So
this
way
we
set
up
the
reactivity
from
the
source,
editor
extension
down
to
the
component,
because
we
will
have
to
pass
the
content
updates
after
the
component
is
being
is,
is
set
up,
it's
not
one-time
setup.
So
that's
why
we
have
to
have
this
reactivity
here
and
that's
pretty
much
it.
So.
The
the
big
question
is.
A
First
of
all,
what
do
you
think
about
about
this
possible
kind
of
workaround?
B
I'm
not
sure,
but
I
already
like
this
idea,
because
I
have
like
three
items
in
my
mind:
the
first
one
is
about
maintainability
costs
for
maintainability
of
this
approach.
Second
runtime
I
mean
in
terms
of
performance
costs
and
switching
between
these
two
editors.
B
Instead,
during
your
presentation,
I
was
thinking
about
why
we
can't
introduce
a
special
data
layer
between
data
sources
and
all
content
editors,
because
it
doesn't
matter
for
content
editors,
which
data
source
or
data
layer
we
use
so
just
introducing
a
new
abstraction
for
them
and
let
them
use
it.
C
Yeah,
that
was
my
idea
as
well.
Why
can't
we
have
a
shared
data
layer
like
sometimes
it's
done
on
the
back
end
with
graphql
right,
we
can
create
a
double
layer
that
accumulates.
Why
can't
we
do
the
same
on
the
front
and
having
a
shared
data
layer
to
add
two
constraints
that
vitaly
already
voiced
testing
one
of
the
constraints
here
and
secondly,
second
is
unclear
source
of
changes
for
the
components.
If
you
are
setting
data
from
outside
the
component,
it
kind
of
breaks
the
idea
of
component
isolation
and
view
third
migration.
C
C
We
need
to
make
sure
it
does,
but
this
is.
A
This
is,
this
is
a
very
good
point
and
I
was
I
was
thinking
about
this
as
well.
A
Let
me
let
me
get
back
to
the
shared
layer
in
a
bit
but
to
make
things
clear,
so
this
solution
allows
us
to
first
of
all
when
it
comes
to
maintainability,
so
maintainability
is
going
to
be
scoped
to
this
extension,
because
all
the
integration
parts
are
going
to
remain
exactly
as
they
are
today
so
for
for
the
existing
integrations,
there
is
not
nothing
gonna
be
changed,
except
we
are
going
to
use.
Where
is
it
so?
The
source
editor
component
is
going
to
be
the
same.
A
It's
just.
We
are
gonna
use
this
source
content.
Editor
extension,
that's
the
only
change
for
for
for
the
for
the
existing
view,
components
to
to
when
it
comes
to
maintainability,
so
maintainability
will
be
all
scoped
to
this
to
this
extension.
So
it's
one
place
to
orchestrate
the
things
about
the
migration,
to
view
three
right
that
that
makes
a
lot
of
sense.
A
I'm
not
sure
this.
This
will
continue
working,
but
probably
we
could.
We
could
test
this
with
the
with
you
three
and
that
that
makes
a
lot
of
sense,
but
when
it
comes
to
the
shared
data
layer,
do
we
have
any
so
natalia
you
mentioned
about
graphql?
A
Do
we
do
we
have
examples
of
such
shared
data
layer?
That
would
connect
us
to
different
like
to
proxy
us
to
different
data
layers.
A
B
B
B
C
We
still
could
think
about
the
shared
data
layer,
because
from
what
I
can
see,
it
would
solve
the
issue
effectively
for
whatever
approach
you're
taking
you're
just
trying
to
like
create
a
hack
that
would
work
with
multiple
data
layers.
But
the
issue
is
with
data
layers,
not
with
a
component
composition
here.
A
Right
right,
that
makes.
B
Sense,
yeah
yeah.
I
have
a
really
small
question.
I
think
I
didn't
get
the
main
idea
of
a
content,
editor
extension,
so
it
means
there
will
be
two
instances.
A
On
the
page,
when
we
switch
to
to
the
to
the
content-
editor,
yes
like
not
really,
because
if
you
take
a
look
at
the
so
yeah
they
technically,
it
will
be
so
we
just
use
v
show
for
the
source,
editor
part
and
the
component
as
long
as
content
panel
is
null.
We
don't
share,
don't
show
the
content
editor.
I
can
demonstrate
it.
Actually.
A
I
have
the
working
example
right
here,
so
we
are
on
the
snippet,
so
we
are
in
the
source,
editor
right,
so
I'm
I'm
gonna
make
some
changes
here.
So
I
want
to
change,
switch
to
content,
editor,
I'm
switching
to
wiziwig,
and
I
can.
A
I
can
edit
this
and
switch
back
to
code
it's
there
and
I
can
just
continue
working
with
wiziwig
if
I
want
to
and
save
changes.
So
that's
that's
the
point,
but
when
it
comes
to
to
the
actual
number
of
editors,
it's
according
to
vue
devtools,
it
is
only
one
editor
at
a
time.
A
Well,
where
are
my
view
tools?
Okay,
I
have
to
reload
it's
like
either
or
at
each
point
of
time.
A
That's
that
technically
what
what
I
was
thinking
when
when
we
decide
when
we
when
we
were
discussing
this,
this
solution
is
first
of
all,
editing.
Markdown
files
in
the
repository
is
not
is
not
like
main
task.
Moreover,
editing
markdown
files,
as
the
in
the
wysiwyg
amount,
is
it's
kind
of
like
niche
of
a
niche.
So
I
wanted
to
make
sure
that
we
have
as
small
footprint
as
possible
for
this
scenario
in
general
on
the
editing
pages.
A
But
I
I
totally
see
the
complexity
that
this
brings
as
well,
so
yeah
dot
layer
dotted
layer
share
that
layer.
B
Just
a
side
note
from
what
I
see
it
looks
like
we're
really
missing
a
really
good
visual
editor
which
can
handle
both
modes
in
the
same
time,
something
like
a
sk
editor
or
something
else.
Well,.
A
You
mean
so
use
the
content
area
that
can
handle
the
source
editing
as
well.
That's
that's
what
you
mean.
Well,
that's
that's
another
way.
Another
way
around
really.
The
problem
is
that
this
means
that
we
won't
be
able
to
deliver
the
unified
code,
editing
experience
to
the
users,
because,
if
they
get
to
the
even
in
the
multi
file,
snippet
they
get
to
to
mark
down
file
and
switch
to
to
code
mode
there.
A
That
code,
editor
source
editor,
will
look
different
from
other
source
editors
that
we
have
on
the
page,
because
it
will
be
completely
different
editor.
So
that's
that's!
That's
a
bit
a
bit
too
far
for
us,
I
think,
to
to
approach
it
this
way,
but
yeah,
so
shared
data
layer,
okay,
that
makes
sense
that
makes
sense.
A
This
is
okay
in
so
just
to
sum
it
up.
A
B
Yeah
just
follow
the
good
old
like
mbm
model
and
encapsulate
or
obstruct
as
much
as
we
can
and
let
the
address
address
to
just
to
display
or
render
the
content.
A
B
A
Yeah,
okay,
that
makes
sense.
That's
that's
not
not
gonna
be
fast,
but
that
that's
probably
the
most
robust
solution
anyway.
Okay,
anybody
has
any
other
comments.
This
is
this
is
super
super
interesting
because
technically
we
didn't
even
discuss
this
shared
data
layer.
A
So
that's
that's!
It
like
natalya
is
he's
in
agreement
with
this
phil.
What
do
you
think
makes
sense
to
me
cool
that
was
fast,
okay,
okay,
thank
you
very
much.
It
was
super
super
in
interesting
to
to
get
your
opinion
on
this,
because
now
we
have
third
option
and
probably
the
the
option
now
and
well,
we'll
see
how
how
fast
we
can
get
to
that
thing.
A
Thank
you
very
much
for
jumping
on
this
call.
It
was
very
good,
but
just
to
make
sure
do
you
think
we
should
do
like
broader
discussion
of
this
thing
with
the
frontend
channel
or
we
just
we
should
be
fine.
I
will
post
the
recording
and
I
might
I'll
link
post
a
link
to
the
frontend
channel
for
for
everybody
to
watch,
but
do
you
think
we
need
a
broader
discussion
of
this?
No,
I
think
I
think
it's
clear.
C
A
Yeah
right,
okay,
very
well
cool,
then
I
will
I'll
proxy
this
to
to
the
team,
and
we
will.
We
will
see
how
fast
we
can
get
with
the
shared
data
layer
if
the
team
will
decide
that
that's
the
way
to
go,
but
thank
you
very
much
for
expressing
your
opinions.
This
is
this
is
very
valued
and
very
much
appreciated.
Thank
you
for
jumping
on
a
short
notice.