►
From YouTube: Hacksgiving: Plugin Developer Open Q&A
Description
In this Hacksgiving 2015 session, abayer and a few other contributors participate in an open Q&A session around plugin development.
A
B
B
Find
somebody
who
knows
better
about
testing
than
me
and
get
their
opinion.
That's
my
best
practice.
It's
a
really
really
good
question.
There
is
no
really
well-defined
answer
for
how
to
best
test
plugins
I
know
I'm
pretty
crap
about
the
ones
that
I
do
that,
aren't
especially
the
ones
that
aren't
public.
B
A
A
So
if,
if
you
look
at
the
announcing
you
specifically
Andrew
I
can
look
at
stephens
session
today
or
yesterday,
once
they're
posted
on
YouTube,
they
both
covered
some
testing
using
DJ
unit
rule
Jenkins
rule
which
stands
up.
The
stands
up
sort
of
an
embedded
Jenkins
instance
to
run
integration
tests
against.
We
also
talked
about
the
acceptance
test
harness
which
is
on
the
Jenkins
CI
github
organization,
which
is
more
for
driving.
A
C
So
I
was
muted,
I
yeah,
so
we
did
go
over.
Something
called
the
acceptance
test.
Harness
is
that
this
is
like
your
I
could
very
like
simple.
You
know
just
similar
to
like
a
you
know,
unit
testing
in
like
a
small
type
of
integration
testing.
Now,
however,
there
are
things
like
the
acceptance
test
harness.
Let
me
shirt,
which
is
I,
give
you
go
through
the
wiki
page.
We
kind
of
there's
like
some
videos
on
how
to
kind
of
write
a
unit
test.
A
C
I
think
so,
so
this
is
the
scroll
back
up,
so
this
is
0.
This
is
doing
the
web
client
stuff.
So
this
was
something
that
I
was
going
to
kind
of
show
a
little
bit
by
decided
not
to
it's.
So
this
is
kind
of
like
doing
something
similar.
It
uses.
B
C
C
A
Am
just
for
for
the
folks
on
the
stream
I've
been
keeping
track
of
some
notes
and
some
links
in
the
etherpad,
which
is
etherpad,
OSU
OSL
org,
slash
jenkins,
dash
x,
giving
so
as
we
go
through
some
of
these
wiki
pages
of
adding
them
to
that
and
those
I'm
adding
to
the
hacks
giving
page
at
the
end
of
the
day
as
well.
And
so,
if
you
miss
something
is
no
big
deal
it'll
be
in
the
notes.
A
The
what
might
be
a
what
might
be
something
interesting
to
go
through
is
the
there's
a
couple
of
like
reports
and,
I
would
say,
shared
resources
that
we
have
running
and
Jenkins
on.
Jenkins
I
mean
the
extensions
points.
Paged
is
generated
automatically
the
update
Center
generated
automatically.
There's
that
plug-in
compat
job.
That's
running
around
I
think
there's
a
lot
of
these
things
floating
around
in
the
Jenkins
infrastructure
that
can
be
useful
to
plug-in
developers
but
are
somewhat
hidden.
A
B
B
B
And
where's
that
plugins
too
many
plugins.
B
C
So
I
think
this
is
actually
just
running
the,
so
the
acceptance
has
harnessed
what
it
does
is
on
it.
It
does
again
the
kind
of
likely
click
interaction
for,
like
a
specific
I,
think,
there's
like
a
specific
set
of
plugins
in
there.
That
lets
see
like
there's
the
subversion
plugin,
there's,
probably
like
the
get
plug
and
a
few
other
ones.
They
just
do
the
like
your
basic.
You
know
you
I
clicking
and.
C
A
C
C
B
With
red
lasers,
it
looks
like
it's
got
some
logic
near
for
actually
testing
the
plugin.
That's
kind
of
nice
right.
C
C
A
C
Would
recommend
adding
them
to
the
acceptance
test
harness
repository,
yeah
I
did
oh
go
ahead,
so
I
was
also
going
to
mention
too
that
this
there
are
some
tests
in
here
that
actually
do
things
more
detailed.
So
there's
like
docker
containers
that
spin
up
ldap
environment,
so
you
can
kind
of
see.
You
know
you
know
that
it
has
like
a
very
basic
ldap
instance,
and
you
know
we
test
against
that.
B
He's
a
strange
man,
he
is
yeah,
so
I
guess
that's
something.
I
should
have
looked
into
more
before
we
did.
This
I'm
gonna
put
that
on
my
list
of
things.
I
need
to
dive
into
more
that
have
really
involved
since
I
was
last
deeply
involved,
with
the
project
day
to
day,
because
yeah
I
mean
one
thing
that
I
think
has
always
been
a
problem
with
Jenkins
plugin
and
core
testing
is
that
we
have
a
very
little
actual
unit
tests,
especially
in
core.
It's
almost
all
test
harness
stuff
and
I.
B
D
B
And
so
this
is
me
speaking
as
if
I
have
authority,
anybody
else
can
contradict
me.
I'd
say
that
within
the
plug-in
itself,
focus
on
testing
your
functionality,
think
of
it
as
unit
tests,
even
if
it
is
really
true
unit
tests.
Since
you
are
running
it
in
a
Jenkins,
will
context
etc,
and
they
could
be
acceptance.
Tests
harnessed
as
the
integration
testing
as
the
making
sure
that
your
plugin
actually
works
in
a
specific
version
of
Jenkins
etc.
B
D
Acceptance
tests
can
also
they
can
also
test
why
class
loading
behaviors,
which
currently
Jenkins
rule,
doesn't
really
handle
properly,
and
it's
also
under
for
testing
UI
controls
call
there.
So
there
are
a
few.
There
are
a
few
kind
of
corner
cases
where
acceptance
tests
can
probe
things.
You
can't
really
get
at
with
Jenkins
rural
functional
tests,
yeah.
B
I
know
I
have
tended
to
avoid
the
the
HTML
unit
stuff
and
the
screen
scraping
and
round
trip
configuration
stuff
when
I've
written
tests,
because
it's
kind
of
like
well
if
it
works
when
I
try
it
by
hand
I'm
not
really
going
to
worry
about
whether
it
works
in
the
automator
context.
There's
too
many
other
things
about
the
actual
functionality
that
I
care
more
about
I'm.
B
D
D
I'm
just
saying
first
things
it.
Basically,
anytime,
you
have
a
configuration
forum,
it's
good
practice
to
at
a
corresponding
configuring
trip
test.
This
is
relatively
quick
to
run.
It
doesn't
require
you
know
any
external,
selenium
setup
or
anything
like
that
can
be
right,
part
of
the
plug-in
source
base
and
it
will
catch
all
sorts
of
regressions
and
your
usage
of
form
controls
and
that
sort
of
thing.
So
it's
a
relatively
cheap
and
effective
way
to
prevent
things
from
going
wrong,
especially
if
you're
doing
anything.
D
B
So,
jumping
away
from
the
testing
for
a
moment,
the
reason
why
the
exceptions
points
page
is
my
favoritest
thing
ever.
Is
this
the
fact
that
not
only
does
it
lists
all
the
extension
points,
but
you
can
find
their
frickin
implementations,
which,
for
me
is
just
huge,
because
I
can
figure
out
what
is
doing
something
similar
to
what
I'm
don't
want
to
do?
What's
where's
an
implementation
of
an
extension
point
that
I
no
I
want
to
extend,
but
don't
really
know
what
that
means
or
know
what
the
code
really
would
look
like.
B
D
You
know
there's
some,
but
I
would
I
do
I
mean
this
is
great.
This
is
perfect
for
finding
extension
points
specifically,
but
if
you're
just
interested
in
code
patterns
generally,
it's
possible
to
add
a
carefully
constructed
URL
to
your
browser
search
bar,
so
that
if
you
just
go
to
the
search
bar
and
github
tab,
and
then
you
type
in
some
class
name
or
distinctive
function,
name
or
something
like
that,
it
will
immediately
do
a
github
search
across
all
of
Jenkins.
Ci
right
include
cloudbees.
Repos
too
could.
D
D
D
If
you
take
the
last
link
there
and
delete
this
some
class
static
method
and
just
keep
the
rest
of
that
URL
and
make
em
you
can
create,
am
and
replace
it
with
a
think
%
s
or
something
like
that,
then
you
can
create
a
browser
search
shortcut
which
is
right.
It's
a
few
minutes
to
do
and
it
pays
off
many
many
times.
A
B
Will
have
to
set
that
up
because
yeah
that
definitely
does
seem
useful
yeah.
So
one
question
that
nobody's
asked
that
I'm
going
to
answer
right
now
is:
should
I
write
a
new
plug-in
for
this
thing
and
my
answer
is
going
to
be
probably
not.
B
Then,
yes,
obviously
a
new
plug-in
if
it's
a
new
space
or
if
it's
supporting
a
new
mic
like
it
makes
sense
to
if
there's
a
new
code
coverage
tool
to
have
a
new
code
coverage
plugin.
But
if
your
functionality
overlaps
with
another
plugin,
see,
if
you
can
combine
your
plugins
see
if
you
can
find
a
way
to
work
with
them,
the
whoever's,
the
existing
maintainer
or
if
there
isn't
one
ask
nicely
and
in
on
the
dev
list,
and
you
can
probably
adopt
it,
ought
to
see
if
you
can
meet
your
needs
within
the
existing
plug.
A
Think
the
the
workflow
sweet
that
that
Jessie's
been
working
on
is
probably
one
of
the
best
examples
of
this
to
where
you
know,
there's
there's
workflow
common
I
think
it
is
and
there's
sort
of
a
base
set
of
plugins,
and
you
know
instead
of
what
we
used
to
do
save
four
years
ago,
where
there'd
be
the
gift
plugin,
which
had
every
single
thing
under
the
Sun
not
even
touch
get
inside
of
it.
A
Now
we
have
the
git
client,
plugin
and
there's
specific
github
plugins,
that
that
tailored
to
specific
functionalities
and
from
my
perspective
and
Jesse
you're,
definitely
more
experienced
in
this
area
than
me.
I
find
that
the
the
problem
is
not
necessarily
the
number
of
plugins.
The
problem
is
when
you
have
two
plugins,
which
are
mostly
overlapping
that
have
wildly
divergent
you.
B
So
in
that
new,
the
cloud
well
now
this
is
an
old
man
yells
at
Club.
This
is
a
other
variant
of
the
theme
this
is
the
dear
mr.
president.
There
are
too
many
states
these
days,
but
no
I
think
that
the
the
move
to
a
library
for
common
functionality
in
a
thematic
area
is
a
really
good
thing.
B
That's
definitely
fits
with
some
of
what
I'm
talking
about
where
why
it
doesn't
make
sense
to
reinvent
the
wheel
for
get
in
five
different
plugins
that
are
all
doing
where
were
they
all
have
may
have
twenty
percent
that's
different,
but
they
have
eighty
percent,
that's
the
same,
but
still
even
then
we
have
too
many
plugins
plug
and
discovery
as
hard
as
I'm
sure
everybody
knows,
and
we
still
end
up
with
that
overlap
and
duplication
so
think
hard
before
you
actually
do
your
own
plugin,
there's,
probably
a
plugin.
B
B
B
B
B
A
B
D
D
Basically
what
you
need
to
do
and
in
the
simplest
cases,
is
update
the
core
dependency
and
either
switch
to
some
newer
api's
or
stop
using
some
deprecated
api's.
I
mean
the
the
single
most
common
thing
is
just
that:
there's
a
more
general
supertype
for
workflow
jobs
and
runs
than
is
true
for
violin.
D
B
B
General,
it's
a
good
idea
to
go
as
far
up
the
inheritance
tree
as
you
can
before
your
before
your.
It
object.
Yes,
yeah
just
just
just
as
and
it's
I've
always
been
an
abstract
builder
project
guy,
because
that's
generally
what
I've
had
to
worry
about,
but
then
I
will
run
into
something
where
it
actually
comes
from
somewhere
else,
and
it
just
gets
confusing
so
yeah.
If
you
can
use
run
and
you
can
use
job
use,
running
job.
D
Yeah,
that's
that's
the
most
common
thing
and
then
and
then
typically
what
happens
is
you
make
those
substitutions?
And
then
you
see
what
doesn't
compile
and
then
you'll
see
some
little
things
like
Oh.
Your
plug-in
was
assuming
that
could
call
a
method
to
get
the
bill,
eat
the
Vino
door,
the
SCM
that
something
checked
out
or
wear
something
built,
and
then.
D
And
then
there's
there's
a
section
dealing
with
data
binding.
This
is
not,
strictly
speaking,
workflow
specific,
it's
stuff.
You
ought
to
do
anyway,
but
it
can
become
mandatory
if
you
want
Rick
flow
compatibility,
so
basically
just
cleaning
up
all
the
form
bindings
to
not
use
any
tricks
and
to
use
consistent
patterns
everywhere,
so
that
you're
following
conventions
for
everything.
There's
a
one-to-one
mapping
between
fields
and
your
configuration
form
and
getters
near.
B
D
Yeah,
that's
the
recommendation.
That's
nice
anyway,
yeah,
because
if
you
want
to
introduce
new
optional
properties
in
the
future,
then
you
just
have
to
add
the
setter
and
you
don't
have
to
do
the
little
dance
that
people
did
in
the
past.
The
sequence
of
12
different
constructors,
11
of
which
are
deprecated
yeah.
B
D
So
those
are
the
probably
the
two
biggest
things
and
then
for
particular
kinds
of
integrations.
You're
doing
there
are
other
little
details
that
you
need
to
pay
attention
to
now,
I'm
well.
I
guess
I
should
say
for
build
steps
and
build
wrappers,
the
the
biggest
change
which
the
biggest
change
for
some
plugins
for
some
plugins.
You
don't
have
to
do
anything,
but
the
biggest
requirement
is
that
any
state
that
you
have
needs
to
be
safely
serializable
so
for
build
steps.
D
Usually
this
doesn't
really
come
up
because
it's
expected
to
be
more
or
less
instantaneous,
but
for
build
wrappers.
This
is
most
of
the
work
and
doing
conversion
in
most
cases,
because
you,
because
a
a
build,
might
start
and
run
the
opening
block
of
the
build,
wrapper
and
then
taken
three
starts
and
then
and
then
it
comes
back
up
and
you
need
to
get
all
of
your
state
back
exactly
the
way
it
was
so
you
can't
be
holding
open,
socket
connection
who
are
stuff
like
that.
B
D
You
can
add
your
own
custom
step,
I
kind
of
recommend
people.
Don't
if
that,
if
there's
not
any
other
reason
to
do
it,
then
don't
do
it
and
just
wait
for
Chris,
K
and
I
to
do
Jenkins,
299,
22
I
just
put
the
link
in
IRC,
which
would
do
that
automatically
for
everybody's
plug-in
without
out
your
without
your
plug-in
needing
to
have
any
workflow
specific
dependencies.
D
B
It's
I
know:
we've
we've
had
various
chats
over
the
last
couple
years
regarding
figuring
out
how
to
unify,
or
at
least
stop
the
confusion
being,
quite
so
bad
between
job
dsl
and
workflow.
Specifically,
where
there's
did
at
first
glance,
it
seems
like
they're
the
same
thing:
they're
really
not,
but
there's
enough
overlap
in
vocabulary
shall
we
say
or
or
meaning
that
it
feels
like
a
common.
A
common
way
to
refer
to
things
would
be
good,
especially
if
we
can
have
that
getting
pushed
from
the
plug
inside.
B
D
The
idea
would
probably
be
to
have
some
sort
of
standard,
simple
annotation,
that
core
and
plugins
could
all
use
to
to
define
script
friendly
names
for
different
things.
Well,.
B
Plug
out
guys
plugins
exit
through,
if
that's
something
you
want
Jenkins
2992
to
vote
for
it,
because
I
can
only
vote
once
unless
I
create
a
new
user.
It's
not
fair.
Costco
has
like
10
users
on
JIRA.
You
could
be
able
to
vote
up
anything.
It's
true
now
that
I
think
that
would
be
really
nice,
because
better
supporting
workflow
and
better
supporting
job
dsl
I
think
is
the
way
the
plugin
should
be
going.
B
Workflow
looks
like
it's
going
to
keep
growing
as
a
major
way
to
be
running
jobs
and,
alongside
that
job
dsl,
I
know
that
there's
people
who
are
already
using
job
dsl
in
combination
with
workflow
and
I,
swear
by
job
dsl
for
managing
massive
arrays
of
jobs
for
massive
arrays
of
branches.
That
may
differ
just
enough
that
you
can't
use
something
like
the
workflows,
multi-branch
logic.
B
Your
or
it's
common
vocabulary,
I
think,
is
the
main
thing.
It's
that
they
be
job.
Dsl
does
not
replace
work.
It's
not
replaced
by
workflow.
Some
of
what
I
personally
have
used
job
dsl
for
can
be
done
by
workflow,
probably
better,
but
that's
more
that
the
jobs
that
I'm
either
the
way
that
my
jobs
are
set
up
could
be
better
done
than
workflow
and
job
dsl
is
descriptive
rather
than
prescriptive.
So
it's
just
saying
what
are
your
jobs
right,
yeah.
D
If
there's
overlap
in
this
sense
that
certain
kinds
of
advanced
job
configurations
or
job
chains
were
always
too
awkward
to
express
using
the
GUI,
and
so
one
solution
to
that
is
to
use
job
dsl
and
physically
create
the
same
jobs
you
had
before,
but
from
script,
and
workflow
provides
a
another
way
of
doing
that.
Where
that
the
script
is
the
runtime
representation
rather
than
a
static
representation
of
jobs,
but
then
there's
a
whole
bunch
of
other
uses
of
top
dsl
that
are
pretty
different
from
that.
The
letter
quite
complimentary.
A
Jessie
I'm
kind
of
curious,
so
we've
done
a
lot
of
things
differently,
with
workflow
I'm
kind
of
curious.
D
D
D
A
A
That's
all
like
it
doesn't
make
any
sense
to
me
for
you
to
write
that
twice
to
have
something
show
up
on
Jenkins
that
I,
oh,
but
as
a
matter
of
incorporating
that
content
when
we
generate
the
site.
That
would
make
a
lot
of
sense
to
me
and
I
think
would
be
a
great
experience
for
plug-in
developers
like
you
just
manage
all
of
your
plug
documentation,
just
as
you
know,
mark
down
in
your
repository
as
per
normal
and
then
that
just
gets
slurped
in
and
parented
under.
This
is
this?
A
D
A
A
A
B
C
B
You
Christopher
asked
he's
wondering
if
there's
a
way
to
improve
and
encourage
feedback
between
plug-in
users
and
developers.
That's
a
really
good
question.
B
B
We
go
find
a
plug
in
to
plug.
In
there
we
go,
we
could
tell
installation
numbers,
but
not
necessarily
usage,
I.
Think
there's
some
cheating
that
you
can
do
with
some
early
in
the
usage
data
for
some
plugins.
If
they
have
custom
job
types,
we
can
actually
tell
how
many
job
jobs
exist
of
that
custom,
job
type,
but
otherwise
yeah
it's
it's.
B
And
it's
not
always
easy
to
monitor
JIRA
and
yeah
I.
Don't
know
I'd
like
to
have
an
answer
for
that
I.
Have
anybody
has
any
suggestions
for
how
we
can
better
get
feedback
from
users
about
their
usage
of
plugins
and
I'd
love
to
hear
it,
but
that's
probably
one
of
those
unsolvable
problems
in
a
lot
of
ways.
B
So
we've
had
discussions
in
the
past
about
this
kind
of
thing
and
I
know
Tyler's
done
some
work
along
those
lines,
but
that
was
years
ago
and
they
never
figured
out
what
to
do
with
it.
I
guess
and
I.
Don't
think
it
ever
had
a
large
enough
a
set
of
input,
because
the
reason
why
we
can
get
this
insulation
state
is
because
it's
not
self-reported
it's
automated.
B
A
Yeah,
so
on
the
on
the
Jenkins
page,
like
Jake
at
Sierra
org,
when
you
click
into
a
changelog
and
part
of
what
I
think
has
been
the
problem
with
this
form
of
feedback
is
that
it
has
been
so
hidden
there's.
You
know
a
means
to
rate
a
Jenkins
core
releases,
and
you
know
we
might
get
20
or
30
ratings
for
each
release,
which
is
what
but
I
for
plugins.
A
There's
no
such
mechanism
right
now
and
Gus
who
I've
been
working
with
to
come
up
with
some
new
concepts
and
wireframes
for
a
revamped
Jenkins,
iOS
8.
He
has
been
that
I
would
say,
adamant
about
providing
some
sort
of
/
plugin
review
mechanism,
I've
been
on
the
on
a
much
more
skeptical
side
of
the
fence
in
that
I
personally,
don't
find
you
know
app
store
style
or
Yelp
style
reviews
very
useful
in
the
context
of
a
plugin,
because
a
you
know
a
plus
one
doesn't
tell
me
much
if
it's
applied
to
a
plug-in.
A
It
may
tell
me
a
lot
if
it
applies
to
a
plug-in
release
and
it's
a
very
sort
of
course
level
of
feedback.
So
there's
I
definitely
agree
with
your
your
desires,
Chris
on
I'm,
getting
better
feedback
mechanisms
from
plug-in
users
to
plug-in
developers
and
there's
not
been
much
that
I've
seen.
That's
been
really
interesting,
thus
far.
A
You
know
you
might
get
like
500
reports
or
error
reports
or
something
like
that,
but
getting
to
understand
how
users
are
using
plug-in
or
whether
functionality
has
been
incorrect
for
them
or
whether
they're
focusing
on
different
different
functionality
in
your
plugin.
Then
you
might,
you
might
expect.
B
It
really
would
have
to
be
more
specific
to
a
single
plugin
if
we
wanted
to
get
that
kind
of
more
granular
usage
data,
again
still
aggregate
to
say
well
what
life
like
Glen
Christopher
was
mentioning
the
context
of
the
android
plug-in.
What
permutations
of
versions
and
platforms,
toot
cetera,
are
being
used
so.
A
A
A
There
might
be
something
interesting
we
could
explore
like
if
I
gave
you
a
new
extension
point.
That
said,
you
know
similar
to
the
the
graphite
metrics
framework.
If
I
could
say
you
know
when
this
functionality
is
being
used
incremental
counter
or
something
like
that,
and
that
data
gets
sent
up
to
Jenkins.
If
the
users
opted
in
to
send
that
anonymous
usage
data
and
plug-in
developers
could
start
to
instrument
their
own
plugins,
and
you
know
if
you're.
A
B
D
B
It
looks
like
the
usage
statistics
is
just
a
page
decorator,
there's
nothing
pluggable
in
it
right
now,
but
we'd
have
to
really
think
about
what
we
couldn't.
I
I
would
not
be
comfortable
just
adding
an
extension
point
to
say:
okay
now
this
is
in
there
I
think
we'd
want
to
have
specific
call-outs
for
opting
in
for
each
plug-in
since
core
it's
more
established,
but
in
more
general,
but
while
the
with
the
plugins
that
could
be
a
lot
more
invasive.
A
A
Yeah
there
was
a
lot
of
a
lot
of
fun
discussion
on
the
mailing
list
that,
like
escape,
said
please,
let's,
let's
address
this
in
Jenkins
ax,
3,
dot
0,
but
like
pie
in
the
sky,
really
optimistic
improvements
that
we
can
make
to
to
the
plug-in
ecosystem.
Since
we're
on
the
subject
with
the
the
usage
data
and
I'm
wondering
if
there's
other
cool
things
that
that
would
be
fun
to
talk
about,
storage
back
end
was
one
that
na
you
brought
up
yeah.
B
Short
back
end
is
my
hobby
horse.
My
windmill
to
tilt
at
that
have
some
kind
of
probably
optional
way
to
store,
build
results.
Test
results
the
large-scale
generally
fairly
structured
data,
so
that
you
can
actually
query
it
in
a
meaningful
way,
because
I've
seen
too
many
people
try
to
use
the
Jenkins
API
as
a
way
to
do
querying
about
test
results
and
things
like
that
for
dashboards
and
slaps.
B
Then,
when
you've
got
five
thousand
tests
in
a
run
and
you've
got
16
matrix
runs
as
part
of
that,
and
you
run
it
twice
a
day
and
there's
80,000
other
builds
well
yeah
and
what
you
get
to
that
point
Jake.
It
just
eventually
says
no
I'm
going
to
take
a
while
beyond
bugs
that
have
been
found
and
fixed
in
terms
of
annoying
locks,
and
things
like
that.
B
I
mean
it's
unless
it's
all
in
memory,
which
it
can't
be,
it's
going
to
always
take
to
some
time
to
to
gather
historical
data
and
trends,
and
that
kind
thing
so
some
way
to
offload
that
that's
actually
more
native
to
Jenkins
and
not
like
something
like
the
del
fiore.
Analyzers
attempt
to
do
things
like
that.
That
is
a
good
idea,
but
it
ends
up
kind
of
going
a
little
batty
with
performance
issues.
Sometimes
I
would
be
quite
nice,
so.
A
When
you,
when
you
first
talked
about
this
on
the
on
the
mailing
list,
yes,
the
first
thing
that
popped
up
into
my
head
was
actually
a
very
different
problem
to
be
solved
around
that
to
our
Isaac.
You
know
one
of
the
big
challenges
in
having
any
kind
of
highly
available
or
with
gannon
chicken.
This
cluster
is
that
you
know
plugins
everything
that
goes
into
Jenkins
home
and
mrs.
around
with
a
bunch
of
the
files
or
Jenkins
on
behalf
of
plugins
touches.
A
lot
of
files
to
her
I
was
thinking.
You
were
going
down.
A
The
route
of
like
abstracting
me
saying:
Jenkins
plugins,
you
don't
get
to
touch
disc
anymore.
I
will
give
you
a
storage
API.
If
you
need
to
persist
something
and
then
Jenkins
itself
would
also
use
that.
So,
if
I
wanted
to
implement,
you
know
a
gfs
storage
layer
yeah
I
would
be
able
to,
because
I
would
know
that
nothing
is
going
to
use
syscalls
to
get
past
me
now.
B
That
that
is
what
I
would
like
to
see,
but
various
people
scared
me
off
of
that
one
I,
implying
that
the
viability
of
that
was
somewhere
between
mill
and
ultra
mill.
So
so
part
of
I
wanted
to
target
that
build
results
and
test
results.
Specifically.
Is
that
that's
a
something
that
is
more
atomized?
It's
more
self-contained?
B
It
seemed
like
a
good
venue
for
that,
even
on
its
own
would
provide
value,
even
if
we
couldn't
take
it
further
to
the
level
that
you're
talking
about,
but
it
wouldn't
be
a
good
proof
of
concept,
but
I
need
to
pick
that
back
up
and
start
thinking
about
that.
More.
B
A
B
B
D
B
Yeah
it
cwise
I,
don't
know
you
eyes,
I
part
of
why
I
love
jenkins
when
I
got
started
with
it.
Oh
so
many
years
ago,
was
that
I
didn't
have
to
think
about
a
UI
I
could
just
go.
Oh
if
I
specify
some
things
here,
then
it
there's
a
oh
cool.
It
just
shows
up,
of
course,
that
can
lead
to
things
like
the
throttle.
Concurrent
builds
plugin
UI,
which
never
did
anything
the
way
I
wanted
it
to,
but
still
I.
A
There's
this
awkward
blurring
of
the
lines
between
the
presentation,
layer
and
the
backend
and
two
from
my
perspective,
jelly
is
exacerbating
some
of
that
problem
for
the
plugin
developer,
to
where
there's
not
a
clean
separation
between
what
you
would
write
in
in
jelly
and
what
you
know
if
I
were
building
a
new
web
application.
I
would
just
write
some
some
backbone
modules
of
JavaScript
or
something
like
that.
I'm
not
sure
I
understands.
D
And
there's
just
a
lot
of
there's
just
a
lot
of
places.
We
are
not
given
a
choice.
The
API
states
that,
in
order
for
your
plugin
to
implement
a
certain
extension
point,
you
are
given
the
opportunity
to
inject
a
block
of
HTML
into
you
know
that
must
consist
of
table
rows
into
the
following
location
and
in
order
to
interact
with
anything
any
other
plugins
and
features
it
has
to
use
the
following
set
of
of
controls
in
lib
form
or
whatever
in
a
particular
way.
D
So
I
mean
it's
not
about
jelly.
It's
about
the
whole
way
in
which
static
HTML
pages
are
hosed
from
bits
and
pieces
of
plugins
when
the
application
is
a
whole,
that's
really
hard
to
leave,
that's
not
something
you
can
just
change
overnight
grant,
so
you
I
mean
your
plugin
is
free
to
use
any
kind
of
web
framework.
You
want
four
pages
that
it
completely
owns.
D
You
know,
if
you
just
just
have
you,
you
would
have
a
main
panel
of
a
side
panel
may
be
optionally
and
for
the
rest
of
it
you
can
do
whatever
you
think
is
appropriate,
but
most
plugins
aren't
in
that
position.
They're
trying
to
contribute
something
to
an
existing
page,
so
there
has
to
be
some
API
for
what
they
can
contribute
and
the
API
that
we
all
da
p
eyes.
We
have,
or
based
on
of
HTML,
fragment
contribution,
rain.