►
Description
At the heart of modern computing belies a large swath of software written in the 80s and 90s, with the respective practices of those days. But the times have changed since. How can we fix these up, with Rust?
https://rustfest.global/session/59-podemos-tener-cosas-bonitas
Español: https://www.youtube.com/watch?v=vagdrp4NUsE
A
And
so
without
further
ado,
we're
ready
for
our
first
presentation
right,
so
we
are
ready
for
our
first
one
with
federico
federico's
joining
us
here
and
he's
going
to
take
over
he's
going
to
talk
about
whether
we
can
have
nice
things
and
so
just
to
tell
you
a
little
about
federico
and
about
his
career.
Federico.
Mena
quintero
is
one
of
the
founders
of
the
genome
project,
which
is
a
graphic
environment
that
is
used
in
free
operating
systems
before
genome.
A
He
was
in
charge
of
the
kim
project,
which
is
also
an
open
source
project,
and
during
the
first
days
of
genome,
he
was
in
charge
a
part
of
the
original
coding
documentation
for
the
graphical
environment,
libraries
and
also
applications.
He
worked
in
red
hat,
advanced
development
labs
in
the
first
desktop
versions
and
after
working
in
evolution,
federico
specialized
in
the
desktop
core
at
the
jdk
libraries
and
the
native
file
manager.
A
Today
he
is
working
at
susic
and
the
open
source
open
source
distribution
sent
susan
linux
enterprise
desktop,
and
he
also
keeps
the
svg
libraries
and
other
libraries
so
federico
mena.
I
think
that's
all
we
have
and
for
the
open
source
world.
Congratulations,
and
thank
you
for
being
here
and
for
sharing
with
us
here
we
go.
B
B
B
And
we
have
a
lot
of
very
old
software
and
I'm
going
to
talk
about
it
later
and
how
we
can
improve
all
this.
The
infrastructure
using
rust.
This
picture
that
you
see
here
is
a
part
of
a
mexico
city.
It's
also
a
very
old
city
with
a
lot
of
history
and
see
here
we
see
two
buildings
on
the
left.
Is
the
san
bernardino
church
from
the
17th
century
and
on
the
right
we
have
a
department
store,
it's
called
el
palaciodero
and
it's
a
building
that
it's
from
the
beginnings
of
the
20th
century.
B
B
All
of
those
things
and
in
software
happens
something
very
similar,
although
it's
really
hard
to
change
old
software
because
of
all
the
inertia
that
it
has,
but
those
facades
of
the
buildings,
those
nice
buildings
that
we
see
of
the
church
and
the
department
store
is
what
we
see
and
what
we
use
when
we
interact
with
the
buildings,
but
very
few
times
we
enter
into
the
basement
or
in
the
operating
room
or
in
the
room
where
all
the
electricals
are
wired
very
few
times.
We
really
see
the
infrastructure
behind
it.
B
B
B
And
this
talk
is
my
little
way
of
saying
just
realize
that
we're
here
and
please
be
welcome.
You're
welcome
to
help
us.
So
this
part
of
infrastructure
is
being
called
system
programming,
and
this
is
a
way,
that's
sort
of
very
fancy
way
of
saying
that
it's
the
infrastructure
of
the
system
that
you're
running
or
interacting.
B
So
what
is
system
programming,
so
that
is
very
near
the
kernel,
the
core
of
the
operating
system.
The
kernel
is
in
charge
of
sharing
the
hardware
with
the
software
and
the
system.
Programming
programming
is
all
the
user
land
all
the
initial
initialization
system.
When
you
start
your
computer,
when
you
activate
your
network,
when
you
make
the
request
of
hcp
to
have
your
computer
with
an
ip
address,
all
the
services
like
ssh
bus,
all
the
utilities
of
the
command
line,
ls
cat
find
all
of
these
commands.
B
All
the
fundamental
libraries,
the
cryptographic,
libraries,
the
graphic
toolkits
to
paint
buttons.
This
is
what
I
do
and
all
the
libraries
to
read:
files
to
decode
json,
the
code,
xml,
all
the
codecs
to
be
able
to
read
the
files,
jpegs
pngs,
video
files
or
the
tools
that
you
need
to
operate
code,
low
level
code,
all
the
compilers.
B
But
all
of
that
is
already
written,
isn't
it
so
why
should
we
worry
about
that?
Why
should
developers
worry
about
that?
Well,
everything
has
changed
a
lot
in
the
past
20
years
and
that's
what
I'm
going
to
talk
to
you
about,
and
it
can
be
improved
a
lot
because
programming
practices
have
changed
a
lot
in
the
past
20
years.
B
B
Those
are
ken
thompson
and
then
it's
richie
ken
thompson
is
one
of
the
authors
of
unix
and
richie
is
the
creator
of
the
c
language
and
they
are
legends
that
they
already
did
what
they
had
to
do
so
unix.
It
started
in
pdp,
seven
machines.
You
hear
you
see
here
a
pdp-11
machine
and
those
are
very
big
machines.
They
are
the
size
of
the
fridge,
but
they
are
very
slow
machines
with
very
little
capacity,
just
a
few
kilobytes
of
memory,
so
that
was
less
than
one
megahertz
of
speed.
There
was
not
microprocessors.
B
You
just
had
fundamental
circuits
that
were
huge
and
you
just
you
could
hand
weld
them.
There
was
no
internet
and
there
was
no
need
to
worry
about
security
at
that
moment,
if
you
fed
garbage
to
a
program
or
a
file
with
an
incorrect
format
and
the
program
crashed
well,
they
said
well
garbage
in
means
garbage
out.
B
So
just
don't
get
garbage
into
your
program,
then,
in
the
80s,
the
micro
computer,
the
home
computers
are
now
popular
before
that
computers
were
very
large,
very
expensive,
and
only
companies
had
them
only
universities
had
them
and
in
the
80s,
personal
computers
start
having
their
moments.
So
here
is
bill
gates
bragging
about
his
software.
B
He
was
selling
to
personal
computers.
There
was
no
internet
at
home.
The
only
people
who
had
access
to
computers
with
internet
were
universities,
companies,
companies
such
as
bell
labs,
build
telephones
and
even
in
home
computer
environments
or
some
companies.
You
could
assume
that
computers
were
not
connected
to
the
network,
so
they
better
be
reliable.
The
people
there
there
was
no
electronic
espionage
because
there
was
no
network.
There
was
no
way
to
transfer
data
easily.
B
The
only
way
to
transfer
data
with
between
computers,
but
one
of
the
with
the
floppy
disks
that
were
have
very
little
capacity,
so
you
can
get
much
information
from
them
and
then
in
the
80s
and
90s.
This
is
how
unix
look
like
this
is
the
environment
from
x
windows
with
the
protocol
x11
and
everything
looked
terrible,
didn't
it.
B
B
B
B
B
B
I
think
it's
numeric
and
it's
very
little
used
now
it's
one
of
the
spreadsheets
that
were
available
for
genome,
but
now
we
are
in
2020,
everybody
has
a
super
computer
in
their
pocket.
Most
personal
machines
are
mono
user.
It's
very
rare
that
you
share
a
computer
with
other
people
and
nobody
really
bothers
because
people
who
use
their
computer
at
homes
use
windows
where
little
people
use
macs
and
computers
are
very
highly
compatible
with
data
centers.
B
So
now
they
have
virtual
machines
containers.
So
a
lot
of
resources
that
are
shared
a
lot
of
people
has
internet
internet
is
everywhere
and
it's
a
very
hostile
environment.
Everybody
needs
a
firewall.
Everybody
needs
their
software
to
be
designed
so
that
you
are
not
being
attacked
via
the
internet,
because
attacks
are
now
automated.
B
B
Computers
were
ugly
and
hard
to
use
and
garbage
in
garbage
out
and
in
2022
kernel
and
system
utilities
are
still
written
in
c,
and
that's
the
only
thing
that
has
not
changed
because
your
phone
well,
my
phone
has
six
cores
because
it's
old,
but
now
modern
phones
have
eight
cores
and
eight
gigas
of
memory
and
that's
a
lot
more
than
the
super
computers
in
the
80s.
The
gpu
of
my
old
laptop
is
faster
than
a
reality
engine
from
1998
of
the
machines
that
were
sold
in
thousands
and
thousands
of
dollars
by
then.
B
B
All
the
internet
is
hostile.
Everybody
wants
computers
and
phones
that
are
usable
and
if
you
have
garbage
in
well,
you
better
have
secure
software
because
it's
either
a
malware
or
a
government
exploit
if
you
are
a
journalist
or
dedicated
to
human
rights,
but
the
kernel
and
the
system
are
still
written
in
sea.
So
why
hasn't
that
changed.
B
B
They
know,
for
example,
that
git
exists
on
the
internet
is
available
and
comparing
it
with
some
something
very
old
like
the
traditional
grab.
Well,
you
use
grub
when
you're
editing
your
code
and
you
just
edit
in
git
and
it's
kind
of
uncomfortable
and
these
utilities
are
being
replaced
by
rg,
that's
written
in
rust.
So
if
you're
looking
for
something
between
source
code,
3,
there's
probably
a
dot
git
there
and
you
shouldn't
get
there
because
it
will
not
deploy
anything
useful.
B
B
And
as
ceremony
says,
we
sometimes
think
that
awful
code
is
written
by
awful
deaths
but
in
reality
it's
written
by
people
who
had
very
limited
or
very
different
circumstances
of
what
we
have
now
and
I'm
going
to
tell
you
a
horror
story
of
when
we
were
writing
this
in
the
year.
2000
writing
evolution.
It
was
a
microsoft
outlook
clone.
B
So
this
function-
that's
here
written
in
c,
is
one
of
my
first
patches
in
evolution
is
completely
incorrect
because
I'm
here
creating
a
stack
buffer
and
now
I
return
a
pointer
to
that
buffer
in
the
stack.
So
that
is
automatically
a
corruption
of
memory
and
that
bug
is
fixed
two
commits
later,
but
we
had
a
language
that
didn't
stop
you
from
doing
those
mistakes
all
the
time
you
had
to
be
aware,
so
that
these
things
didn't
happen
to
you.
B
So
every
programmer
was
responsible
to
install
the
development
utilities,
all
the
libraries
and
dependencies
in
their
computer
to
be
able
to
compile
the
software,
and
we
wasted
a
lot
of
time
with
that
there
were
not
automatic
systems
to
install
dependencies
or
anything
like
that.
So
did
we
really
live
like
that?
Yeah
genome
started
in
97
1997,
and
the
version
control
system
then
was
cvs.
B
B
B
They
also
released
the
bug
monitoring
system
called
boxilla
and
automated
compilation
system
called
tinderbox
written
by
tara,
hernandez
and
mozilla
invented.
Basically,
the
continuous
compilation
com
concept,
because
the
problem
that
they
had
in
netscape
is
that
they
had
to
support
windows,
the
16-bit
version,
the
32-bit
version
old
mac
os
before
it
was
written
as
mac
os
x
and
eight
versions
of
unix
eight
different
unix
systems.
At
that
time
there
were
solaris
hpox
linux,
all
of
those,
so
they
said
well.
B
B
B
B
B
We
had
to
convince
all
the
people
from
using
subversion
to
git,
because
people
from
ubuntu
and
canonical
wanted
to
use
something
else.
Github
was
released
in
2008,
then
it
apart
then
something
free
appeared
for
github,
but
it
already
disappeared.
Gitlab
is
from
2014
and
genome
started
using
its
own
gitlab
instance
in
2018,
and
that
changed
everything.
B
B
B
And
it
was
very
hard
at
that
time.
Unix
always
had
something
called
change
root
to
create
a
tree
directory
tree
besides
the
normal
tree,
and
it
was
very
hard
to
install
change
root
because
you
need
all
the
spaces
to
have
that
and
hard
drives
were
very
slow
and
how
to
create
all
the
files,
the
firewood
all
the
directories
for
all
those
files.
So
it
was
very
obscure
utilities
and
very
hard
to
use
so
to
create
reproducible.
B
B
B
B
B
B
And
this
has
resulted
in
the
spirit
called
rewrite
it
in
rust
check
this
blog.
I
will
send
you
my
presentation
later
so
that
you
can
check
the
links.
All
the
core
utilities
are
being
rewritten
in
rust.
Those
are
the
basic
genome
utilities
in
the
command
line,
cut,
cp
mode
town
sort
through
all
of
this
is
being
rewritten
in
rust,
and
it's
not
absolutely
necessary
to
rewrite
in
rust
because
it's
already
there,
but
if
we
want
to
move
little
by
little
out
of
the
mindset
that
everything
is
written
in
c
and
insecure
languages,
maybe
it's
important.
B
There
is
a
very
nice
utility
that
analyzes
all
this
history
of
development
of
a
git
repository
and
creates
graphs
such
as
this.
Every
color
in
the
graph
is
the
code
that's
being
added
in
certain
year
and,
if
it's
being
rewritten,
so
something
that
happens
in
a
typical
project
is
that
code
is
added
and
little
by
little.
It
stays
there.
B
B
B
B
B
B
B
Well,
we're
going
to
check
that
very
quickly.
This
is
an
into
an
introduction
to
introduce
rust
into
c.
This
is
a
very
small
c
program.
You
can
see
the
definition
of
a
struct
that
has
three
fields
a
b
and
c.
It
has
a
billion,
an
integer
of
64
bits
and
another
boolean.
If
we
ask
c
to
print
the
size
of
this
structure,
it
prints
24.
B
B
B
B
So
here's
what
we
have
and
what
brush
does
with
its
own
structure,
is
that
it
minimizes
the
size
of
the
fields
because
it
rearranges
them.
So
if
we
want
to
integrate
it
with
c
written
code,
we
have
to
tell
rust
to
get
the
structure
and
make
a
memory
array
in
a
way
that
it's
equal
to
the
structure
in
c,
and
we
do
that
with
reproc.
B
B
B
B
B
And
that's
the
same
thing
that
our
function:
they
did
so
we
print
the
fields
and
then
going
back
to
our
code.
In
c
we
remove
the
function
definition
and
we
enter
an
extern
declaration.
So
we
tell
the
compiler
that
that
function
is
no
longer
defined
there,
but
it's
being
defined
outside.
So
then
we
have
to
tell
it
to
the
linker
to
link
the
code
in
c
to
the
code
in
rust.
B
B
B
B
So
we
port
the
code,
we
arrive
to
the
beautiful
world
and
here
is
how
we
will
port
little
by
little
code
from
rus
from
see
to
rust,
and
I
think
our
time
is
up.
So
thank
you
very
much
for
for
attending
my
talk.
I
hope
that
I
inspired
you
a
little
bit
to
keep
maintaining
the
old
infrastructure
and
modernize
it.
We
still
have
to
put
everything
in
it:
testing
automatic
compilation,
port
it
to
secure
languages.
B
B
B
So
if
you
have
any
question
for
federico,
please
remember
that
you
can
be
at
the
chat
of
the
event
and
you
he
can
also
be
found
as
at
federico
mena
at
twitter.
So
you
can
set
your
questions
there.
Thank
you
so
much
for
the
time
and
for
your
great
talk,
so
we
will
continue
with
ramon
and
pilar
in
the
next
stream.
Thank
you.
Goodbye.