opensocial in the enterprise - qcon san francisco€¦ · atlassian developer thursday, november...

Post on 14-Jun-2020

8 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

OpenSocialin the

Enterprise

Tim MooreAtlassian Developer

1Thursday, November 19, 2009

Collaboration Tools Development Tools

ConfluenceLargest enterprise wiki

JIRAFishEye, Crucible, Bamboo,

Clover, IDE Connectors

8 products • 15,000 customers • 113 countries

Atlassian

2Thursday, November 19, 2009

Our Problem

3Thursday, November 19, 2009

Enterprise apps are silosToday4Thursday, November 19, 2009

Enterprise apps are silosToday

Source Code

4Thursday, November 19, 2009

Enterprise apps are silosToday

Source Code

Issues & Tasks

4Thursday, November 19, 2009

Enterprise apps are silosToday

Source Code

Issues & Tasks

Wiki

4Thursday, November 19, 2009

Too Many Dashboards

5Thursday, November 19, 2009

Too Many Dashboards

5Thursday, November 19, 2009

6Thursday, November 19, 2009

6Thursday, November 19, 2009

Integration with Non-Atlassian apps

7Thursday, November 19, 2009

N:M Versions Problem

8Thursday, November 19, 2009

9Thursday, November 19, 2009

9Thursday, November 19, 2009

9Thursday, November 19, 2009

9Thursday, November 19, 2009

Solution:OpenSocial Gadgets

10Thursday, November 19, 2009

What is OpenSocial?

11Thursday, November 19, 2009

Social Data Model

12Thursday, November 19, 2009

Web Service APIs

13Thursday, November 19, 2009

Gadgets

14Thursday, November 19, 2009

15Thursday, November 19, 2009

Gadget Benefits

16Thursday, November 19, 2009

Gadget Benefits

• Easy!

16Thursday, November 19, 2009

Gadget Benefits

• Easy!

• Safe

16Thursday, November 19, 2009

Gadget Benefits

• Easy!

• Safe

• Write Once, Display Everywhere

16Thursday, November 19, 2009

Gadgets are a Great Solution for Dashboards

17Thursday, November 19, 2009

Open standard for enterprise application connectionOpenSocial

18Thursday, November 19, 2009

Open standard for enterprise application connectionOpenSocial

view complete projectsingle activity streamcomment & interact

18Thursday, November 19, 2009

Not just about portals,or internal applications.Managers Do Email

19Thursday, November 19, 2009

Not just about portals,or internal applications.Managers Do Email

view activity & statuscreate issues

19Thursday, November 19, 2009

Open Standards,Industry Support

20Thursday, November 19, 2009

Apache Shindig

21Thursday, November 19, 2009

Anatomy of a Gadget

22Thursday, November 19, 2009

Anatomy of a Gadget

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

22Thursday, November 19, 2009

Anatomy of a Gadget

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

• Core JavaScript API• Access Preferences, Make Requests

22Thursday, November 19, 2009

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

22Thursday, November 19, 2009

Architecture

23Thursday, November 19, 2009

XML Spec File

24Thursday, November 19, 2009

<ModulePrefs>

25Thursday, November 19, 2009

<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>

25Thursday, November 19, 2009

<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>

25Thursday, November 19, 2009

<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>

25Thursday, November 19, 2009

<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"/>

26Thursday, November 19, 2009

<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"/>

26Thursday, November 19, 2009

<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"/>

26Thursday, November 19, 2009

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);

28Thursday, November 19, 2009

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);

28Thursday, November 19, 2009

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);

28Thursday, November 19, 2009

Requesting Data from Web Services

29Thursday, November 19, 2009

Requesting Data from Web Services

• AJAX + DOM

29Thursday, November 19, 2009

Requesting Data from Web Services

• AJAX + DOM

• Request Proxy

29Thursday, November 19, 2009

Requesting Data from Web Services

• AJAX + DOM

• Request Proxy

• OAuth

29Thursday, November 19, 2009

gadgets.io.makeRequest()

30Thursday, November 19, 2009

What Can You Call?

31Thursday, November 19, 2009

What Can You Call?

• Any URL

31Thursday, November 19, 2009

What Can You Call?

• Any URL

• XML and JSON are the most useful

31Thursday, November 19, 2009

What Can You Call?

• Any URL

• XML and JSON are the most useful

• REST-style APIs are the most convenient

31Thursday, November 19, 2009

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);}

32Thursday, November 19, 2009

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();}

33Thursday, November 19, 2009

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();}

33Thursday, November 19, 2009

Challenges

34Thursday, November 19, 2009

Enterprise Readiness

35Thursday, November 19, 2009

Enterprise Readiness

• SSO/Security

35Thursday, November 19, 2009

Enterprise Readiness

• SSO/Security

• Assumes big container,little app servers

35Thursday, November 19, 2009

Enterprise Readiness

• SSO/Security

• Assumes big container,little app servers

• Low awareness of enterprise needs

35Thursday, November 19, 2009

RunningBehind the Firewall

36Thursday, November 19, 2009

RunningBehind the Firewall

• Deployment issues

36Thursday, November 19, 2009

RunningBehind the Firewall

• Deployment issues

• Portable gadgets

36Thursday, November 19, 2009

RunningBehind the Firewall

• Deployment issues

• Portable gadgets

• Google Analytics in gadgets

36Thursday, November 19, 2009

Immaturity

37Thursday, November 19, 2009

Immaturity

• No 1.0 spec yet

37Thursday, November 19, 2009

Immaturity

• No 1.0 spec yet

• Shindig still incubating

37Thursday, November 19, 2009

Immaturity

• No 1.0 spec yet

• Shindig still incubating

• Compatibility:more theory than reality

37Thursday, November 19, 2009

Whatʼs Next?

38Thursday, November 19, 2009

OpenSocial 1.0

39Thursday, November 19, 2009

OpenSocial 1.0

• In progress now

39Thursday, November 19, 2009

OpenSocial 1.0

• In progress now

• Focus on clean up & clarification

39Thursday, November 19, 2009

OpenSocial 1.0

• In progress now

• Focus on clean up & clarification

• Compliance tests

39Thursday, November 19, 2009

OpenSocial 1.0

• In progress now

• Focus on clean up & clarification

• Compliance tests

• Extension process

39Thursday, November 19, 2009

OpenSocial 1.0

• In progress now

• Focus on clean up & clarification

• Compliance tests

• Extension process

• You can join in

39Thursday, November 19, 2009

PubSub

40Thursday, November 19, 2009

Caja

41Thursday, November 19, 2009

Caja

• Safer JavaScript & CSS

41Thursday, November 19, 2009

Caja

• Safer JavaScript & CSS

• Helps prevent phishing, script injection, history sniffing, etc.

41Thursday, November 19, 2009

Caja

• Safer JavaScript & CSS

• Helps prevent phishing, script injection, history sniffing, etc.

• In production, but still tricky to use

41Thursday, November 19, 2009

Questions?

42Thursday, November 19, 2009

top related