►
Description
Electron is an open source library from GitHub that allows you to create desktop applications on three operating systems with HTML, CSS and JS rather than system-specific languages. This session will be two-part: an introduction to Electron and its ecosystem, by Jessica Lord, followed by a talk and demonstration from Jibo, a team using Electron to animate a first-of-its-kind home robot.
About GitHub Universe:
Great software is more than code. GitHub Universe serves as a showcase for how people work together to solve the hard problems of developing software.
For more information on GitHub Universe, check the website:
http://githubuniverse.com
A
Welcome
I'm
clear
that
the
screens
not
behind
me
but
welcome
I,
am
Jessica
Lord
I'm,
an
engineer
at
github
I
work
on
the
atom
team,
which
is
the
team
that
houses,
electron
and
I'm
gonna.
Do
we're
actually
going
to
split
this
session
into
two
talks
and
I'm
going
to
first
talk
give
an
introduction
to
electron
what
it
is,
how
we
came
to
build
it
and
how
you
interact
with
it
and
then
we're
gonna.
Do
another
talk.
There's
a
huge,
spoiler
alert
in
front
of
me
and
I
think
that
you'll
be
really
excited.
A
A
How
many
people
have
heard
of
Adam
Adam
is
github,
is
open
source
text
editor,
which
you
all
seem
to
know
that's
great,
and
the
dream
with
Adam
was
always
to
build
a
desktop
application
with
web
technology
with
HTML
and
CSS
and
JavaScript,
and
so
when
the
team
set
out
to
do
that,
they
started
looking
for
tools
to
use
to
be
able
to
do
that.
They
tried
the
chrome
embedded
framework.
A
First,
they
tried
in
wjs,
which
used
to
be
called
node
WebKit,
but
nothing
was
quite
right,
and
so
it
became
clear
that
they
were
going
to
need
to
build
something
specifically
for
this
Adam
vision
and
that's
really
how
electron
got
started.
The
atom
team
hired
Chang,
who
was
the
lead
developer
on
electron?
Who
was
a
heavy
committer
two
node
WebKit
previously,
and
he
shared
the
vision
with
the
atom
team
of
what
electron
could
be.
So
in
the
beginning,
January
2013
is
when
electron
began.
A
It
was
open
source
in
May
of
2014,
with
all
of
Adam
and
thin.
In
April
of
this
year
it
was
named
electron
because,
like
many
famous
people,
it
was
born
with
a
different
name.
It
was
born
as
Adam
shell
because
it
was
built
for
Adam,
but
it
became
clear
as
more
people
were
using
electron
that
it
really
needed
to
have
its
own
name
and
not
always
be
tied
to
the
text
editor.
A
So
what
is
it?
It
is
a
framework
for
building
cross-platform
desktop
applications
with
web
technology.
That's
that's
the
one-line
summary
of
electron,
but
what
does
that
really
mean?
That
means
that
you're
building
a
desktop
application
with
HTML
and
JavaScript
and
CSS
you're,
not
using
native
you're,
not
writing.
Objective-C
you're,
not
writing.
C-Sharp
you've
got
one
code
base
and
not
three.
You've
got
one
team
and
not
three,
and
this
is
a
really
cool
cool
thing
and
you
can
actually
write
native
code.
A
If
you
want
to,
you
can
include
native
modules
in
your
electron,
app
and
use
them,
but
you
don't
have
to
you
can
write
it
all
in
CSS
and
HTML.
So
how
does
it
do
this
electron
combines
chromium's,
alright,
wait.
Let
me
back
up.
First
chromium
is
the
open
source
version
of
Chrome.
The
browser.
Do
you
all
know
about
Chrome
browser?
A
Yes,
ok,
cool,
it's
the
open
source
version
of
that
and
electron
takes
the
chrome
content
library
that
is
just
in
charge
of
rendering
web
pages
so
electron
takes
that
and
combines
it
with
node
into
a
single
runtime
and
Google
built
an
engine.
A
JavaScript
engine
called
v8
for
Chrome
and
node
was
then
built
using
that
same
engine.
So
it
makes
a
lot
of
sense
for
them
to
get
to
share
this
space,
and
so
with
electron.
A
So
you
can
use
them
everywhere
in
your
electron,
app
as
well,
and
so
electron
lets
you
package
your
app
for
mac
and
Windows
and
Linux.
You
also
get
access
to
all
the
native
system,
UI
elements,
so
opening
file
dialogues
and
getting
alert
messages
and
styling
menus
and
the
system
tray.
All
of
that
stuff
you
get
for
all
the
platforms
with
electron.
A
It
also
ships
with
squirrel
for
automatic
updates
on
Mac
and
Windows.
This
is
something
that
github
built
for
its
desktop
apps,
and
then
it
has
no
configuration
windows
installers
for
the
windows,
applications
that
you're
building
and
that's
really
the
basics
of
what
electron
is,
how
it
combines
node
and
chrome
into
a
single
place
so
that
you
can
build
apps
with
HTML
and
JavaScript
and
now
I'm
going
to
talk
a
bit
about
using
electron.
So
the
main
things
that
you
need
to
understand
when
you're
using
electron
is
there
are
two
processes.
A
There
is
a
main
process
and
a
render
process,
and
so
this
main
process.
This
is
the
lifecycle
of
your
application
and
controls
when
you're
starting
your
app
when
you're
ending
your
app-
and
it
comes
with
some
modules
that
are
built
into
electron
that
are
built
specifically
for
the
main
process.
There's
a
dialogue
module
that
lets.
You
interact
with
those
open
file,
dialogs
and
system,
UI
elements
the
menu
lets.
You
create
your
system
level
menus
and
you
have
full
access
to
all
the
node
API
s.
A
There
is
a
module
called
IPC
which
is
inter
process,
communication
and
I'll
talk
about
that
in
a
minute,
but
then
there's
also
another
module
called
browser
window.
There
are
still
some
more
modules,
but
we're
going
to
focus
on
browser
window
now,
because
the
browser
window
module
for
the
main
process
lets
you
create
the
second
process.
The
second
process
is
the
renderer
process
and
that's
your
webpage
and
the
renderer
process.
It
also
has
modules
that
are
built
for
it
in
electron.
You
also
get
access
to
all
of
the
node
API.
A
So
if
your
web
page
has
a
button
that
you
want
to
be
and
open
a
new
file
button,
what
you
do
is
you
use
IPC
to
send
a
message
back
to
the
main
process,
because
the
main
process
handles
those
system
level
things,
and
you
ask
the
main
process
to
open
a
file.
Dialog
it
does
and
then
it
will
return
the
user's
response
back
to
you
in
your
render
process,
and
you
don't
have
to
just
have
one
render
process
you
can
have
many.
A
A
That's
just
executing
JavaScript
for
you
so
that
you
can
sort
of
farm
out
tasks
that
would
otherwise
slow
down
your
webpage
and
they
can
run
in
the
background
another
way
to
sort
of
think
about
the
main
process
in
render
process
context
is,
if
you
think
about
chrome,
if
you
have
chrome,
open
and
all
of
your
tabs
are
closed,
you're
still
going
to
see
the
chrome
at
the
top
and
the
file
edit
view.
That's
like
electrons
main
process
right,
that's
the
place
where
you
can
close
your
app
and
it's
where
you
can
open
new
tabs.
A
So
when
you're
in
chrome
and
you
open
tabs
each
one
of
those
tabs
is
a
separate
render
process.
One
tab
doesn't
know
about
the
other
tab,
and
so
this
is
how
it
works
in
electron
to
the
each
render
process
is
its
own
process,
so
I'm
going
to
walk
through
a
little
super
minimal
example
of
how
you
can
build
an
electron
app
and
how
the
pieces
sort
of
work
together.
A
So
the
bare
minimum
that
you
have
in
a
electron
app
is
a
package.json
that
you
have
in
a
normal
node
application
and
that
package
JSON
is
going
to
point
electron
to
where
your
main
process
file
is
defined,
and
in
most
cases
you
can
call
it
main
chest.
You
can
call
it
whatever
you
want,
but
mage
is
is
a
really
good
name
for
the
main
process
and
then
that
main
process
file
is
going
to
point
to
an
HTML
file
to
open,
so
you've
got
a
package
JSON
a
main
j/s
and
an
index.html.
A
Your
package
JSON
says
something
like
this.
It
says
main
and
then
the
name
of
the
file.
That's
your
main
process,
then,
in
your
main
j/s
you're,
going
to
use
two
modules
that
are
for
the
main
process.
One
is
app:
that's
going
to
give
you
your
app
and
then
the
other
is
browser
window,
and
so
when
the
app
is
ready,
you
create
a
new
browser
window,
you
give
it
some
dimensions,
and
then
you
tell
it
to
load
that
index.html
file
your
index.html
file-
and
this
is
where
I
want
to
show
you.
Alright.
A
This
is
an
index.html
file,
HTML
file,
but
our
browser
window
renderer
process
is
loading
it,
which
means
we
have
full
access
to
all
of
node.
So
I
hope
that
you
can
see
this,
but
we
have
the
normal
HTML
and
inside
of
a
script
tag
we
are
required.
We
have
var
FS
and
require
FS,
just
like
you're
writing
node,
but
this
is
inside
of
HTML.
A
Then
we're
using
the
JavaScript
Dom
and
creating
a
new
element,
a
new
paragraph
element,
and
then
we
can
set
that
paragraphs
content
to
oops,
I've
I
messed
up
some
code
there,
but
ignore
the
document
part
on
the
front
of
the
FS,
but
FS
aren't
read
file.
Sync,
you
can
read
a
file
and
then
set
the
content
to
that
using
node
directly
with
the
Dom.
So
the
next
thing
you
do
is
you
can
install
there's
a
module
called
electron
pre-built
that
lets
you
execute
electron
apps
from
the
command
line.
A
So
you
install
that
and
then
you
type
electron
dot
to
execute
that
directory
and
you
get
an
electron
app.
It
says
hello,
universe
and
you
didn't
know
this,
but
the
content
of
that
file
was
the
octopods
name
is
Mona
Lisa,
which
is
also
a
true
fact,
and
so
we
were
able
to
read
that
file
with
node
and
insert
it
into
the
Dom
inside
of
an
HTML
file
because
of
the
way
that
electron
embeds
it
all
into
the
same
runtime,
and
just
to
prove
that
it's
Chrome.
A
A
A
Instead
of
having
to
remember
the
emojis
name
and
then
another
one
is
called
playback,
and
this
is
a
video
player
that
streams
torrents.
If
you
have
any
of
those
things.
It
also
casts
to
your
chromecast
has
a
playlist
that
you
can
share
with
anyone
who's
on
the
same
Wi-Fi
network,
and
it
has
a
cool
cat
background.
A
A
We're
going
to
continue
to
update
chrome
and
node
so
that
anything
cool
that
chrome
chips
you
can
get.
You
can
use
your
fat
arrows
and
note
if
you
want
without
babel,
because
we're
on
for
and
will
always
be,
upgrading
node
and
we're
going
to
support
the
community
enable
the
tooling
that
they're
already
building
so
earlier.
In
my
little
demo
thing
I
mentioned
electron
free,
build.
We
didn't
build
that
someone
in
the
community
built
that
and
it's
downloaded
40
times
40,000
times
a
month
on
NPM
it
just
lets.
A
You
run
electron
from
the
command
line
and
it's
great,
but
we
actually
then
added
a
web
hook
to
electron
so
that
every
time
we
cut
a
release
of
electron
electron,
prebuilt
can
get
updated.
With
that
latest
release,
an
electron,
packager
and
electron
compile
are
the
same.
They're
really
useful
tools
that
are
built
by
the
community,
and
we
want
to
support
them.
However,
we
can
so
if
you
want
to
know
more
information
about
electron,
the
website
is
electron
atom.
A
Oh,
our
repository
is
in
the
atom
org.
We
have
a
Twitter
account
and
we
have
a
slack
and
you
can
get
an
invitation
to
the
slack
there
and
if
you
think
this
is
super
cool
and
that
I
might
be
fun
to
work
with,
you
can
come
work
with
me
and
we're
hiring
so
talk
to
me.
Kevin
is
also
here
somewhere.
Yes
in
the
back,
he
works
on
the
atom
team
and
we
have
the
listing
on
github
x'
website.
A
B
Thank
You
Jessica,
so
Jessica
asked
the
same
question
so
I
think
I
can
ask
the
same
question.
How
many
people
here
know
geebo
or
heard
of
TiVo
come
on
cool?
Alright?
Well,
we'll
have
do
you
bow
introduce
himself
in
a
little
bit,
but
for
those
of
you
who
don't
know
who
GEVO
is,
were
a
design
focused
robotics
company,
we're
bringing
sociable
robotics
to
the
home?
So
without
further
ado,
I'm
going
to
have
geebo
introduce
himself.
C
D
C
Bring
content
to
life,
which
makes
me
a
great
entertainer
and
storyteller
and
I
love
to
play
with
kids
and
help
them
learn.
I
want
to
help
my
family
feel
closer
and
more
connected.
Even
when
they
live
apart.
I
can
capture
and
share
special
moments
like
a
cameraman
I
can
recognize
you
listen
to
you
and
interact
with
you
like
a
hands-free,
helper,
finally,
I'm
a
platform
with
the
help
of
developers
everywhere.
My
skills
will
keep
expanding.
B
B
Cool
so
giba
mentioned
that
he
is
a
platformer
and
we
knew
right
from
the
beginning
that
we
wanted
to
attract
web
developers,
game
developers
and
mobile
developers.
So
we
knew
we
wanted
to
build
geebo
using
web
technologies,
and
it's
really
funny
because
in
Jessica's
talk
she
talks
about
the
process.
They
got
to
actually
building
electron
and
we
actually
went
through
a
very
similar
process.
We
started
looking
at
chromium,
then
we
moved
on
to
chromium
vetted
framework
and
it
has
its
pros
and
cons.
B
Then
we
looked
at
em
wjs
and
then
finally,
we
arrived
at
electron
and
it
kind
of
solved
a
lot
of
the
problems
that
we
were
having
with
these
other
three
frameworks.
So
we
decided
that
we
were
going
to
run
all
of
our
skills.
We
call
our
skills
apps
in
electron
on
Zeebo
bonus
points.
There's
this
IDE
called
atom,
that's
built
on
top
of
electron,
so
we
also
decided
to
build
our
SDK
as
an
atom
plug-in,
and
this
actually
has
some
really
beneficial
effects.
We
can
run
the
same
code.
B
That's
me
doing
the
motion,
control
and
all
the
other
things
on
Zeebo
in
our
SDK
as
well.
So
it's
actually
very
powerful
when
we,
when
you
run
on
the
simulator
and
the
animation
tool,
all
that's
the
same
code
as
is
running
on
the
robot,
so
as
a
startup
that
makes
it
really
easy
to.
You
know
work
on
multiple
platforms,
so
our
SDK
is
an
atom
plug-in.
We
have
three
main
tools:
an
animation
tool,
a
visual
behavior
tree
tool.
This
is
for
encapsulating
AI
behaviors
and
a
robot
info
pane.
B
Like
I
said,
the
skill
runs
an
electron
in
three
different
modes.
It
can
run
on
the
robot
and
because
we're
built
on
web
technologies,
we
can
actually
run
the
skill
on
your
computer
and
have
it
connect
to
the
robot
through
Wi-Fi
and
I'll
show
that
in
a
little
bit
or
we
give
you
can
run
it
in
the
simulator
and
the
simulator
is
just
a
simulated
environment.
It
runs
all
the
same
web
services
on
your
computer
as
our
running
on
the
robot.
B
So,
like
I
said,
all
of
our
skills
are
analyte
or
basically
an
electron
app,
but
electron
has
no
robot
parts
to
it.
So
we
provide
an
NPM
module
called
G
Bo
and
if
you
just
include
this
in
your
skill,
this
gives
you
an
api
to
all
of
the
robot
parts.
So
what
are
the
robot
parts
so,
just
like
a
human
geebo
has
various
senses.
Listening
and
speaking,
he
has
different
types
of
audio
speech
recognition.
He
has
embedded
speech
recognition
which
can
detect
end
of
utterances
speaker
ID.
He
has
also
has
cloud
recognition
for
more
unconstrained.
B
B
He
also
has
text-to-speech
so
that
you
can
have
G
Bo,
say
whatever
you
want.
It
supports
a
subset
of
speech,
synthesis
markup
language.
This
is
a
markup
language
that
allows
you
to
enhance
the
text-to-speech
attributes,
so
you
can
add
emphasis
pitch
shift
porosity
to
your
text-to-speech
and
plus
anything.
You
do
an
electron.
So
you
know
the
whole
webby.
You
know:
pay
html5,
audio
web
audio
stuff.
B
In
addition
to
audio
speech,
recognition,
which
is
just
turning
sound
waves
into
strings,
he
also
has
to
be
able
to
understand
what
you're
saying
and
for
this
we
have
a
robust
parser.
Basically,
you
can
think
of
it
like
regex
for
natural
language
understanding,
and
it
supports
things
like
date/time,
US
cities.
You
know
things
that
you
want
to
want
to
write
yourself.
We
provide
all
these
factory
methods
for
you
seeing
and
perceiving.
This
is
really
important
for
a
social
board
robot.
So
you
want
him
to
be
able
to
detect
motion.
B
So
if
you
enter
a
room,
he
can
acknowledge
you
face
recognition,
so
he
can
see
a
face,
H
identification.
So
he
understands
the
people
who
are
in
his
family
photo
capture
and
sound
events
as
well
touch
he's
a
sociable,
creature
and
people
like
to
touch.
You
know
if
you're
petting,
your
dog,
you
do
like
this,
so
he
has
sensors
all
over
his
head,
so
he
can
detect
that
and
also
his
screen
is
touch
capable.
B
The
animation
expression
is
one
of
my
favorite
systems.
It
is
designed
like
a
game
animation
system,
so
you
have
all
the
things
that
you
would
have
in
a
game:
animation
system
like
blending
static
and
procedural
animations,
except
with
the
robot.
You
have
these
real
degrees
of
freedom.
Instead
of
in
a
virtual
virtual
game.
He
has
inverse
kinematic
so
as
a
developer.
B
If
I
want
him
to
look
at
a
point
in
space,
maybe
a
face
or
a
person
or
motion
or
sound
or
whatever
you
just
give
the
animation
system
a
point
in
3d
space,
and
it
does
all
the
math
and
inverse
kinematics
for
Gebo
to
actually
look
at
it
and
there's
different
ways
of
doing
this.
You
can
do
lazily,
so
he
can
move
his
eyes
first
and
then
his
head,
or
he
can
do
a
more
tracking
mode.
B
Where
he's
like
you
know,
targeting
him
and
then
other
animation
things
that
we
built-in
like
blink,
you
can
shape
the
I,
translate
it
rotate
it
texturize
it
etc.
I'll
show
that
later
cool.
So
enough
about
the
the
features
I
would
like
to
show
the
our
SDK.
Cannot
you
guys
see
that
sort
of
all
right?
They
told
me
not
to
do
720p.
So
I'm
gonna
trust
them
on
this
one.
So
what
I'm
going
to
do?
B
B
Actually
so
we'll
just
start
off
here
we'll
make
this
sixty
keyframes
a
keyframe.
Thirty
will
have
them
lean
to
the
side
and
acknowledgement
of
of
me
like
that
and
then
at
the
very
end,
we'll
just
reset
all
and
create
a
keyframe
there.
So
it's
like
it's
like
it's
a
basic
keyframe
editor.
It's
it
takes
elements
of
Maya
and
takes
elements
of
Flash
and
kind
of
puts
it
into
one
thing
again
we're
trying
to
go
after
web
developers
and
they
know
flash
and
they
know
how
to
do
keyframes
and
game
developers.
They
know
they
know
Maya.
B
So
I
mentioned
that
there's
multiple
ways
of
running
G,
Bo
I'm,
going
to
run
him
remotely
so
I'm
going
to
run
the
skill
this
little
animation
on
my
computer
and
it's
going
to
connect
wirelessly
to
the
motor
feedback
system
on
the
robot
right
here
you
just
stick
in
the
IP
address.
We
call
him
mm.
We
named
all
our
robots
have
to
retain
clan
members
and
let
me
just
make
sure
gulp
is
running.
B
So
you
notice
that
the
gap,
so
we
go
back
to
the
screen.
You
notice
that
the
eye
is
actually
playing
on
my
computer
connected
through
WebSockets
and
using
HTTP
all
web
technologies
to
actually
play
him
on
the
robot
itself.
We
can
just
go
to
our
build
folder
and
we
just
type
in
we.
Let
me
make
this
bigger
for
you.
B
And
there's
animation
on
the
robot,
so
there's
multiple
ways.
You
can
run
this
depending
on
your
iteration
cycle.
How
fast
you
want
to
iterate.
Let's
keep
going
with
that
time.
Is
it
ok
great?
Let's
do
something
to
the
eye.
Maybe
he
wants
to
express
an
emotion
like
love,
so
let's
turn
his
eye
into
a
heart.
B
B
B
I'm
so
again,
you
know
this
animation
tool
allows
you
to
manipulate
the
eye.
The
body
we
have
an
LED
ring
right
here.
That
is
another
expressive
element.
He
has
an
eye
overlay,
so
you
can,
you
know,
bring
in
a
camera
lens
or
like
a
camera.
Shutter
thing
he
has
an
event
system
so
that
you
can
synchronize
audio
to
events
in
the
animation
itself,
and
you
know
video
references
and
all
the
things
you
would
expect
with
an
animation
editor.
B
B
So
what
I'm
going
to
do
is
I'm
going
to
create
a
separate
behavior
and
we're
going
to
call
this
idle
new
behavior
tree
file,
call
it
idle
and
what
I'm
going
to
do
so
is
this
who
heard
those
what
a
behavior
tree
is
anyone
in
games
at
all
some
of
you,
okay,
so
behavior
tree
lets
you
do
things
like
sequences
run
behaviors
in
parallel?
That's
basically,
it
acknowledges
parallelism,
unlike
a
finite
state
machine,
so
in
this
case
we're
going
to
run
a
parallel
of
two
sequences
and
child
sequence.
B
We're
going
to
loop.
These
sequences
so
we're
going
to
add
a
while
condition
cool
met,
a
copy
paste.
So
now
we
have
two
seconds.
So
what
I'm
going
to
do
is
I'm
going
to
create
an
animation.
It's
a
procedural
animation
where
he
just
chills,
he's
just
going
to
sit
there
and
look
around
and
maybe
he's
going
to
blink
a
little
bit
so
in
each
one
of
these
sequences,
I'm
going
to
add
a
little
timeout
behavior.
This
just
does
nothing
for
a
certain
amount
of
time.
So
let's
do
between
two
seconds.
B
Randome
and
then
below
that
we're
going
to
add
another
behavior
I'll
blink
and
we
we
ship
with
all
these
basic
behaviors
blink
play
animation.
Look
at
text-to-speech,
listen
cloud,
listening,
all
sorts
of
cool
things
and
it's
all
included
in
our
SDK.
So
we
let's
just
copy
that
timeout,
because
we
like
that
and
below
that
we're
going
to
put
a
look
at
behavior
and
again.
Look
at
behavior
just
takes
an
object
in
the
X
Y
position
and
then
geebo
will
do
all
the
math
to
look
at
that
place
in
space
now.
B
So
again,
you
can
just
build
out
these
huge
behaviors
and
you
know
we
have
all
sorts
of
cool
tools
and
we're
going
to
be
shipping
with
things
like
greeting
a
person
and
like
idle.
You
know
idle
behaviors
that
are
a
little
bit
more
complex,
that
speak
the
human
social
code,
so
you
know,
and
just
I
just
want
to
give
a
shout
out
to
the
electron
and
atom
team.
These
products
have
been
great
and
you
know
we're
building
a
whole
company
on
them.
So
thank
you.
I.
B
B
Yeah,
so
if
you
want
to
develop
new
skills
on
G
bows,
we
wear
right
now
we're
concentrating
on
the
more
power
developers,
but
we
will
be
releasing
sets
of
tools
that
allow
you
to.
You
know,
create
really
lightweight
animations
on
them,
and
you
know,
if
he's
really
interested
up
downloading
these
tools.
It's
really
easy
on
a
package
manager
is
super
easy
and
you
know
our
animation
tool
is
super
easy
yeah.
B
B
B
Yeah
so
I
mean
there's
different,
there's
different
forms
of
security
on
Gebo
I
would
say
you
know
all
all
web
communication
going
back
and
forth
is
going
to
be
SSL
encrypted.
You
know,
there's
going
to
be
a
token
handshake
between
your
app
and
the
Jebus
--is,
and
you
have
to
put
them
two
into
developer
mode
before
you
can
actually
run
a
skill
remotely.
So
when
he's
not
in
a
developer
mode
he's
in
kind
of
lockdown
mode,
he
won't
accept
connections
from
outside.
B
On
top
of
that,
there's
other
security
that
I
want
to
talk
about.
Probably
really
briefly,
the
skill
itself
we're
opening
this
to
third-party
developers.
The
skill
itself
won't
have
access
to
the
pixels
of
the
camera.
The
whole
local
perceptual
space
is
sending
back
structured
data
as
JSON
about
where
people
are
what
they
you
know.
What
where
people
are
where
motion
is?
Where
sounds
coming
from?
Maybe
the
emotions
on
their
face,
but
besides
that
they
don't
get
actual
pixels.
So
we
put
a
on
top
of
that.
B
We
actually
also
sandbox
the
electron
process,
so
we
chroot
it
and
we
wrap
it
in
seccomp.
It's
a
berkeley,
filter
packet
library
that
filters
system
calls
to
the
OS.
So
you
know
when
we
launch
a
skill,
we'll
have
a
manifest
file,
just
like
an
android
that
describes
the
permissions
that
it's
allowed
in
the
the
platform
will
enforce
that.
D
B
B
Yeah,
so
the
that's
a
really
good
question
over
for
as
an
owner
as
an
owner,
it
should
feel
seamless
as
seamless
as
possible
and
from
a
design
standpoint.
That's
actually
a
big
challenge,
because,
if
you're
bringing
in
all
these
third-party
apps
that
have
you
know
vastly
different,
you
know
experiences.
How
do
you
create
a
unified
experience
across
it?
We're
approaching
this
where
there's
kind
of
an
uber
process,
think
of
your
window
manager
on
your
computer.
We
call
it
G
Bobby,
it's
his
base
personality
and
he
he
does
all
the
skill
switching
for
you.
B
B
B
B
B
Right,
yes,
so
we
have
zero
users.
Well,
we
have
ten
users
right
now,
which
is
our
own
internal
skills,
team,
I'm.
Sorry,
the
question
was:
are
we
going
to
have
an
app
store
and
do
we
have
users
right
now
we
are
going
to
have
an
app
store
and
we
haven't
launched
a
product.
So
we
have
don't
have
any
real
users
yet.