►
From YouTube: GSoC 2023 Office Hours - March 7, 2023
Description
Special project idea presentations:
- Exponential backoff and jitter for agent reconnections
- GitLab Plugin Modernization
A
Recording
is
on
and
wish
everybody
a
good
morning,
good
afternoon
or
good
night
around
the
world.
This
is
a
special
edition
for
gsoc
office
hour,
where
we
will
answer
questions
solve
doubts
about
two
project
ideas
for
the
Jenkins
Google
summer
of
code,
and
we
have
several
mentors
here
on
the
on
the
call.
A
So
just
a
brief
presentation
for
myself:
I
am
John
Mark
Mason
I'm,
located
in
Brussels,
Belgium
Europe
and
together
with
Alyssa,
who
is
on
the
west
coast
of
the
United
States,
we're
both
org
admins,
and
we
have
also
Bruno
Bruno,
who
is
located
in
Northern
or
France.
So
these
are
the
organizers
and
we
have
mentors
around
the
table.
So
we
work
first
vessel.
Can
you
just
present
yourself
who
you
are
where
you're
located.
A
A
So
without
further
delay,
we're
going
to
discuss
the
first
project
idea,
which
has
quite
an
impressive
name
so
exponential
back
off
in
Jitter
for
agent,
reconnections
I,
think
this
is
a
subject
where
basil
has
good
knowledge
about.
He
proposed
this
project
idea.
So,
first
of
all,
could
you
present
the
project?
What
it
is
why
it's
important
and
then
we'll
open
up
for
a
question
for
housekeeping
the
presentation
of
the
project
should
not
exceed
10
minutes.
Sir
sir,.
B
Well,
as
the
as
a
user
of
the
Swarm
plug-in,
there's
been
multiple
pull
requests
over
the
years
to
solve
this
problem,
which
is
that
when
we
starting
a
controller,
all
the
agents
we
conduct
at
the
same
time-
and
this
can
be
scalability
limitation
if
too
many
agents
are
connecting
to
the
controller
simultaneously.
B
The
controller
could
reject
some
of
these
connections,
and
essentially
that
means
that
the
restart
of
the
controller
would
would
be
only
partially
successful
if
H,
if
some
of
the
agents
were
not
able
to
reconnect.
B
B
This
is
basically
a
scalability
problem
right
and
the
idea
behind
this
solution
would
be
to
introduce
Jitter
so
that
these
agents
aren't
all
trying
to
reconnect.
At
the
same
time,
the
main
challenges
for
this
project
are
number
one,
there's
two
different
implementations
of
this,
so
the
code
is
not
already
in
a
clean,
State,
there's
essentially
duplicate
logic
in
standard
remoting
framework
as
well
as
in
swarm.
B
So
so
that's
already
going
to
be
a
challenge,
then
the
other
challenge
with
this
project
is
demonstrating
that
this
Jitter
is
actually
having
the
desired
effect
on
a
busy
controller.
So
you
know
it's
one
thing
to
Implement
an
algorithm,
that's
defined
on
paper,
but
the
other
question
is:
is
this
actually
beneficial
to
users
and
the
only
way
to
really
determine
that
is
to
do
some
kind
of
scalability
testing
and
to
see
okay?
B
Well,
how
can
we
reproduce
this
scenario
where
the
controller
is
being
overwhelmed
with
agent
reconnections
and
once
we
can
we
produce
that
scenario?
Is
this
edition
of
Jitter
actually
making
a
difference?
That
is?
Is
it
improving
the
success
rate
of
reconnections?
So
that's
really
this
project.
In
a
nutshell,.
A
B
Don't
remember,
I
think,
there's
some
there's,
definitely
some
stuff
missing
from
remoting
that
is
present
in
the
Swarm
version
and
and
vice
versa.
Maybe
in
other
words,
these
two
implementations
are
not
a
feature
parity
with
each
other.
So,
okay,
that's
part
of
this
project
is
to
get
these
two
different
implementations
up
to
feature
parity
and
I.
Can't
I
can't
remember
what
remoting
is
missing.
It's
definitely
missing
something
right.
A
Mark
raised
his
hand.
C
B
Jitter
in
this
context
means
adding
a
randomized
time
delay
to
spread
out
to
spread
out
load
so
in
the
project
proposal,
there's
a
link
to
an
AWS
blog
post
that
has
a
nice
diagram
of
this,
which
kind
of
shows
that
adding
Jitter
will
kind
of
increase
the.
B
What's
the
best
way
to
describe
this
it'll,
any
Jitter
will
will
ensure
that
there
aren't
these
big
Columns
of
dots
in
the
same
time
span
and
if,
if
you
I
mean
I,
just
just
go,
read
the
AWS
blog
post,
but
they
have
a
diagram
of
this
where
they
show
how
essentially
adding
sugar
distributes
the
load
in
a
different
way,
so
that
so
that
the
server
isn't
overwhelmed
within
any
particular
time
period.
C
B
B
Is
a
retrying
is
a
deceivingly,
complex
topic,
because,
if
you,
if
you
look
at
there's
like
a
one
of
my
favorite,
libraries
for
retrying,
is
tenacity
which
is
a
python
Library
and
they
have
a
really
good
documentation.
But
if
you
look
at
the
tenacity
documentation,
you
can
see
that
there's
all
these
different
ways
that
you
can
retry
things
and
there's
not.
B
Some
of
them
are
better
in
some
use
cases
than
others,
but
it's
not
obvious
to
anyone.
Who's
who's
neuter
to
retrying
that
there's
this
much
complexity
behind
the
topic.
But
you
know,
for
example,
you
can
you?
Can
sleep
fix
the
meta
time
between
tries
you?
Can
you
can
increase
the
amount
of
sleeping
between
retries,
which
is
called
exponential
back
off,
which
is
done
by
TCP?
You
can
add
Jitter,
there's
all
these
things
that
you
can
do
and
they
make
sense
in
some
use
cases,
but
not
others.
B
So
the
use
case
that
we're
talking
about
is
the
Thundering
Herd
problem,
and
so
that
that
is
the
case
that
we're
discussing
with
controllers
being
flooded
with
agent
reconnections
and
in
in
that
use
case.
The
identified
solution
have
industry-wide
is
to
use
exponential
back
off
and
Jitter.
So
that's
that's
the
medicine
for
this
problem.
It's.
A
A
medicine,
I
I
think
one
of
the
important
Dimension
about
that
is
to
demonstrate
that
it
has
the
desired
effect,
so
the
the
the
testing
so
the
usual
testing,
which
is
unitest
integration
testing.
But
here
we
really
need
to
do
an
end-to-end
test
of
that
feature.
Yeah.
B
The
testing
is
probably
the
hardest
part
of
this.
Actually
because
I
mean
it's,
it's
relatively
straightforward
to
refactor
duplicate
code
and
to
add
a
loop
that
goes,
and
you
know,
maybe
not
trivial,
but
it's
something
as
well
conceptually.
It's
not
there's
nothing
complicated
about
adding
a
for
Loop.
You
know
to
some
code
in
practice.
It's
going
to
be
hard
because
this
code
is
a
mess
and
it's
it's
extremely
messy
code
so
and
then,
like
I,
said,
there's
two
versions
of
it
as
well.
B
So
if,
in
practice
it's
like
one
of
the
most
difficult
for
Loops
that
you're
going
to
be
addict,
but
but
you
know
the
testing
is
really
the
hard
part
here,
because
how
do
you
really
demonstrate
that
this
is
making
a
difference?
B
B
B
A
B
A
E
B
Running
a
big
Jenkins
deployment
at
a
previous
employer
where
I
experienced
this
firsthand
and
I've
seen
other
users,
people
have
submitted
the
pull
requests
to
swarm,
to
add
Jitter
and
and
I've
even
seen
social
media
posts
from
Jenkins
users.
Talking
about
this
problem,
so
you
know
one
idea
might
be
to
try
to
you
know,
connect
with
one
of
these
users
and
try
to
get
them
to
deploy.
You
know
a
test
version
or
something
like
that,
but.
E
B
You
know
that
that
isn't
certain
that
we'd
be
able
to
find
someone
like
that
or
that
they'd
be
willing
to
to
deploy
to
their
production
environment.
Some
of
this
code
and.
A
What
was
the
the
number
of
Agents
we
were
talking
about?
Are
we
talking
about
10
hundred
thousand
well.
B
My
case,
it
was
hundreds
I'm,
not
sure
what
I'm
not
sure
what
the
Netflix
case
is
I
think
it's
hundreds
to
thousands,
and
there
were
also
some
people
in
the
Swarm
plug-in
filing
pull
requests
and
I
tried
to
ask
them
for
more
information
and
I
never
got
any
so
and.
B
B
So
you
know
for
I
think
I'm,
not
sure
if
remoting
does
retries
at
all
right
now,
which
is
I,
think
the
scary
part
I,
think
remoting
by
itself
might
might
not
be
doing
retries,
I,
don't
I,
don't
know,
I,
don't
really
use
remoting
directly
because
I
like
I
like
swarm
personally,
but
it's
it's
not
really
the
standard
way
of
doing
it.
Swarm
definitely
does
retrying,
which
is
you
know,
critical
in
this
kind
of
scenario.
B
But
then
again
you
know
if
you're,
if
all
the
agents
are
retrying
at
the
exact
same
time,
then
that
could
create
a
worse
problem,
which
is
that
the
controller
just
gets
completely
hammered
with
connections
at
the
same
instant.
You
know
every
10
seconds
or
every
30
seconds,
which
is
why
that,
which
is
why
Jitter
and
backup
are
both
needed
but
yeah.
B
Basically,
the
effect
is
that
the
that
the
controller
could
be
made
inaccessible
if
it's
receiving
so
many
requests
at
the
same
time
or
the
jobs
wouldn't
show
status
updates
until
that
reconnection
takes
place.
Okay,.
E
A
This
project
can
be
huge,
so
there
is
a
lot
of
a
lot
of
work
possibilities.
There
are
a
lot
of
holes.
You
can
start
jumping
rabbit
holes
that
you
can
go.
Can
it
be
cut
in
in
different
phases
or
different
and
and
say
have
ideas
for
another
edition
of
Google
summer
code
or
or
is?
Do
you
see
a
strategy
like
that.
B
Yeah
absolutely
I
mean
there's,
there's
no
harm
at
all.
It's
just
simply
consolidating
the
duplicate
code
that
exists
today
and
not
included
and
not
having
any
regressions
right.
That
is
a
change
that
could
easily
be
accepted
without
controversy.
If
the
the
existing
code
is
deduplicated
into
some
sort
of
common
function
or
common
class
or
whatever
the
challenge
there
is
that
a
command
line
interface
needs
to
be
added
to
express
some
of
these
ideas
right
to
to
express
the
the
back
off
period
or
the
amount
of
time
between
tries.
B
The
number
of
tries
Etc
so
in
designing
clis
is
always
tricky,
because
it's
effectively
a
contract
that
you
can't
break
once
you
once
people
start
using
these
command
line
options,
so
so
a
lot
of
effort
needs
to
be,
in
other
words,
there's
this
challenge,
where
even
if
you're,
only
implementing
a
subset
of
this,
you
need
to
design
the
CLI
for
the
whole
thing
before
you
can
Implement
a
small
part
of
it,
because
designing
a
CLI
is
one
of
those
things
where
it's
effectively
an
API
that
people
commit
to.
B
So
you
can't
you
can't
just
do
it
in
incrementally.
You've
got
to
design
the
whole
API,
even
if
you're
only
implementing
part
of
that
API
up
front.
So
I
think
that's,
that's!
That's
the
only
that's
the
biggest
impediment
to
Breaking
this
up
into
incremental
tasks
is
that
the
CLI
really
needs
to
be
thought
out
this
one
completely
before
anything
is
implemented,
even
if,
even
if
the
implementation
is
only
partial,
it's
easy.
B
A
A
D
So
I
would
add
upon
that
some
points,
so
this
project
is
very
vast,
so
the
remoting
module
is
very
integrated.
There
are
a
lot
of
dependencies
at
the
plugin
as
well,
so
the
they'll
be
very
challenging
task
that
when
we
try
to
push
this
code
changes
to
this
Upstream
repository.
So
when
it
comes
to
the
production
level
of
this
implementations,
then
we
need
a
very
hard
testing
for
this,
and
students
can
do
their
own
research
because
this
kind
of
like
we
can.
D
We
can
use
the
exponential
for
now,
like
that's
a
very
industrial
standard
for
this
retry
mechanism,
even
in
my
company
xyzatz
or
we
are
using
the
exponential
rate
rifle
even
for
the
micro
service
intercommunications.
D
So
exponential
is
a
good
choice,
but
students
can
do
their
research
on
research
and
they
can
propose
what
what
whatever
it
works.
We
can
Implement
that
yeah,
but
it's
a
very
vast
project
and
and
also
interesting
projects.
That's
why
I
joined
some
enter.
A
F
Hello,
everybody
I
I,
have
some
questions
related
to
how
the
unification
of
Jenkins,
remoting
and
swample
again
is
to
be
implemented
like
currently
remoting
waits
for
10
seconds
after
every
after
every
attempt
to
connect
to
the
controller.
Currently
it
waits
for
10
seconds
so,
and
the
Swarm
plugin
has
three:
has
a
linear
back
of
linear,
retry,
algorithm
and
exponential
back
of
exponential
retry
algorithm.
So
do
we
have
and
it
all,
and
so
on?
Plugin
already
has
the
CLI
function
where
we,
where
we
can
override
the
default
exponential
back
of
algorithm.
F
E
B
Together,
the
first
step
would
be
to
design
and
I
I
would
not
consider
the
Swarm
CLI
to
be
a
work
of
art
to
be
emulated.
It's
evolved
haphazardly
in
the
standard
for
introducing
a
CLI
change
to
remoting
is
a
lot
higher
than
the
standard
for
or
I'd
say
that
yeah
swarm
has
just
evolved
in
a
very
messy
way
over
the
years,
but,
like
the
main,
the
main
challenge
is
coming
up
with
a
good.
B
A
good,
CLI
and
I
actually
wouldn't
be
afraid
to
break
swarm
consumers
because
I
don't
think
too
many
of
them
are
using
this
or
even
if
they
are,
it
could
be
announced.
You
know
ahead
of
time,
but
the
key
is
to
design
a
CLI
that
does
make
sense
and
is
easy
to
use.
That
includes
all
those
features
that
swarm
has
and
Jitter,
which
swarm
does
not
yet
have
and
to
really
find
a
way
to
express
that
to
the
use,
because
I
think
right
now
in
swarm
the
exponential
backup,
it's
a
very
strange
CLI.
B
It's
it's
not
an
intuitive
way
of
expressing
the
arguments
and
the
the
the
intervals,
it's
basically
just
there
as
a
historical
accident.
So
that's
where
I
would
start
is
really
figuring
out.
How
do
we
express
these
options
in
an
intuitive
way
and
then
from
there?
How
do
we
retrofit
these
existing
implementations
to
align
with
that
intuitive
CLI,
which
would
only
exist
in
in
theory
and
then
in
practice?
We
can
slowly
evolve
the
existing
implementations
to
fit
it's
going
to
be
easier
for
remoting,
because
there
isn't
any
support
for
this.
A
B
F
My
question
is
about
the
stress,
testing
framework,
I'll
search
the
web
and
I
have
found
about
Apache
geometry
like
we
can
use
that
to
mock
something
like
that
where
at
10
or
20
age
we
can.
We
can
mock
10
or
20
agents
using
that
I
I
got
I
got
to
read
that
from
some
blogs
on
the
web,
but
it's
not
the
optimal
solution,
but
it's
it's
something
that
we
can
use
to
for
stress,
testing
on
remoting
and
the
CLI
part
I
I.
F
Think,
because
it
is
a
one
chance
to
create
the
CLI
if
I.
If
right
now,
I
try
to
use
remoting
from
the
CLI
it,
it
says
you
are
using
it
from
the
console,
use
it
interactively
So.
Currently
it
has
something
like
of
a
CLI
implemented,
but
but
it
does
not
work,
it
just
says:
use
it
interactively.
B
F
So
like
does
the
remote
already
have
it
because
the
com,
the
code,
is
really
complex.
Just
like
you
said
that
is
something
I
got
from
the
high
level
overview.
B
A
So
when
did
did
you
have
a
specific
question
so
I
think
you,
you
raised
a
few
points
about
the
the
testing
framework,
so
you
explored
a
few
ideas.
F
F
A
And
having
read
your
your
initial
draft,
so
I
think
there
is
is
an
interesting
topic
to
to
research,
although
there's
choices
that
will
have
to
be
made
one
of
the
things
that
you
can
start
and
I'm
I'm
talking
to
the
audience
here
is
to
Define
so
to
to
know
how
do
we
know
that
we
have
the
problem
right.
So
this
is
the
first
question
and
the
first
research
item
that
can
be
part
of
gsoc,
so
you
don't
need
to
have
it
but
State
the
problem
there.
So
how
can
you
say
there?
A
We
are
there.
We
are
now
we
have
the
problem
and
then
the
second
part
is
to
think
on.
How
can
I
increase
the
load
or
create
a
load
where
I
can
demonstrate
that
the
problem
is
caused
by
this
retry
a
load
and-
and
this
would
be
already
I
believe
looking
at
at
bezel
already
one
big
step
forward
in
starting
to
solve
the
problem
and
and
then
the
the
other
steps
are
so
it
I,
I,
think
seeing
from
the
reaction
from
bezel
I
think
I'm
I'm
on
on
Solid
Ground.
B
The
other
question
to
be
accepted
to
be
accepted.
Ultimately,
our
bar
for
accept
well
by
accepted
I,
don't
mean
from
a
gsoc
point
of
view,
but
for
for
any
code
change
to
remoting
to
be
merged
our
standard.
Would
our
standard
of
approval
would
be
for
it
to
be
demonstrated
to
solve
some
sort
of
problem
and
to
not
cause
our
questions
and
the
demons.
B
So
when
you're,
not
the
one
doing
the
testing
yourself,
it's
a
lot
harder
to
convince
yourself
that
the
change
has
had
the
desired
effect.
It's
a
lot
easier
if
you're
also
the
one
doing
the
testing.
So
that's
why
I'm
really
hesitant
to
rely
on
other
community
members
to
do
testing,
because
it's
very
hit
or
miss
with
them,
sometimes
they're,
very
responsive
and
test
your
build
right
away
and
other
times
other
times.
It
just
hits
a
dead
end.
So
yeah.
B
B
It's
a
local
test
or
an
end
user.
Like
I
said
we
generally
wouldn't
accept
a
pull
request.
Unless
we
can,
we
can
tell
that
this
is
better
than
before,
and
it's
not
causing
a
regression
yeah.
A
B
And
you
know
like
Loki
mentioned
you
know,
maybe
Jitter
isn't
the
best
solution
to
the
problem.
Yeah
or
maybe
there
are
other
solutions
that
you
could
experiment
with
and
choose
which
one
has
the
best
effects
if
you've
got
a
way
to
increase
load
like
that,
so
I.
A
I,
like
that
here,
I'm
I'm,
sorry
we'll
we'll
pause.
This
discussion,
we'll
try
to
keep
10
minutes
at
the
end,
will
not
exceed
the
hour
promised,
because
these
are
interesting
questions
and
interesting
discussions,
but
I'll
be
so
we'll
keep
10
minutes
at
the
end
for
questions
I'd
like
to
cover
the
second
project,
so
the
gitlab
plug-in
modernization,
I
think
Mark.
You
had
things
to
tell
us
or
or
basil,
who
would
like
to
talk
about
that
project.
I.
B
C
Yes,
yes,
oh
and
that's,
okay,
Basel
has
just
noted
a
sort
of
awkward
mistake,
I
made.
So
yes,
let's
highlight
that
first,
so
at
the
high
level,
the
gitlab
plugin
is
important
to
Jenkins
consumers
who
are
using
gitlab
as
their
SCM
system.
It
allows
them
to
do
all
sorts
of
interesting
and
useful
things
updates
of
of
merge,
request
comments,
status,
changes,
Etc,
and
so
the
gitlab
plugin
is
quite
useful.
C
However,
the
gitlab
plugin
is
outdated
in
many
of
the
things
that
it
does
and
much
of
its
implementation,
and
there
are
specific
things
that
need
to
be
improved
in
that
implementation.
Now
it's
important
that
we
have
a
strong
integration
with
gitlab,
just
like
we
have
a
strong
integration
with
GitHub
and
bitbucket
SCM
providers
matter
deeply
to
Jenkins
users.
So
we
want
the
gitlab
plugin
to
be
very
strong
and
right
now
it's
it's
not
had
an
active
maintainer
for
a
while.
C
B
Yeah,
the
gitlab
plugin
is
communicating
with
a
given
gitlab
server
through
its
rest
API.
So
gitlab
has
a
rest,
API
I
think
it's
I
can't
remember
if
it's
Json
based
I
think
it's
json-based
and
essentially
anything
that's
communicating
with.
It
goes
through
that
API,
including
the
gitlab
Jenkins
plugin,
and
we've
had
this
fairly
constant
thorn
in
our
side
for
the
last
few
years.
That
I've
noticed,
which
is
the
way
that
the
Jenkins
git
lab,
plug-in
communicates
through
this
rest.
B
B
I,
don't
know
if
we're
the
only
people
in
the
world
using
rest
easy
to
communicate
with
gitlab,
but
we
very
well
may
be
the
only
people
on
the
planet
doing
it
this
particular
way
and
as
a
result,
we're
subject
to
a
lot
of
regressions
and
problems.
That
simply
don't
happen
to
other
people,
because
other
people
are
using
a
more
common
path
that
we're
that
we're
not
on.
B
In
particular,
the
the
standard
way
of
communicating
with
gitlab
from
java
is
to
use
the
there's
a
there's,
an
official
or
semi-official
Java,
Library
I
forget
what
it's
called
now
but
I'll.
Look
it
up,
gitlab
4J,
so
that
that's
a
very
nice
library
that
gives
you
these
Java
classes
and
you
can
invoke
methods
on
them
and
it
will
figure
out
in
the
back
end
how
to
translate
that
Java
method
call
into
a
Json
request
for
you,
but
that
that
gitlab
4J
Library
is
that's.
B
That's
the
common
path
that
the
rest
of
the
universe
is
using
to
communicate
with
gitlab.
We
we've
actually
already
bundled
it
as
a
Jenkins,
Library
plugin,
and
it's
being
used
by
the
gitlab
branch,
Source
plugin
for
Jenkins.
It's
being
used
by
the
gitlab
authentication
plugin
for
Jenkins,
so
this
this
is
kind
of
the
standard
code
path.
I
would
like
to
follow
uniformly
in
in
all
Jenkins
plugins,
including
the
the
git
lab
Jenkins
plugin.
B
So
the
the
idea
behind
this
project
would
be
to
migrate
callers
from
rest,
easy
to
the
git
lab
4J
library,
and
what
that
would
accomplish
would
be
that
we'd
be
following
a
more
standard
deployment.
Paradigm
we
likely
wouldn't
run
into
all
of
the
regressions
and
bugs
that
we
encounter
with
rest
easy.
We
just
encountered
a
new
one
this
week.
In
fact.
B
C
So
so
the
Buzzle
buzzles
comment
changing
from
one
library
to
another.
My
brain
shows
big
signs
that
say:
there's
probably
work
involved
there
and
it's
we
don't
want
to
regress.
So
there's
testing
involved,
there's
familiarization
with
hey.
How
do
you
use
this
thing?
There's
probably
interactive
exploration
needed
very
likely
that
additional
automated
tests
will
need
to
be
added
in
doing
this
because
probably
discover
oh
whoops,
here's
a
piece
of
code
that
called
rest
easy
had
no
interactive
or
no
automated
tests,
those
kinds
of
things
and
major
service
to
the
Jenkins
Community
doing
it.
B
B
Turns
out
this
week
we
just
we
just
upgraded
Jersey
and
Jersey
broke
compatibility
with
rest,
easy,
so
I
filed
this
now
an
issue
filed
with
Jersey
to
restore
rest,
but
I
could
tell
that
the
person
who
is
responding
to
the
issue
was
like.
Oh,
this
is
very
interesting.
You're
using
jersey
with
West,
easy
and
I
think
they
used.
The
phrase
very
interesting
and
I
was
like
in
the
British.
A
A
B
Why
are
you
still?
Why
are
you
still
doing
this
right?
Exactly
exactly
yeah
I
can
Envision
yeah.
This
is
this
is
just
it's
just
a
thorn
in
our
side
for
a
long
time
this
it
made
sense
I
assume
when
this
was
originally
developed,
but
it's
just
no
longer
a
viable
library
to
use
good.
A
Okay,
are
there
questions
from
the
audience
about.
G
It
can
be
a
silly
question,
but
I
just
wanted
to
know
what
are
these
Corner
cases
which
should
be
handled
doing
this
I
didn't
understand
those
authenticated
proxy
servers,
unauthenticated
proxy
service,
all
those
Corner
cases
which
this
project
is
talking
about.
B
A
lot
of
companies
that
use
Jenkins
require
all
communication
to
go
through
a
proxy
server,
and
what
that
means
is
that
the
HTTP
client
Library
needs
to
be
configured
to
use
the
proxy
if
it's
been
defined
by
the
user.
So
we
have,
we
have
a
place
in
the
Jenkins
UI,
where
you
can
specify
a
proxy
server
and
from
there
that
proxy
server
needs
to
be
plumbed
through
into
in
the
in
each
Jenkins
plugin
to
whatever
libraries
are
performing
HTTP
requests,
and
it's
not
just
it's
not
just
the
presence
of
a
proxy
server.
B
Some
of
these
proxy
servers
also
require
Authentication
yeah
and
some
of
them.
You
know
there's
also
like
it
gets
even
more
complicated
because
there's
https
proxies
that
have
TLS
certificates
that
need
to
be
valid,
so
it
can.
It
can
become
fairly
challenging
to
test
some
of
these
cases
and
you
usually
don't
find
out
about
it
and
unless
you
break
it
and
then
some
past,
some
user
of
Jenkins
is
like
oh
well,
I
use,
Jenkins
with
a
TLS
proxy
with
ntlm
authentication
and
that
stopped
working
when
I
upgraded
we've.
A
B
G
Yes,
yeah
somewhat
I,
guess
I'll
understand
it
better
when
I
start
actually
understanding
the
project
in
people's
way.
You.
G
So
it's
related
to
The,
Proposal
Part,
certainly
Proposal
Part.
How
how
do
I
elaborate
these
steps
involved
in
this
project,
like
so
like
how?
How
do
I
explain
it.
A
There
so
did
you
already
pull
the
proposal
template.
Did
you
look
at
it?
Yes,
there
are
some
some
guidance
there
and
so.
G
A
Beginning
you
expose
so
you
do
summary,
and
then
you
expose
what
is
the
problem
that
you're
going
to
solve
with
that
project
and
then
you're
going
to
describe
the
strategy
so
what
you're
going
you're
going
to
do
and
and
so
and
this
you
can
use
whatever
technique?
You
want
to
explain.
E
A
Drawings
some
steps,
so
there
are
various
ways
and
you
can
try
them
out
and
you
submit
your
document
and
say:
do
people
I'm,
I'm
a
very
good
guinea
pig
for
that
because
I
don't
know
the
details
of
the
projects.
If
I
don't
understand
it
quickly,
then
others
will
will
have
problems.
So,
okay,
try
to
explain
it
to
a
TR.
The
good
way
is
you
have
a
a
friend
at
University
or
so,
and
you
have
just
20
minutes
to
explain
to
him
what
you're
going
to
do.
A
And
just
use
use
that,
and
there
is
also
a
part
where
you're
going
to
explain
how
you're
going
to
split
your
time-
okay
during
the
summer,
so
I'm
going
to
do
first
that
I'm
going
to
do
that,
and
this
will
allow
us
to
compare
with
other
proposal
and
say.
Okay,
this
person
has
a
sensible
plan,
has
understood
the
problem.
Okay,.
A
A
A
Did
you
understand
the
problem
or
are
there
other
details,
I
understood
what
what
Mark
and
basil
explained
so
I'm
even
tempted
to
start
looking
into
it
which
I
shouldn't?
But
it's
yes.
G
A
C
After
your,
your,
your
in
your
comment
to
hey
automated
testing
absolutely
and
run
the
run,
the
automated
tests
run
them
as
a
way
to
get
started.
Watch
how
they
behave
on
your
system,
maybe
run
them
in
a
debugger
and
watch
how
they,
how
they
execute.
Certainly
look
at
the
integration
tests
that
are
in
that
plug-in
if
there
are
and
see
how
they
operate.
C
Don't
forget-
and
this
is
the
crucial
one
that
I
tended
to
forget:
I
had
a
bias
towards
test
Automation
and
I
sometimes
failed
to
do
the
interactive
testing
that
would
expose
bugs
that
were
very
obvious
to
me
and
not
valid
I'm,
very
obvious
from
the
user
interface,
but
not
checked
by
automation.
So
it's
not
just
automated
unit
tests
and
automated
integration
tests,
there's
also
an
element
where
the
contributor
here
must
plan
to
do
interactive
exploration
and
testing
interactively
to
be
sure
that
it's
well
behaved.
B
So
Mark
the
the
plug-in
has
integration
tests
that
use
wire,
Mock
and
wiremock
is
a
library
that
effectively
it
it's
a
Bach
http
layer
where
it
expects
a
certain
HTTP
request
and
we'll
provide
a
canned
response
in
lieu
of
a
real
gitlab
server.
That
would
be
they'll
be
doing
real
things
in
the
in
the
back
end.
So
some
challenges,
I,
could
foresee
are
the
input
to
the
to
wire
mock?
Are
you
the
expected
requests?
B
Those
might
change.
This
might
change
slightly
when
you're
switching
from
rest,
easy
to
gitlab
before
J,
without
necessarily
being
wrong.
It
just
might
be
like
putting
arguments
in
a
different
order
or
putting
like
new
lines
after
each
Json
field,
or
something
like
that
you
know
so.
The
the
expected
input
to
the
tests
might
change,
but
not
necessarily
in
a
wrong
way.
B
So
the
test
might
need
to
be
updated
just
to
adapt
to
that
new
style
of
input
and,
like
I
said
it's
all,
it's
all
mock
based,
so
it
really
has
no
bearing
on
whether
it's
going
to
work
in
production
or
not
like
I,
said
I,
don't
think
wire
mock
is
going
to
test
anything
to
do
with
proxy
servers
or
anything
like
that.
That's
all
something
that
could
only
be
tested
interactively
well.
C
B
Has
existed,
hopefully,
thankfully
gitlab
has
a
pretty
stable
versions:
API
I'm,
not
sure
what
version
we're
using
through
rest,
easy,
but
I
think
it's
fairly
recent.
That
would
be.
That
would
be
another
thing
to
look
into,
though,
is
whether
I
actually
don't
remember
whether
gitlab4j
is
using
the
same
version
of
the
API
as
what
we're
currently
using
with
rest,
easy
I
think
it's
probably
the
same
version,
but
they
might
be
our
rest.
B
Easy
logic
might
be
using
an
older
version,
in
which
case,
if
that's
true,
then
upgrading
to
gitlab
for
Jay
would
not
only
be
using
a
more
modern
library,
but
it
would
also
be
using
a
more
modern,
API
endpoint
of
the
gitlab
server
itself,
and
that
could
that
could
require
the
tests
to
be
further.
That
would
require
even
more
updates
to
the
tests.
If
they're,
if
they're
mocking
an
older
version
of
the
API.
A
B
I
tried
to
get
I,
wouldn't
even
bother
trying
to
get
the
tests
working
initially.
I
I
just
go
straight
for
testing
on
a
real
server
and
then
because
a
lot
of
the
challenges
in
getting
the
automated
test,
Suite
working
are
going
to
be
merely
technical,
rather
than
actually
going
like
fixing
real
bugs
like.
B
Ideally,
your
test
Suite
is
going
to
help
you
find
real
bugs,
but
in
this
case
it's
going
to
be
mostly
a
hindrance.
The
test
Suite
is
going
to
be
mostly
just
more
code
that
needs
to
be
adapted
to
this
new
library,
rather
than
a
signal
to
whether
your
production
code
works
or
not.
Unfortunately,
so.
B
Religious
or
or
okay,
somewhat,
okay,
I
mean,
but
also,
even
even
when
they're
only
mocks,
they
are
still
useful
in
terms
of
exercising
the
Java
code.
So,
ideally,
we
wouldn't
delete
them
unless
we
have,
unless
it's
primitively
difficult
to
adapt.
The
mock.
A
G
B
Yeah
there
would
be
more
more
mocks
that
need
to
be
adapted
if,
if
the,
if
the
existing
mocks
are
using,
let's
say
gitlab,
API,
V3
or
something
and
gitlab4j
is
using
gitlab
API
V4,
then
that
would
require
more
changes
to
the
mocks.
I
mean
that's
a
very
easy
question
answer.
We
could
just
go
and
look
at
it.
Look
at
the
code
and
see.
A
We
have
eight
minutes
to
go.
Somebody
who
didn't
speak
yet
is
a
Smith
if
I
pronounce
it
correctly.
Do
you
have
questions
or.
E
Hi
hi
everyone,
no
I,
don't
have
right
now,
like
I
I'm
interested
in
exponential
back
of
my
Jitter
project.
I
started
looking,
but
I
have
not
yet
researched
a
lot
because
I
have
a
job
simultaneously.
So
we've
got
much
time
so
yeah
I
will
pick
up
the
piece
and
okay.
A
F
I
have
another
question:
maybe
the
last
one
I
wanted
to
confirm
the
order
of
things
that
should
be
done
for
the
exponential
backup
and
Jitter
project.
First
I
should
I
should
I
work
for,
should
I
make
the
CLI,
then
stress
testing
framework
and
then
exponential
backup
and
Jitter
in
remote
plugin.
Should
this
be
the
the
Order
of
Things.
B
The
travels
with
that
order
of
things
is
that,
without
a
way
to
demonstrate
the
effectiveness
of
the
change,
it
would
be
unlikely
that
it
would
be.
It
would
be
unlikely
that
it
would
be
a
pull
that
a
pull
request
to
remoting
would
be
merged.
B
If
it's,
if
that
pull,
if
a
pull
request
to
remoting
is
adding
a
Jitter
feature
that
has
not
been
demonstrated
to
make
any
difference
and
it's
creating
new
API
surface
area,
then
it
would
be
unlikely
to
to
be
merged,
so
I
mean
it
would
be.
It
would
be
fine
to
merge
a
remoting
pull
request
that
just
that
just
unifies
the
CLI
with
swarm,
let's
say,
but
in
order
in
order
for
that
to
be
designed,
the
entire
CLI
needs
to
be
thought
through,
even
if
only
part
if
it
is
implemented.
B
So
yeah
order
is
very
tricky.
With
this
project,
I
mean
ideally
the
ideally.
The
best
way
to
start
would
be
to
find
a
way
to
reproduce
this
scalability
problem
and
then
to
kind
of
iterate
from
there
to
find
solutions
to
it
and
then
from
from
there,
even
if,
even
if,
even
if
no
code
change
gets
accepted
into
remoting,
just
having
a
way
to
reproduce,
this
scalability
bottleneck
would
be
a
valuable
contribution
in
enough
itself.
F
So
the
stress
testing
framework
should
do
that,
so
that
so
I
can
demonstrate
if
the
changes
I
am
proposing
will
help
and
will
help
in
making
remoting
better.
B
Yeah
yeah
and
that
I
mean
looking
at
looking
at
order
of
operations
from
a
dependency
point
of
view,
a
major
design
and
testing
dependencies
having
a
way
to
reproduce
this
problem
and
to
see
if
various
Solutions
are
effective
or
not,
and
then
from
an
implementation
point
of
view.
The
first
task
that
I,
the
first
task
from
an
order
of
operations,
point
of
view
is
designing
a
CLI
that
is
intuitive
and
meets
people's
expectations.
I
would
I
would
not
look
at
the
Swarm.
Cli
is
a
good
example.
B
That's
more
a
good
example
of
what
not
to
do,
but
even
because,
even
if
only
part
of
that,
CLI
gets
implemented.
Even
if,
even
if
you
only
implement
retries-
and
you
don't
do
back
off-
you
don't
do
Jitter,
it's
critical
to
design
the
CLI
to
it's
critical
to
design
this,
the
Jitter
and
back
off
parts
of
the
CLI,
because
those
arguments
could
affect
the
naming
of
the
arguments
for
the
parts
that
you
are
implementing.
B
So
API
design
has
to
be
holistic
for
it
for
an
API
to
be
intuitive,
so
I
would
really
start
with
I'll,
probably
start
with
some
kind
of
performance,
testing
or
stress
testing
framework
or
methodology
from
a
design
point
of
view
and
then
from
an
implementation
point
of
view.
I'd
start
with
the
CLI
design,
even
if
even
if
only
part
of
that
design
would
get
implemented.
E
A
We're
three
minutes
from
the
end:
if
we
have
a
short
question
you
we
can
go
ahead.
Otherwise.
G
Go
ahead
can
I
just
get
a
small
sum
up
of
like
from
where
should
I
exactly
start
and
like
how
should
I
go
through
the
project?
If
a
guidance
like
can
be
provided.
C
So
if
I'm
in
a
venture
Venture
how
I
would
approach
it
netra,
so
the
improve
a
plug-in
tutorial
on
jenkins.io
guides
on
some
things
that
you
can
specifically
do
to
improve
that
plugin.
Look
through
that
that,
through
ape
improve
a
plug-in
look
through
that
tutorial,
see
which
of
those
could
be
applied
to
the
gitlab
plugin.
If,
yes,
they've
all
already
been
applied,
great.
C
G
Yeah
we
were
talking
about
the
schedule,
build
modernization
right,
which
is
our
the
tutorial.
C
B
There's
no
real,
there's
no
real
algorithm
for
how
to
implement
a
project
like
this.
You've
just
got
to
rip
out
the
old
code
and
put
in
the
new
version,
and
it
won't
even
compile
right
away
and
you
have
to
get
it
to
compile
it's
going
to
be
kind
of
frustrating
and
then
once
it
compiles
it's
not
going
to
work,
then
you
have
to
get
it
to
work
and
that's
not
going
to
be.
B
Edge
cases
so
I
mean
that's,
that's
essentially
how
the
project
would
go.
You
know
just
rip
out
the
old
library
now
won't
compile
at
all.
Then
you
know
add
the
new
library
still
still
not
compiling,
but
you
know
slowly
convert
every
method,
call
from
the
old
library
to
the
new
and
eventually
after
doing
that,
long
enough,
it'll
compile
but
still
not
work
and
and
then
yeah,
then
from
there
get
it
to
actually
work
in
production,
then
get
the
tests
to
work.
Tests
probably
need
to
be
adapted.
B
So
that's
I
mean
that's
why
this
project
is
is
something
that
has
languished
for
so
many
years
or
months,
because
it's
just
not
the
most.
It's
just
not
the
most
fun
thing
to
do,
but
unfortunately,
software
maintenance
is
full
of
tasks
like
this
that
are
critical
to
the
health.
B
The
long-term
health
and
projects
like
Jenkins
that
have
been
around
for
15
years
tend
to
accumulate
a
lot
of
these
types
of
things,
because
the
longer
that
your
software
is
used,
the
more
of
the
world
around
it
is
changing
and
your
software
needs
to
adapt
I
mean
in
the
1980s.
You
would
never
need
to
change
software
Because,
the
Internet
didn't
exist.
B
You
could
just
keep
it
on
some
old
library
forever,
but
so
now,
now
that
your
software
is
communicating
with
other
software
on
the
Internet,
it's
always
got
to
evolve
and
adapt,
and
that's
that's
more
true
for
15
year
old
software,
like
Jenkins
than
it
is
for
some
newer
projects.
So
it's
part
of
the
blessing
and
the
curse
of
being
an
older
and
popular
software
project.
So
you
end
up
with
a
lot
of
stuff
like
this.
That
needs
to
be
adapted
over
time,
but
it
can
also
be
a
rewarding
Challenge
and
I.
B
You
know
I
find
this
kind
of
work
rewarding
myself,
because
it's
got
a
high
impact
on
a
lot
of
people,
and
it
also
teaches
you
how
to
be
good
at
reading
code,
which
is
in
many
ways
harder
than
writing
code
and
it's
a
valuable
skill
to
learn.
You
know.
I've
I've
definitely
had
a
lot
of
benefit
of
my
career
from
being
able
to
read
other
people's
code
and
understand
it,
and
that's
something
you
have
to
do
a
lot
of
in
this
project.
So
it's
not
all
pain
and
laborious
work.
B
It's
there's
also
a
lot
to
be
learned
and
a
lot
of
a
valuable
real
world
maintenance
experience
to
be
gained.
So,
okay,.
G
And
one
more
like
small
doubt,
this
gitlab
plugin
has
like
around
57
000
installs.
So
does
it
anyway
affect
the
project.
A
A
Will
go
well,
so
this
is
not
something
that
should
refrain
you
to
tackle
it.
Okay,
it's
a
steep
hill
and
there
are
consequences,
but
they're,
also
big
Rewards
of
that,
because
you're
going
to
help
a
lot
of
people
and
and
the
coaching
in
this
project
will
just
make
sure
like
basil
stressed
and
saying
you
need
to
demonstrate
that
there
are
no,
so
no
cue,
but
the
project
needs
to
demonstrate
that
there
are
no
regressions,
that
it
works
as
as
advertised,
and
so
these
are
secure.
A
C
C
We
shouldn't
let
it
paralyze
us,
but
rather
we
admit
what
I'm
doing
matters
and
it
matters
to
50
000
installations,
and-
and
that
is
a
great
thing
to
matter
to
that
many
people
and
you've
got
the
safety
net
of
the
mentors
there
to
help
you,
but
but
you're
your
own
best
safety
net
right
tests
perform
interactive
tests,
check
that
it
behaves
the
way
you
expect
use
a
debugger
to
watch.
It
run.
To
be
sure,
you
know,
what's
going
on,
all
those
things
are
very
healthy,
healthy
responses
to
the
fear
that
you
described
yeah.
B
A
B
A
We're
five
minutes
over
budget,
so
I'm
sorry
to
have
to
interrupt
because
it's
late
in
the
Eastern
hemisphere.
Thank
you
for
staying
that
that
late.
Thank
you.
Thank
you
very
much
for
the
mentors
that
joined
the
call
and
for
taking
the
time-
and
it
was
a
very,
very
interesting
presentation
for
the
contributor
candidates
so
start
working
on
a
proposal
start
to
put
something
on
paper
start
interacting.
A
You
need
to
start
somewhere
and
so
that
we
can
help
you
to
to
improve
and
and
get
ready,
ask
questions
on
on
guitar,
Channel
or
better
on
community.jenkins.io.
A
And
try
to
be
specific
in
your
questions.
The
very
general
questions
tend
to
not
catch
attention
of
people
so
well,
where
should
I
start
I
want
to
do
it,
but
what
do
I
need
to
do?
Oh,
no
make
your
homework,
but
I.
Think
the
people
here
that
that
were
around
the
table
and
I
have
done
that
so
good.
Thank
you
very
much.
Everybody
have
a
nice
rest
of
the
day.
Thank
you
very
much
for
your
involvement
and
don't
forget.
We
have
weekly
office
hours
where
you
can
join.