Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
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
<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>
27Thursday, 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