go, go, gadgets: building gadgets for atlassian products - atlassian summit 2010

74
1 1

Upload: atlassian

Post on 12-May-2015

2.339 views

Category:

Technology


4 download

DESCRIPTION

Go, Go, Gadgets: Building Gadgets for Atlassian Products Mark Halvorson, Atlassian

TRANSCRIPT

Page 1: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

1

1

Page 2: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Go Go Gadgets!• Building Gadgets for Atlassian Products

2

• Mark Halvorson• Chief Imagineer• Atlassian Software

2

Page 3: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

What is an ʻImagineerʼ?3

Page 4: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Take things that exist...

!" #"

4

Page 5: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

...and make something different.

5

Page 6: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

6

6

Page 7: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Agenda

• What it is OpenSocial• Why we chose it• How it has helped us

• Why you should use it!• How you can get involved

7

7

Page 8: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

What is OpenSocial?

8

8

Page 9: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Social Data Model

9

9

Page 10: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Web Service APIs

10

10

Page 11: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Gadgets

11

11

Page 12: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Our Problem

12

12

Page 13: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

• Enterprise Apps are Silos

Before

FishEye  Source  Code

JIRA  Issues  &  Tasks

Confluence  Wiki

13

13

Page 14: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

14

Emphasize Teams, Projects & Tasks over Tools

14

Page 15: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Too Many Dashboards

15

15

Page 16: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

16

Cross-Product Sharing

16

Page 17: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Integration with Non-Atlassian apps

17

17

Page 18: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Solution: OpenSocial Gadgets

18

18

Page 19: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Gadgets are a Great Solution for Dashboards

19

19

Page 20: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

After

view  complete  

• Open standard for enterprise• application connection

20

20

Page 21: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Managers Do Email

view  acAvity  &  status

• Not just about portals,• or internal applications.

21

21

Page 22: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Open Standards,Industry Support

22

22

Page 23: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Why Write Gadgets?

• Theyʼre easy!

• They use stable, widely accessible and understood technologies

• Write once, display everywhere

23

23

Page 24: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

The Obligatory Hello World Example

24

24

Page 25: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Anatomy of a Gadget

• XML Spec File• Metadata, HTML Content, and JavaScript

• Core JavaScript API• Access Preferences, Make Requests

• Gadget Features• Additional, Optional Capabilities & APIs

25

25

Page 26: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

XML Spec File

26

26

Page 27: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

<ModulePrefs>

<?xml version="1.0" encoding="UTF-8" ?><Module> <ModulePrefs title="JIRA Issues" author="Atlassian" thumbnail="http://labs.atlassian.com/svn/GADGETS/trunk/jira-issues/basic/jira-issues-thumbnail.png" description="A list of recently created Issues">

<Require feature="minimessage" /> <Require feature="dynamic-height" />

</ModulePrefs>

27

27

Page 28: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

<UserPref>

<UserPref name="show_date" display_name="Show Dates?" datatype="bool" default_value="true"/> <UserPref name="show_summ" display_name="Show Summaries?" datatype="bool" default_value="true"/> <UserPref name="num_entries" display_name="Number of Entries:" default_value="5" required="true"/>

28

28

Page 29: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

<Content>

<Content type="html"><![CDATA[ <link rel="stylesheet" href="http://labs.atlassian.com/svn/GADGETS/trunk/jira-issues/basic/jira-issues.css">

<div id="content_div"></div>

<script type="text/javascript" src="http://labs.atlassian.com/svn/GADGETS/trunk/jira-issues/basic/jira-issues.js"></script> ]]></Content></Module>

29

29

Page 30: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Views - Default

30

30

Page 31: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Views - Default

31

31

Page 32: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Views - Canvas

32

32

Page 33: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Views - “nav”

33

33

Page 34: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Views - Canvas

34

34

Page 35: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Views - Custom

35

35

Page 36: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Dashboards, Gadgets & OpenSocial•Gadgets go beyond the JIRA Dashboard - onto your wall!

36

36

Page 37: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

JavaScript

// Create minimessage factoryvar msg = new gadgets.MiniMessage();// Show a small loading message to the uservar loadMessage = msg.createStaticMessage("loading...");

// Get configured user prefsvar prefs = new gadgets.Prefs();var showDate = prefs.getBool("show_date");var showSummary = prefs.getBool("show_summ");var numEntries = prefs.getInt("num_entries");

// Fetch issues when the gadget loadsgadgets.util.registerOnLoadHandler(fetchIssues);

37

37

Page 38: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Requesting Data from Web Services

• AJAX + DOM

• OAuth

• Request Proxy

38

38

Page 39: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

39

39

Page 40: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

40

40

Page 41: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

41

41

Page 42: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

42

42

Page 43: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

gadgets.io.makeRequest()

43

43

Page 44: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

What Can You Call?

• Any URL

• XML and JSON are the most useful•

44

44

Page 45: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Fetching Issues

function fetchIssues() { var url = "http://jira.atlassian.com/sr/" + "jira.issueviews:searchrequest-xml" + "/temp/SearchRequest.xml?" + "created%3Aprevious=-1w&resolution=-1" + "&sorter/field=issuekey&sorter/order=DESC" + "&sorter/field=created&sorter/order=DESC" + "&tempMax=20";

var params = {}; params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.DOM;

gadgets.io.makeRequest(url, handleResponse, params);}

45

45

Page 46: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Handling the Response

function handleResponse(obj) { var domData = obj.data;

var jiraIssues = { title : getTitle(domData), items : getItems(domData) }; renderJiraIssues(jiraIssues);

msg.dismissMessage(loadMessage); gadgets.window.adjustHeight();}

46

46

Page 47: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

TextText

An ExampleReal World Example...47

Page 48: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

The Goal

The Goal48

48

Page 49: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

The Result

The Result49

49

Page 50: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Preferences50

50

Page 51: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Statistics

51

51

Page 52: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Letʼs Take a Step Back.

52

52

Page 53: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Q: What is the purpose of an application?• A: DO Something. Complete some process.

53

53

Page 54: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Anatomy of an Application

Context Content Ac)on

54

54

Page 55: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

An Example

Gmail

Communica)on

ContactsMail

Read  WriteReply

55

55

Page 56: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Q: What is the purpose of an gadget?

• A: DO Something. Complete some process.

56

56

Page 57: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Gadget = Reusable

Mini-‐ApplicaAon

Context

Content

Ac)on

AtomicUnit  of  Work

Ac)on

Context

Content

• or

57

57

Page 58: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Example - “Mini-Application”

JIRA  Comment  Gadget

JIRA-‐1234

Add  Comment

Users  Comment

Users  Comment

58

58

Page 59: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Example - Unit of Work

JIRA  Comment  Gadget

Context

Users  Comment

Add  Comment

59

59

Page 60: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Lesson Learned over time: Gadgets as “Units of Work” are...

• Easier to build

• Easier to use

• Easier to reuse

60

60

Page 61: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Composite Application

Gadget

Ac)on

Context

Content

Gadget

Ac)on

Context

Content

Context

Gadget

Ac)on

Add’l  Context

ContentContent

Ac)on

61

61

Page 62: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Example - Gmail

Google  CommunicaAon  ApplicaAon

Gmail

Communica)on

ContactsMail

Read  WriteReply

Google  Talk

IM

Read  WriteReply

Presence

62

62

Page 63: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Demonstration• My FedEx 13 Project “Flapjack for Confluence”

63

63

Page 64: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Get Satisfaction

64

64

Page 65: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Gadgets?

Gadget? Gadget?

65

65

Page 66: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

66

Gadget!

Gadget

Gadget

66

Page 67: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

67

67

Page 68: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Get Satisfactionpowered by JIRA

68

68

Page 69: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Gadgets!

Gadget!

Gadget!

Gadget!

69

69

Page 70: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Feedback Tab on Different Website

70

70

Page 71: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Feedback on Google.com

71

71

Page 72: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Feedback on Google.com

72

72

Page 73: Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010

Summary - Why write gadgets?

• Easy!

• Reusable!

• Fun!

73

73