![Page 1: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/1.jpg)
![Page 2: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/2.jpg)
2
Lessons from Speakeasy
Don BrownIntegration Architect, Atlassian
Five Strategies to Accelerate Plugin Dev
![Page 3: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/3.jpg)
3
Just one year ago…
![Page 4: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/4.jpg)
![Page 5: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/5.jpg)
6
1. Discover your plugin with Speakeasy
2. Define interactions with page objects
3. Optimize your dev loop with the SDK
4. Reuse functionality with AUI
5. Encourage feedback
Five Strategies
![Page 6: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/6.jpg)
7
1. Discover your plugin with Speakeasy
![Page 7: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/7.jpg)
8
![Page 8: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/8.jpg)
9
Validate your assumptions!
![Page 9: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/9.jpg)
10
The #1 time waster is not building the
plugin poorly, but is building the wrong
plugin
Me, channeling Eric Ries
”“
![Page 10: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/10.jpg)
11
Example: Inline CommentingAssumption Test
Users want to comment on specific lines in on a page
Look through last 100 comments, note cause and use of quotes
Users want to see number of comments on a line
Edit a few heavily commented pages and see if the linked numbers help or hurt
Slowness of commenting causing fewer comments and annoyed users
Get stats on how often people comment. Ask heavy comment authors their gripes.
![Page 11: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/11.jpg)
Social Validation
Speakeasy Prototype
Plugin
![Page 12: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/12.jpg)
13
Examine a recent plugin idea and try to
identify your assumptions and how you
might test them”“
![Page 13: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/13.jpg)
14
2. Define Interactions with Page Objects
![Page 14: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/14.jpg)
16
Selenium in 30 Seconds
![Page 15: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/15.jpg)
17
Testing is Like Diets
![Page 16: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/16.jpg)
18
Selenium the Ugly
waitForEntityRowToBeAdded(); // check entity row has been created assertThat.textPresent("Schultz"); assertThat.textPresent("brown"); assertEquals("Delete", client.getText("link=Delete")); // now we delete client.click("link=Delete"); client.waitForAjaxWithJquery(); client.click("//div[@id='delete-application-link-dialog']/div[2]/div[2]/button"); client.waitForAjaxWithJquery(); client.click("//div[@id='delete-application-link-dialog']/div[2]/div[2]/button");
![Page 17: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/17.jpg)
19
Reminds Me of These Days:
if(request.getParameter("action") != null){ String bookname=request.getParameter("bookname"if(request.getParameter("action") != null){ String bookname=request.getParameter("bookname"); String author=request.getParameter("author"); stmt.executeUpdate("insert into books_details(book_name,author) values('"+bookname+"','"+author+"')"); rst=stmt.executeQuery("select * from books_details"); %> <html> <body> <center> <h2>Books List</h2>
![Page 18: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/18.jpg)
20
JSP Solution: Data Access Objects
Selenium Solution: Page Objects
![Page 19: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/19.jpg)
21
Boldly go where no functional test has gone before…
![Page 20: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/20.jpg)
22
This ain’t no theory. . .
![Page 21: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/21.jpg)
23
• JIRA 4.x, 5.0
• Confluence 3.x, 4.x
• Bamboo 3.3
• FishEye/Crucible, coming soon
Use Now!
![Page 22: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/22.jpg)
24
Take a look at the Atlassian page object
docs and try to write a hello world test
for your plugin”“
![Page 23: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/23.jpg)
25
3. Optimize the Dev Loop with the SDK
![Page 24: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/24.jpg)
26
All About the Gap
Gap between edit and view
Productivity
![Page 25: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/25.jpg)
27
These Are Your Enemies
![Page 26: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/26.jpg)
28
Edit -> Refresh
js/vm,hotswapchanges
Gap between edit and view
Productivity
![Page 27: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/27.jpg)
29
Edit -> ‘pi’ -> Refresh
javachanges
Gap between edit and view
Productivity
![Page 28: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/28.jpg)
30
Edit -> CTRL-C -> atlas-run
WEB-INF/libchanges
Gap between edit and view
Productivity
![Page 29: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/29.jpg)
31
Speaking of atlas-run. . .
![Page 30: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/30.jpg)
32
Run Simultaneously
Switch between productsTerminal tab per instance
![Page 31: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/31.jpg)
33
Quickly Spot Errors
In your .bashrc file
export MAVEN_COLOR=true
![Page 32: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/32.jpg)
34
Track how many times you alt-tab away
from development in a day and try to
decrease it”“
![Page 33: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/33.jpg)
35
4. Reuse UI with AUI
![Page 34: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/34.jpg)
36
A few of my favorite things
![Page 35: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/35.jpg)
37
Tabbed Panels!
![Page 36: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/36.jpg)
38
Messages!
![Page 37: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/37.jpg)
39
Dialogs!
![Page 38: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/38.jpg)
40
Play with the AUI sandbox and try out a
few components”“
![Page 39: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/39.jpg)
41
5. Make Feedback Dead Simple
![Page 40: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/40.jpg)
42
![Page 41: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/41.jpg)
43
JIRA Mobile Connect
Automated crash reportingas a JIRA issue
Message reporters directly,attached to the issue
![Page 42: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/42.jpg)
44
JIRA Issue Connector
Embeddable JavaScript to allow users to raise issues for your
plugin
![Page 43: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/43.jpg)
45
Make It Rewarding
![Page 44: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/44.jpg)
46
Add JIRA Issue Connector to as an
optional feature to your plugin for
dogfooding”“
![Page 45: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/45.jpg)
48
![Page 46: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/46.jpg)
49
But before I go. . .
![Page 47: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/47.jpg)
50
The JIRA Studio Problem
How to allow plugins without breaking Studio?
![Page 48: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/48.jpg)
54
• What if plugins ran on your server like Facebook Applications?
• What if all you had to install in JIRA Studio was a single XML descriptor file?
• What if you could write a plugin that could be deployed for JIRA Studio or custom instances without changes?
2012 Project: Remote Plugins
![Page 49: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/49.jpg)
55
• Are you interested in deploying plugins for our JIRA Studio customers?
• Would you like to use this capability for custom instances?
• Would you be interested in having early access?
Contact me: [email protected] or @mrdonbrown
Let me know. . .
![Page 50: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/50.jpg)
Thank you!
![Page 51: AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development](https://reader035.vdocuments.net/reader035/viewer/2022062616/54b5bd494a795942618b461f/html5/thumbnails/51.jpg)
61
• Speakeasy
• Page Objects – Coming soon
• Plugin SDK
• Multiple products
• Colorization
• Atlassian User Interface (AUI)
• JIRA Mobile Connect
• JIRA Issue Connector
References