2. Making the Switch: One Team's Story of
Adopting JIRA, FishEye, Eclipse and
Brian Tarbox, ! ! Principal Staff Engineer
Heather Mardis, ! ! Build & Release Engineer
Motorola
2
2
5. About Us
• Motorola, Video On Demand
• Distributed Team
• Boxborough, MA US
• Beijing, China
• Madrid, Spain
• Natanya, Israel
• ~100 engineers
• ~15 doing java
3
3
6. About Us
• Motorola, Video On Demand
Motorola Video On
• Distributed Team Demand magic
• Boxborough, MA US happens here…
• Beijing, China
• Madrid, Spain
• Natanya, Israel
• ~100 engineers
• ~15 doing java
3
3
10. Takeaways
• Setup Perforce depot structure like JIRA Projects
• JIRA/Perforce/FishEye integration tips
• Convert to JIRA using Pilot Projects for path finding
4
4
11. Takeaways
• Setup Perforce depot structure like JIRA Projects
• JIRA/Perforce/FishEye integration tips
• Convert to JIRA using Pilot Projects for path finding
• Tool Integration Benefits
4
4
12. Takeaways
• Setup Perforce depot structure like JIRA Projects
• JIRA/Perforce/FishEye integration tips
• Convert to JIRA using Pilot Projects for path finding
• Tool Integration Benefits
• Identify your greatest pain points
• What can my tools do to help?
4
4
13. Background
• JIRA 4.0.x • Atlassian Connector for Eclipse JIRA
2.1.0V20100408
• Upgraded easily from 3.13.x
• Once the plug-ins were supported • Mylyn
• FishEye 2.0.2
• Provides integration with perforce
• Perforce 2009.2
• Eclipse 3.5, Galileo
• p4wsad 2009.3 perforce plug-in and
Mylyn connector
5
15. JIRA Adoption Lessons
• Stay close to out of the box
• More fields/transitions isnʼt always better
• Simplifies upgrades
6
16. JIRA Adoption Lessons
• Stay close to out of the box
• More fields/transitions isnʼt always better
• Simplifies upgrades
• Plug-ins are valuable
• Large Plug-in universe available
6
17. JIRA Adoption Lessons
• Stay close to out of the box
• More fields/transitions isnʼt always better
• Simplifies upgrades
• Plug-ins are valuable
• Large Plug-in universe available
• Convert to JIRA using Pilot Projects
• Gather user feedback
• Establishing personal relationships between admin/developer simplifies fact finding
• What works, what doesnʼt, what I want to do is…
6
21. FishEye and Perforce
• Six years of p4 history, too much to slurp by depot
• By project/branch reduced overhead
• Allowed removing uninteresting branches
• Restarted, remember to clean up cache of old stuff
8
22. FishEye and Perforce
• Six years of p4 history, too much to slurp by depot
• By project/branch reduced overhead
• Allowed removing uninteresting branches
• Restarted, remember to clean up cache of old stuff
8
23. FishEye and Perforce
• Six years of p4 history, too much to slurp by depot
• By project/branch reduced overhead
• Allowed removing uninteresting branches
• Restarted, remember to clean up cache of old stuff
• FishEye and LoC can
provide risk assessment
8
25. Tools Integration Issues
• Learn the capabilities of the tool you
live in
• your Java/Groovy/Scala editor, e.g.
Eclipse
9
26. Tools Integration Issues
• Learn the capabilities of the tool you
live in
• your Java/Groovy/Scala editor, e.g.
Eclipse
• Find the integration points between
your pluginʼs plugins!
• Mylyn – Eclipse – Perforce – JIRA
• Some issues do arise
• Our BUG entry screen requires filling in a
custom field, not supported from the JIRA/
Eclipse integration
• We are contemplating a schema change to
address it
9
27. Tools Integration Issues
• Learn the capabilities of the tool you • Identify your greatest pain points
live in • lack of distribution of domain knowledge
• your Java/Groovy/Scala editor, e.g. • see if your tools can be flexed in a way to
Eclipse solve them
• Mylyn as a training tool
• Find the integration points between
• Preserve, then share context knowledge in the
your pluginʼs plugins! code base
• Mylyn – Eclipse – Perforce – JIRA
• Some issues do arise
• Our BUG entry screen requires filling in a
custom field, not supported from the JIRA/
Eclipse integration
• We are contemplating a schema change to
address it
9
28. Tool Integrations
eclipse IDE
Eclipse
workspace
p4
perforce
Fi
sh
Ey
e
p4
FishEye
10
10
29. Using Eclipse with JIRA, Mylyn
• Eclipse has become our standard editor
• Itʼs a powerful editor by itself but really shines with friends
• Combining Eclipse, JIRA and Mylyn results in a game changing
development environment
• Use Your Exo-Cortex!
11
11
30. Using Eclipse with JIRA, Mylyn
• Eclipse has become our standard editor
• Itʼs a powerful editor by itself but really shines with friends
• Combining Eclipse, JIRA and Mylyn results in a game changing
development environment
• Use Your Exo-Cortex!
11
11
31. Just Eclipse
eclipse IDE
Eclipse workspace
12
12
34. Just Eclipse
eclipse IDE
Eclipse
workspace
Context and optionally task
to disk
Mylyn task to disk or JIRA
Mylyn Context
15
15
35. Crashworthiness
• Prior to the 1960s automobiles (in the US) were not required to be
crashworthy.
• Crashing was not considered a standard “use” of a car, so how they
behaved in a crash “didnʼt matter”
16
16
36. Crashworthiness
• Prior to the 1960s automobiles (in the US) were not required to be
crashworthy.
• Crashing was not considered a standard “use” of a car, so how they
behaved in a crash “didnʼt matter”
• In 1965 the US Court of Appeals ruled:
16
16
37. Crashworthiness
• Prior to the 1960s automobiles (in the US) were not required to be
crashworthy.
• Crashing was not considered a standard “use” of a car, so how they
behaved in a crash “didnʼt matter”
• In 1965 the US Court of Appeals ruled:
• “While automobiles are not made for the purpose of colliding with
each other, a frequent and inevitable contingency of normal
automobile use will result in collisions and injury-producing impacts.”
16
16
38. Crashworthiness
• Prior to the 1960s automobiles (in the US) were not required to be
crashworthy.
• Crashing was not considered a standard “use” of a car, so how they
behaved in a crash “didnʼt matter”
• In 1965 the US Court of Appeals ruled:
• “While automobiles are not made for the purpose of colliding with
each other, a frequent and inevitable contingency of normal
automobile use will result in collisions and injury-producing impacts.”
• What the heck does that have to do with Eclipse?
16
16
40. Mylyn – a task view for Eclipse
Being
interrupted
is
a
standard
use
of
an
editor
just
like
crashing
is
a
standard
use
of
a
car!
17
17
41. Mylyn – a task view for Eclipse
Being
interrupted
is
a
standard
use
of
an
editor
just
like
crashing
is
a
standard
use
of
a
car!
Mylyn
organizes
what
you
are
doing
into
tasks
and
contexts
17
17
42. Mylyn – a task view for Eclipse
Being
interrupted
is
a
standard
use
of
an
editor
just
like
crashing
is
a
standard
use
of
a
car!
Mylyn
organizes
what
you
are
doing
into
tasks
and
contexts
When
you
switch
tasks,
Mylyn
switches
your
Eclipse
context
for
you
17
17
43. Local and Repository Tasks
You
can
create
local
tasks
that
live
on
your
machine
and
are
not
shared
Or
you
can
create
tasks
in
your
JIRA
repository
and
these
can
be
shared
18
18
44. JIRA Tasks
Standard
connec0on
to
your
JIRA
repository
Lots
of
op0ons,
including
automa0c
0me
tracking
19
19
51. Switching Tasks is the real payoff
This
is
the
task
we’ve
been
working
on
24
24
52. Switching Tasks is the real payoff
This
is
the
task
we’ve
been
working
on
This
is
the
task
we’re
switching
to
24
24
53. Just Eclipse
eclipse IDE
Eclipse
workspace
Mylyn Context
Mylyn Task
25
25
54. Just Eclipse
eclipse IDE
Eclipse
workspace
Load new task
Mylyn Context
Mylyn Task
25
25
55. Just Eclipse
eclipse IDE
Eclipse
workspace
Get context for that task Load new task
Mylyn Context
Mylyn Task
25
25
56. Load classes, methods for that context
Just Eclipse
eclipse IDE
Eclipse
workspace
Get context for that task Load new task
Mylyn Context
Mylyn Task
25
25
57. Switching tasks switches context
By
switching
tasks
we
get
a
different
set
of
open
files,
along
with
the
memory
of
which
methods
we’d
been
working
on
26
26
58. Sharing Contexts
If you create your tasks as
JIRA Tasks, and save your
Context in the Task, then others
eclipse IDE
Eclipse can share your Task Context
workspace
27
27
59. Integrating Mylyn With JIRA
Instead of creating a task, use a query to get tasks
directly from the JIRA repository
28
28
60. Integrating Mylyn With JIRA
Instead of creating a task, use a query to get tasks
directly from the JIRA repository
28
28
61. Finding the JIRA task
The query returns a list of tasks, from which you can pick the one to use
29
29
63. Now all the tools are Cooperating
eclipse IDE
Eclipse
workspace
p4
perforce
Fi
sh
Ey
e
p4
FishEye
31
31
64. Other things you can add
ANach
a
log
file
of
the
system
execu0ng
that
verb
32
32
65. The problem
• Weʼre all too busy
• Our systems are all too complex
• Often only one person in a group knows how any given part of the
system works
• Being indispensable is a two edged sword!
33
33
66. The problem
• Weʼre all too busy
• Our systems are all too complex
• Often only one person in a group knows how any given part of the
system works
• Being indispensable is a two edged sword!
“ It will take me longer to explain it to you than to just do it myself”
33
33
68. Using JIRA/Mylyn as a training tool
• Create the JIRA Issue for a verb
34
34
69. Using JIRA/Mylyn as a training tool
• Create the JIRA Issue for a verb
• Open all of the classes that are used in executing that part of the
system
34
34
70. Using JIRA/Mylyn as a training tool
• Create the JIRA Issue for a verb
• Open all of the classes that are used in executing that part of the
system
• Visit the methods with those classes that matter
34
34
71. Using JIRA/Mylyn as a training tool
• Create the JIRA Issue for a verb
• Open all of the classes that are used in executing that part of the
system
• Visit the methods with those classes that matter
• Eclipse/Mylyn remembers the places you have visited
34
34
72. Using JIRA/Mylyn as a training tool
• Create the JIRA Issue for a verb
• Open all of the classes that are used in executing that part of the
system
• Visit the methods with those classes that matter
• Eclipse/Mylyn remembers the places you have visited
• Attach the content to the JIRA issue
34
34
73. Using JIRA/Mylyn as a training tool
• Create the JIRA Issue for a verb
• Open all of the classes that are used in executing that part of the
system
• Visit the methods with those classes that matter
• Eclipse/Mylyn remembers the places you have visited
• Attach the content to the JIRA issue
34
34
74. Using JIRA/Mylyn as a training tool
• Create the JIRA Issue for a verb
• Open all of the classes that are used in executing that part of the
system
• Visit the methods with those classes that matter
• Eclipse/Mylyn remembers the places you have visited
• Attach the content to the JIRA issue
• You now have a task based training library!
34
34
79. In Summary - Takeaways
• Setup Perforce depot structure like JIRA Projects
37
37
80. In Summary - Takeaways
• Setup Perforce depot structure like JIRA Projects
• JIRA/Perforce/FishEye integration tips
37
37
81. In Summary - Takeaways
• Setup Perforce depot structure like JIRA Projects
• JIRA/Perforce/FishEye integration tips
• Convert to JIRA using Pilot Projects for path finding
37
37
82. In Summary - Takeaways
• Setup Perforce depot structure like JIRA Projects
• JIRA/Perforce/FishEye integration tips
• Convert to JIRA using Pilot Projects for path finding
• Tool Integration Benefits
• Find pluginʼs plugins integrations! (Mylyn – Perforce – JIRA)
37
37
83. In Summary - Takeaways
• Setup Perforce depot structure like JIRA Projects
• JIRA/Perforce/FishEye integration tips
• Convert to JIRA using Pilot Projects for path finding
• Tool Integration Benefits
• Find pluginʼs plugins integrations! (Mylyn – Perforce – JIRA)
• Identify your greatest pain points
• What can my tools do to help? (Mylyn as a training tool).
37
37
84. In Summary - Takeaways
• Setup Perforce depot structure like JIRA Projects
• JIRA/Perforce/FishEye integration tips
• Convert to JIRA using Pilot Projects for path finding
• Tool Integration Benefits
• Find pluginʼs plugins integrations! (Mylyn – Perforce – JIRA)
• Identify your greatest pain points
• What can my tools do to help? (Mylyn as a training tool).
•
37
37
87. Backup Material
• Eclipse – Mylyn – JIRA setup instructions
• Eclipse – Mylyn requirements for loading context from JIRA
• JIRA plug-ins We Use
• Demo Environment
40
40
88. Eclipse – Mylyn - JIRA
• Eclipse Galilleo comes pre-installed with Mylyn
• To add the JIRA Mylyn connector
• Ensure you have the most up to date Mylyn, check for updates
• Select Task ʻadd repositoryʼ, choose ʻInstall More Connectorsʼ
• Select JIRA from the Mylyn Connector Discovery screen
• Follow the install instructions
41
41
89. Eclipse – Mylyn - JIRA
• Eclipse Galilleo comes pre-installed with Mylyn
• To add the JIRA Mylyn connector
• Ensure you have the most up to date Mylyn, check for updates
• Select Task ʻadd repositoryʼ, choose ʻInstall More Connectorsʼ
• Select JIRA from the Mylyn Connector Discovery screen
• Follow the install instructions
41
41
90. Load JIRA context instructions
• Assumption: Eclipse-Mylyn-JIRA- • If both users have perforce workspaces, it must
be for the same set of files and from the same
perforce properly setup starting directory
• Eclipse project name, must be the • JIRA connection string, must use same
same http: string
• Establish a naming convention for potentially
ʻsharedʼ Issues in JIRA and Eclipse to facilitate • Mylyn context zip files show the
this
required name, for debug
• Use the ʻenvironmentʼ JIRA field to note the project
name and source info • stored in the eclipse workspace
• In our example • .metadata/.mylyn/contexts/http<link name
plus pid>.zip
• demo-sc is our Eclipse project
• But it is defined to point to the demo-sc/vodman
folder of the p4 client workspace
• Source base for the set of files, must be
the same 42
42
92. Demo Environment
• Windows XP laptop (2G memory, • Similar to production created against the
smaller set of archived p4 data
Dell Precision M65)
• JIRA
• 320G Iomega external Drive
• Installed on XP
• VM Player on Windows, Ubuntu • Files live on the external drive
VM
• Eclipse
• Perforce
• Perforce database restored from
• Connected to JIRA, p4 (beta p4wasd)
production checkpoint
• Limited set of archived sources but entire
set of db.* files (big!)
• FishEye
44
44