SlideShare a Scribd company logo
Getting Started with Plugin Development
                                        Matt Ryall
                             Confluence Technical Lead, Atlassian

                                   Atlassian Summit 2010




                                                                   1
Monday, June 14, 2010                                              1
Why have you never developed a plugin?

          ‣ Don’t know how
          ‣ Not a Java programmer
          ‣ Too hard
          ‣ Too much initial set-up
          ‣ Don’t know the product APIs



                                                  2
Monday, June 14, 2010                             2
Little-Known Fact #1:
                        Plugins don’t need to be written in Java.




                                                                    3
Monday, June 14, 2010                                               3
Plugins types that don’t use Java

         ‣ Web Items – Add custom links to your application
         ‣ Web Panels – Add additional content on the page
         ‣ Web Resources – Restyle or customise the page with CSS and JavaScript
         ‣ External Gadget Providers or Gadget Plugins – Custom Google gadgets
         ‣ Confluence User Macros – Create simple Confluence macros



                                                                                   4
Monday, June 14, 2010                                                              4
Use web technologies instead

         ‣ HTML
         ‣ CSS
         ‣ JavaScript (with jQuery)




                                        5
Monday, June 14, 2010                   5
Little-Known Fact #2:
                        Plugins don’t need to be distributed in a JAR file.




                                                                             6
Monday, June 14, 2010                                                        6
Upload plugins directly

         ‣ If there’s no other files, just upload the XML descriptor file.
         ‣ This works for:
               • Web Items
               • Web Panels
               • Web Resources (sometimes)
               • Confluence User Macros

         ‣ External Gadget Providers can be installed via URL


                                                                           7
Monday, June 14, 2010                                                      7
XML file template
         <atlassian-plugin key="com.example.plugins.sample"
                 name="My Sample Plugin" plugins-version="2">
             <plugin-info>
                 <version>1.0</version>
                 <vendor>My Company</vendor>
             </plugin-info>


                    ... your stuff goes here ...

         </atlassian-plugin>

                        http://confluence.atlassian.com/display/CONFDEV/Creating+your+Plugin+Descriptor

                                                                                                         8
Monday, June 14, 2010                                                                                    8
Little-Known Fact #3:
                        You don’t need to know Java to create a JAR file.




                                                                           9
Monday, June 14, 2010                                                      9
Use the plugin SDK

         ‣ First, create the plugin skeleton:
               • Run atlas-create-confluence-plugin and it will prompt for values

         ‣ Delete the src/main/java and src/test directories
         ‣ Put CSS, JS files in the src/main/resources directory
         ‣ Build a JAR with your files
               • Run atlas-package and it will build a new JAR file in the target/ directory



                                                                                              10
Monday, June 14, 2010                                                                          10
Plugin structure with no Java code


                          ‣ POM includes instructions for SDK
                          ‣ Plugin content is under src/main/resources/
                          ‣ Run atlas-package and the plugin JAR
                            appears in target/ directory




                                                                          11
Monday, June 14, 2010                                                     11
Great! Let’s see how it works…




                                                         12
Monday, June 14, 2010                                     12
Example: Link to your Company Intranet

                                          ‣ Adding a link to Confluence’s global Browse
                                            menu
                                             • Also works in other places
                                             • Also works in other Atlassian applications

                                          ‣ Done in only 2½ steps



                        http://confluence.atlassian.com/display/CONFDEV/Web+UI+Module

                                                                                            13
Monday, June 14, 2010                                                                        13
Step 1: Create a Web Item

         <web-item key="company-intranet" name="Company Intranet"
                   section="system.browse/global" weight="40">
             <label>My Company Intranet</label>
             <link>http://intranet.example.com/</link>
         </web-item>




                        http://confluence.atlassian.com/display/CONFDEV/Web+UI+Module



                                                                                       14
Monday, June 14, 2010                                                                   14
Step 2: Drop it in the XML template
         <atlassian-plugin key="com.example.plugins.sample"
                 name="My Sample Plugin" plugins-version="2">
             <plugin-info>
                 <version>1.0</version>
                 <vendor>My Company</vendor>
             </plugin-info>


                  <web-item key="company-intranet" name="Company Intranet"
                          section="system.browse/global" weight="40">
                      <label>My Company Intranet</label>
                      <link>http://intranet.example.com/</link>
                  </web-item>

         </atlassian-plugin>


                                                                             15
Monday, June 14, 2010                                                         15
Last Step: Upload it into Confluence




                                               16
Monday, June 14, 2010                           16
Result: Link to your Company Intranet



                           ‣ Holy smokes, that was easy!




                                                           17
Monday, June 14, 2010                                       17
Example: Project Status User Macro




                                              18
Monday, June 14, 2010                          18
Step 1: Create your User Macro
         <user-macro key="green" name="green" hasBody="false"
                 bodyType="raw" outputType="html">
             <template><![CDATA[
                 <span style="background: green; color: white;
                     padding: 4px 12px">GREEN</span>
             ]]></template>
         </user-macro>


         ‣ You might also want to create ones for {red} and {yellow}…

                        http://confluence.atlassian.com/display/CONFDEV/User+Macro+Module


                                                                                           19
Monday, June 14, 2010                                                                       19
Step 2: Drop it in the XML template
         <atlassian-plugin key="com.example.plugins.sample"
                 name="My Sample Plugin" plugins-version="2">
             <plugin-info>
                 <version>1.0</version>
                 <vendor>My Company</vendor>
             </plugin-info>


                  <user-macro key="green" name="green" hasBody="false"
                          bodyType="raw" outputType="html">
                      <template><![CDATA[
                          <span style="background: green; color: white;
                              padding: 4px 12px">GREEN</span>
                      ]]></template>
                  </user-macro>

         </atlassian-plugin>

                                                                          20
Monday, June 14, 2010                                                      20
Last Step: Upload it into Confluence




                                               21
Monday, June 14, 2010                           21
Result: Project Status User Macro




                                             22
Monday, June 14, 2010                         22
More examples




                        Devoxx Conference Twitter Ticker – JavaScript User Macro
                                                                                   23
Monday, June 14, 2010                                                               23
More examples




                        Atlassian’s Staff Directory – just HTML, CSS and JavaScript
                                                                                      24
Monday, June 14, 2010                                                                  24
Scripting support (alpha stage)

         ‣ Scripting Extender Plugin – Adds support for scripting languages in your plugin
         ‣ Groovy Plugins – Lightning talk coming up next…
         ‣ JavaScript Plugins – At prototype stage, might be bundled soon.
         ‣ Java 6 Scripting Engine – Can use this with some Java code.
         ‣ Area of interest for some Atlassian developers – 20% projects and labs
           work ongoing.


                                                                                             25
Monday, June 14, 2010                                                                         25
Thank you.




                                     26
Monday, June 14, 2010                 26

More Related Content

What's hot

Intelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulIntelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest Istanbul
Mert Çalışkan
 
Jdc 2010 - Maven, Intelligent Projects
Jdc 2010 - Maven, Intelligent ProjectsJdc 2010 - Maven, Intelligent Projects
Jdc 2010 - Maven, Intelligent Projects
Mert Çalışkan
 
Writing great documentation - CodeConf 2011
Writing great documentation - CodeConf 2011Writing great documentation - CodeConf 2011
Writing great documentation - CodeConf 2011
Jacob Kaplan-Moss
 
JMP402 Master Class: Managed beans and XPages: Your Time Is Now
JMP402 Master Class: Managed beans and XPages: Your Time Is NowJMP402 Master Class: Managed beans and XPages: Your Time Is Now
JMP402 Master Class: Managed beans and XPages: Your Time Is Now
Russell Maher
 
Java 7 Modularity: a View from the Gallery
Java 7 Modularity: a View from the GalleryJava 7 Modularity: a View from the Gallery
Java 7 Modularity: a View from the Gallery
njbartlett
 
Java SE 9 modules (JPMS) - an introduction
Java SE 9 modules (JPMS) - an introductionJava SE 9 modules (JPMS) - an introduction
Java SE 9 modules (JPMS) - an introduction
Stephen Colebourne
 
Managed Beans: When, Why and How
Managed Beans: When, Why and HowManaged Beans: When, Why and How
Managed Beans: When, Why and How
Russell Maher
 
Note - Apache Maven Intro
Note - Apache Maven IntroNote - Apache Maven Intro
Note - Apache Maven Intro
boyw165
 
What's New in NetBeans IDE 7.x
What's New in NetBeans IDE 7.xWhat's New in NetBeans IDE 7.x
What's New in NetBeans IDE 7.x
Geertjan Wielenga
 
Maven
MavenMaven
Flavors of Concurrency in Java
Flavors of Concurrency in JavaFlavors of Concurrency in Java
Flavors of Concurrency in Java
JavaDayUA
 
Migrating Speedment to Java 9
Migrating Speedment to Java 9Migrating Speedment to Java 9
Migrating Speedment to Java 9
C4Media
 
JCP & The Future of Java
JCP & The Future of JavaJCP & The Future of Java
JCP & The Future of Java
Heather VanCura
 
Implementing quality in Java projects
Implementing quality in Java projectsImplementing quality in Java projects
Implementing quality in Java projects
Vincent Massol
 
Maven for Dummies
Maven for DummiesMaven for Dummies
Maven for Dummies
Tomer Gabel
 
The DOM is a Mess @ Yahoo
The DOM is a Mess @ YahooThe DOM is a Mess @ Yahoo
The DOM is a Mess @ Yahoo
jeresig
 
Apache maven and its impact on java 9 (Java One 2017)
Apache maven and its impact on java 9 (Java One 2017)Apache maven and its impact on java 9 (Java One 2017)
Apache maven and its impact on java 9 (Java One 2017)
Robert Scholte
 
XML and Web Services with Groovy
XML and Web Services with GroovyXML and Web Services with Groovy
XML and Web Services with Groovy
Paul King
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 Overview
Mike Ensor
 
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
JUG Lausanne
 

What's hot (20)

Intelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulIntelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest Istanbul
 
Jdc 2010 - Maven, Intelligent Projects
Jdc 2010 - Maven, Intelligent ProjectsJdc 2010 - Maven, Intelligent Projects
Jdc 2010 - Maven, Intelligent Projects
 
Writing great documentation - CodeConf 2011
Writing great documentation - CodeConf 2011Writing great documentation - CodeConf 2011
Writing great documentation - CodeConf 2011
 
JMP402 Master Class: Managed beans and XPages: Your Time Is Now
JMP402 Master Class: Managed beans and XPages: Your Time Is NowJMP402 Master Class: Managed beans and XPages: Your Time Is Now
JMP402 Master Class: Managed beans and XPages: Your Time Is Now
 
Java 7 Modularity: a View from the Gallery
Java 7 Modularity: a View from the GalleryJava 7 Modularity: a View from the Gallery
Java 7 Modularity: a View from the Gallery
 
Java SE 9 modules (JPMS) - an introduction
Java SE 9 modules (JPMS) - an introductionJava SE 9 modules (JPMS) - an introduction
Java SE 9 modules (JPMS) - an introduction
 
Managed Beans: When, Why and How
Managed Beans: When, Why and HowManaged Beans: When, Why and How
Managed Beans: When, Why and How
 
Note - Apache Maven Intro
Note - Apache Maven IntroNote - Apache Maven Intro
Note - Apache Maven Intro
 
What's New in NetBeans IDE 7.x
What's New in NetBeans IDE 7.xWhat's New in NetBeans IDE 7.x
What's New in NetBeans IDE 7.x
 
Maven
MavenMaven
Maven
 
Flavors of Concurrency in Java
Flavors of Concurrency in JavaFlavors of Concurrency in Java
Flavors of Concurrency in Java
 
Migrating Speedment to Java 9
Migrating Speedment to Java 9Migrating Speedment to Java 9
Migrating Speedment to Java 9
 
JCP & The Future of Java
JCP & The Future of JavaJCP & The Future of Java
JCP & The Future of Java
 
Implementing quality in Java projects
Implementing quality in Java projectsImplementing quality in Java projects
Implementing quality in Java projects
 
Maven for Dummies
Maven for DummiesMaven for Dummies
Maven for Dummies
 
The DOM is a Mess @ Yahoo
The DOM is a Mess @ YahooThe DOM is a Mess @ Yahoo
The DOM is a Mess @ Yahoo
 
Apache maven and its impact on java 9 (Java One 2017)
Apache maven and its impact on java 9 (Java One 2017)Apache maven and its impact on java 9 (Java One 2017)
Apache maven and its impact on java 9 (Java One 2017)
 
XML and Web Services with Groovy
XML and Web Services with GroovyXML and Web Services with Groovy
XML and Web Services with Groovy
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 Overview
 
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
 

Viewers also liked

Performance Tuning: Pulling a Rabbit From a Hat - Atlassian Summit 2010
Performance Tuning: Pulling a Rabbit From a Hat - Atlassian Summit 2010Performance Tuning: Pulling a Rabbit From a Hat - Atlassian Summit 2010
Performance Tuning: Pulling a Rabbit From a Hat - Atlassian Summit 2010
Atlassian
 
JIRA Studio: Development in the Cloud - Atlassian Summit 2010
JIRA Studio: Development in the Cloud - Atlassian Summit 2010JIRA Studio: Development in the Cloud - Atlassian Summit 2010
JIRA Studio: Development in the Cloud - Atlassian Summit 2010
Atlassian
 
The Information Radiator: Creating Awesome Wallboards - Atlassian Summit 2010...
The Information Radiator: Creating Awesome Wallboards - Atlassian Summit 2010...The Information Radiator: Creating Awesome Wallboards - Atlassian Summit 2010...
The Information Radiator: Creating Awesome Wallboards - Atlassian Summit 2010...
Atlassian
 
Labels Magic: Getting Labels to Work for Your Confluence Deployment - Atlassi...
Labels Magic: Getting Labels to Work for Your Confluence Deployment - Atlassi...Labels Magic: Getting Labels to Work for Your Confluence Deployment - Atlassi...
Labels Magic: Getting Labels to Work for Your Confluence Deployment - Atlassi...
Atlassian
 
Dev Tools State of the Union (Part I) - Atlassian Summit 2010
Dev Tools State of the Union (Part I) - Atlassian Summit 2010Dev Tools State of the Union (Part I) - Atlassian Summit 2010
Dev Tools State of the Union (Part I) - Atlassian Summit 2010
Atlassian
 
Going Agile: Brought to You by the Public Broadcasting System - Atlassian Sum...
Going Agile: Brought to You by the Public Broadcasting System - Atlassian Sum...Going Agile: Brought to You by the Public Broadcasting System - Atlassian Sum...
Going Agile: Brought to You by the Public Broadcasting System - Atlassian Sum...
Atlassian
 
Jira 4 Demo
Jira 4 DemoJira 4 Demo
Jira 4 Demo
Craig Smith
 
Delivering World-Class Documentation and Support Through Confluence - Atlassi...
Delivering World-Class Documentation and Support Through Confluence - Atlassi...Delivering World-Class Documentation and Support Through Confluence - Atlassi...
Delivering World-Class Documentation and Support Through Confluence - Atlassi...
Atlassian
 
Building Atlassian Plugins with Groovy - Atlassian Summit 2010 - Lightning Talks
Building Atlassian Plugins with Groovy - Atlassian Summit 2010 - Lightning TalksBuilding Atlassian Plugins with Groovy - Atlassian Summit 2010 - Lightning Talks
Building Atlassian Plugins with Groovy - Atlassian Summit 2010 - Lightning Talks
Atlassian
 
Auditing Your Build and Release Infrastructure - Atlassian Summit 2010 - Ligh...
Auditing Your Build and Release Infrastructure - Atlassian Summit 2010 - Ligh...Auditing Your Build and Release Infrastructure - Atlassian Summit 2010 - Ligh...
Auditing Your Build and Release Infrastructure - Atlassian Summit 2010 - Ligh...
Atlassian
 
From the Atlassian Labs: FedEx Champions - Atlassian Summit 2010 - Lightning ...
From the Atlassian Labs: FedEx Champions - Atlassian Summit 2010 - Lightning ...From the Atlassian Labs: FedEx Champions - Atlassian Summit 2010 - Lightning ...
From the Atlassian Labs: FedEx Champions - Atlassian Summit 2010 - Lightning ...
Atlassian
 
Kaizen With GreenHopper: Visualising Agile & Kanban Storywalls
Kaizen With GreenHopper: Visualising Agile & Kanban StorywallsKaizen With GreenHopper: Visualising Agile & Kanban Storywalls
Kaizen With GreenHopper: Visualising Agile & Kanban Storywalls
Craig Smith
 
Mastering JIRA Workflow - Atlassian Summit 2010
Mastering JIRA Workflow - Atlassian Summit 2010Mastering JIRA Workflow - Atlassian Summit 2010
Mastering JIRA Workflow - Atlassian Summit 2010
Atlassian
 
JIRA Performance Testing in Pictures - Edward Bukoski Michael March
JIRA Performance Testing in Pictures - Edward Bukoski Michael MarchJIRA Performance Testing in Pictures - Edward Bukoski Michael March
JIRA Performance Testing in Pictures - Edward Bukoski Michael March
Atlassian
 
Introducing JIRA AGILE
Introducing JIRA AGILEIntroducing JIRA AGILE
Introducing JIRA AGILE
Nishanth K Hydru
 
Using JIRA Software for Issue Tracking
Using JIRA Software for Issue TrackingUsing JIRA Software for Issue Tracking
Using JIRA Software for Issue Tracking
Anjali Rao
 
Introduction To Jira
Introduction To JiraIntroduction To Jira
Introduction To Jira
Hua Soon Sim
 

Viewers also liked (17)

Performance Tuning: Pulling a Rabbit From a Hat - Atlassian Summit 2010
Performance Tuning: Pulling a Rabbit From a Hat - Atlassian Summit 2010Performance Tuning: Pulling a Rabbit From a Hat - Atlassian Summit 2010
Performance Tuning: Pulling a Rabbit From a Hat - Atlassian Summit 2010
 
JIRA Studio: Development in the Cloud - Atlassian Summit 2010
JIRA Studio: Development in the Cloud - Atlassian Summit 2010JIRA Studio: Development in the Cloud - Atlassian Summit 2010
JIRA Studio: Development in the Cloud - Atlassian Summit 2010
 
The Information Radiator: Creating Awesome Wallboards - Atlassian Summit 2010...
The Information Radiator: Creating Awesome Wallboards - Atlassian Summit 2010...The Information Radiator: Creating Awesome Wallboards - Atlassian Summit 2010...
The Information Radiator: Creating Awesome Wallboards - Atlassian Summit 2010...
 
Labels Magic: Getting Labels to Work for Your Confluence Deployment - Atlassi...
Labels Magic: Getting Labels to Work for Your Confluence Deployment - Atlassi...Labels Magic: Getting Labels to Work for Your Confluence Deployment - Atlassi...
Labels Magic: Getting Labels to Work for Your Confluence Deployment - Atlassi...
 
Dev Tools State of the Union (Part I) - Atlassian Summit 2010
Dev Tools State of the Union (Part I) - Atlassian Summit 2010Dev Tools State of the Union (Part I) - Atlassian Summit 2010
Dev Tools State of the Union (Part I) - Atlassian Summit 2010
 
Going Agile: Brought to You by the Public Broadcasting System - Atlassian Sum...
Going Agile: Brought to You by the Public Broadcasting System - Atlassian Sum...Going Agile: Brought to You by the Public Broadcasting System - Atlassian Sum...
Going Agile: Brought to You by the Public Broadcasting System - Atlassian Sum...
 
Jira 4 Demo
Jira 4 DemoJira 4 Demo
Jira 4 Demo
 
Delivering World-Class Documentation and Support Through Confluence - Atlassi...
Delivering World-Class Documentation and Support Through Confluence - Atlassi...Delivering World-Class Documentation and Support Through Confluence - Atlassi...
Delivering World-Class Documentation and Support Through Confluence - Atlassi...
 
Building Atlassian Plugins with Groovy - Atlassian Summit 2010 - Lightning Talks
Building Atlassian Plugins with Groovy - Atlassian Summit 2010 - Lightning TalksBuilding Atlassian Plugins with Groovy - Atlassian Summit 2010 - Lightning Talks
Building Atlassian Plugins with Groovy - Atlassian Summit 2010 - Lightning Talks
 
Auditing Your Build and Release Infrastructure - Atlassian Summit 2010 - Ligh...
Auditing Your Build and Release Infrastructure - Atlassian Summit 2010 - Ligh...Auditing Your Build and Release Infrastructure - Atlassian Summit 2010 - Ligh...
Auditing Your Build and Release Infrastructure - Atlassian Summit 2010 - Ligh...
 
From the Atlassian Labs: FedEx Champions - Atlassian Summit 2010 - Lightning ...
From the Atlassian Labs: FedEx Champions - Atlassian Summit 2010 - Lightning ...From the Atlassian Labs: FedEx Champions - Atlassian Summit 2010 - Lightning ...
From the Atlassian Labs: FedEx Champions - Atlassian Summit 2010 - Lightning ...
 
Kaizen With GreenHopper: Visualising Agile & Kanban Storywalls
Kaizen With GreenHopper: Visualising Agile & Kanban StorywallsKaizen With GreenHopper: Visualising Agile & Kanban Storywalls
Kaizen With GreenHopper: Visualising Agile & Kanban Storywalls
 
Mastering JIRA Workflow - Atlassian Summit 2010
Mastering JIRA Workflow - Atlassian Summit 2010Mastering JIRA Workflow - Atlassian Summit 2010
Mastering JIRA Workflow - Atlassian Summit 2010
 
JIRA Performance Testing in Pictures - Edward Bukoski Michael March
JIRA Performance Testing in Pictures - Edward Bukoski Michael MarchJIRA Performance Testing in Pictures - Edward Bukoski Michael March
JIRA Performance Testing in Pictures - Edward Bukoski Michael March
 
Introducing JIRA AGILE
Introducing JIRA AGILEIntroducing JIRA AGILE
Introducing JIRA AGILE
 
Using JIRA Software for Issue Tracking
Using JIRA Software for Issue TrackingUsing JIRA Software for Issue Tracking
Using JIRA Software for Issue Tracking
 
Introduction To Jira
Introduction To JiraIntroduction To Jira
Introduction To Jira
 

Similar to 5 Thing You're Not Doing, 4 Things You Should Stop Doing & 3 Things You Should Keep Doing in Your Plugin - Atlassian Summit 2010 - Lightning Talks

Building WebApp with HTML5
Building WebApp with HTML5Building WebApp with HTML5
Building WebApp with HTML5
Tien Tran Le Duy
 
Joomla Day Austin Part 4
Joomla Day Austin Part 4Joomla Day Austin Part 4
Joomla Day Austin Part 4
Kyle Ledbetter
 
GWT and PWA
GWT and PWAGWT and PWA
Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...
IT Event
 
Plugins 2.0: The Overview
Plugins 2.0: The OverviewPlugins 2.0: The Overview
Plugins 2.0: The Overview
mrdon
 
XPages Mobile, #dd13
XPages Mobile, #dd13XPages Mobile, #dd13
AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development
AtlasCamp 2011 - Five Strategies to Accelerate Plugin DevelopmentAtlasCamp 2011 - Five Strategies to Accelerate Plugin Development
AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development
mrdon
 
Unlearning and Relearning jQuery - Client-side Performance Optimization
Unlearning and Relearning jQuery - Client-side Performance OptimizationUnlearning and Relearning jQuery - Client-side Performance Optimization
Unlearning and Relearning jQuery - Client-side Performance Optimization
Jon Dean
 
Gwt portlet
Gwt portletGwt portlet
Gwt portlet
prabakaranbrick
 
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
Plone Futures, Plone Conference 2016 Keynote by Eric SteelePlone Futures, Plone Conference 2016 Keynote by Eric Steele
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
T. Kim Nguyen
 
Plone Futures
Plone FuturesPlone Futures
Plone Futures
Eric Steele
 
AUSPC 2011: How we did it: NothingButSharePoint.com
AUSPC 2011: How we did it: NothingButSharePoint.comAUSPC 2011: How we did it: NothingButSharePoint.com
AUSPC 2011: How we did it: NothingButSharePoint.com
Jeremy Thake
 
Web Apps and more
Web Apps and moreWeb Apps and more
Web Apps and more
Yan Shi
 
Web app and more
Web app and moreWeb app and more
Web app and more
faming su
 
4-identifying-problems.pdf
4-identifying-problems.pdf4-identifying-problems.pdf
4-identifying-problems.pdf
Brian Rahmawan Purwoto
 
Web Test Automation Framework - IndicThreads Conference
Web Test Automation Framework  - IndicThreads ConferenceWeb Test Automation Framework  - IndicThreads Conference
Web Test Automation Framework - IndicThreads Conference
IndicThreads
 
Top Ten Tips for HTML5/Mobile Web Development
Top Ten Tips for HTML5/Mobile Web DevelopmentTop Ten Tips for HTML5/Mobile Web Development
Top Ten Tips for HTML5/Mobile Web Development
Simon Guest
 
夜宴42期《Gadgets》
夜宴42期《Gadgets》夜宴42期《Gadgets》
夜宴42期《Gadgets》
Koubei Banquet
 
Banquet 42
Banquet 42Banquet 42
Banquet 42
Koubei UED
 
Kickstart sencha extjs
Kickstart sencha extjsKickstart sencha extjs
Kickstart sencha extjs
Shakti Shrestha
 

Similar to 5 Thing You're Not Doing, 4 Things You Should Stop Doing & 3 Things You Should Keep Doing in Your Plugin - Atlassian Summit 2010 - Lightning Talks (20)

Building WebApp with HTML5
Building WebApp with HTML5Building WebApp with HTML5
Building WebApp with HTML5
 
Joomla Day Austin Part 4
Joomla Day Austin Part 4Joomla Day Austin Part 4
Joomla Day Austin Part 4
 
GWT and PWA
GWT and PWAGWT and PWA
GWT and PWA
 
Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...
 
Plugins 2.0: The Overview
Plugins 2.0: The OverviewPlugins 2.0: The Overview
Plugins 2.0: The Overview
 
XPages Mobile, #dd13
XPages Mobile, #dd13XPages Mobile, #dd13
XPages Mobile, #dd13
 
AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development
AtlasCamp 2011 - Five Strategies to Accelerate Plugin DevelopmentAtlasCamp 2011 - Five Strategies to Accelerate Plugin Development
AtlasCamp 2011 - Five Strategies to Accelerate Plugin Development
 
Unlearning and Relearning jQuery - Client-side Performance Optimization
Unlearning and Relearning jQuery - Client-side Performance OptimizationUnlearning and Relearning jQuery - Client-side Performance Optimization
Unlearning and Relearning jQuery - Client-side Performance Optimization
 
Gwt portlet
Gwt portletGwt portlet
Gwt portlet
 
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
Plone Futures, Plone Conference 2016 Keynote by Eric SteelePlone Futures, Plone Conference 2016 Keynote by Eric Steele
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
 
Plone Futures
Plone FuturesPlone Futures
Plone Futures
 
AUSPC 2011: How we did it: NothingButSharePoint.com
AUSPC 2011: How we did it: NothingButSharePoint.comAUSPC 2011: How we did it: NothingButSharePoint.com
AUSPC 2011: How we did it: NothingButSharePoint.com
 
Web Apps and more
Web Apps and moreWeb Apps and more
Web Apps and more
 
Web app and more
Web app and moreWeb app and more
Web app and more
 
4-identifying-problems.pdf
4-identifying-problems.pdf4-identifying-problems.pdf
4-identifying-problems.pdf
 
Web Test Automation Framework - IndicThreads Conference
Web Test Automation Framework  - IndicThreads ConferenceWeb Test Automation Framework  - IndicThreads Conference
Web Test Automation Framework - IndicThreads Conference
 
Top Ten Tips for HTML5/Mobile Web Development
Top Ten Tips for HTML5/Mobile Web DevelopmentTop Ten Tips for HTML5/Mobile Web Development
Top Ten Tips for HTML5/Mobile Web Development
 
夜宴42期《Gadgets》
夜宴42期《Gadgets》夜宴42期《Gadgets》
夜宴42期《Gadgets》
 
Banquet 42
Banquet 42Banquet 42
Banquet 42
 
Kickstart sencha extjs
Kickstart sencha extjsKickstart sencha extjs
Kickstart sencha extjs
 

More from Atlassian

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020
Atlassian
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020
Atlassian
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App Showcase
Atlassian
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UI
Atlassian
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge Runtime
Atlassian
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User Experience
Atlassian
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge Triggers
Atlassian
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in Forge
Atlassian
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy Model
Atlassian
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI System
Atlassian
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the Hood
Atlassian
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIs
Atlassian
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch Plugin
Atlassian
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the Building
Atlassian
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that Matter
Atlassian
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in Mind
Atlassian
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Atlassian
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced Teams
Atlassian
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
Atlassian
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in Mind
Atlassian
 

More from Atlassian (20)

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App Showcase
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UI
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge Runtime
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User Experience
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge Triggers
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in Forge
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy Model
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI System
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the Hood
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIs
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch Plugin
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the Building
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that Matter
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in Mind
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced Teams
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in Mind
 

Recently uploaded

Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 

Recently uploaded (20)

Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 

5 Thing You're Not Doing, 4 Things You Should Stop Doing & 3 Things You Should Keep Doing in Your Plugin - Atlassian Summit 2010 - Lightning Talks

  • 1. Getting Started with Plugin Development Matt Ryall Confluence Technical Lead, Atlassian Atlassian Summit 2010 1 Monday, June 14, 2010 1
  • 2. Why have you never developed a plugin? ‣ Don’t know how ‣ Not a Java programmer ‣ Too hard ‣ Too much initial set-up ‣ Don’t know the product APIs 2 Monday, June 14, 2010 2
  • 3. Little-Known Fact #1: Plugins don’t need to be written in Java. 3 Monday, June 14, 2010 3
  • 4. Plugins types that don’t use Java ‣ Web Items – Add custom links to your application ‣ Web Panels – Add additional content on the page ‣ Web Resources – Restyle or customise the page with CSS and JavaScript ‣ External Gadget Providers or Gadget Plugins – Custom Google gadgets ‣ Confluence User Macros – Create simple Confluence macros 4 Monday, June 14, 2010 4
  • 5. Use web technologies instead ‣ HTML ‣ CSS ‣ JavaScript (with jQuery) 5 Monday, June 14, 2010 5
  • 6. Little-Known Fact #2: Plugins don’t need to be distributed in a JAR file. 6 Monday, June 14, 2010 6
  • 7. Upload plugins directly ‣ If there’s no other files, just upload the XML descriptor file. ‣ This works for: • Web Items • Web Panels • Web Resources (sometimes) • Confluence User Macros ‣ External Gadget Providers can be installed via URL 7 Monday, June 14, 2010 7
  • 8. XML file template <atlassian-plugin key="com.example.plugins.sample" name="My Sample Plugin" plugins-version="2"> <plugin-info> <version>1.0</version> <vendor>My Company</vendor> </plugin-info> ... your stuff goes here ... </atlassian-plugin> http://confluence.atlassian.com/display/CONFDEV/Creating+your+Plugin+Descriptor 8 Monday, June 14, 2010 8
  • 9. Little-Known Fact #3: You don’t need to know Java to create a JAR file. 9 Monday, June 14, 2010 9
  • 10. Use the plugin SDK ‣ First, create the plugin skeleton: • Run atlas-create-confluence-plugin and it will prompt for values ‣ Delete the src/main/java and src/test directories ‣ Put CSS, JS files in the src/main/resources directory ‣ Build a JAR with your files • Run atlas-package and it will build a new JAR file in the target/ directory 10 Monday, June 14, 2010 10
  • 11. Plugin structure with no Java code ‣ POM includes instructions for SDK ‣ Plugin content is under src/main/resources/ ‣ Run atlas-package and the plugin JAR appears in target/ directory 11 Monday, June 14, 2010 11
  • 12. Great! Let’s see how it works… 12 Monday, June 14, 2010 12
  • 13. Example: Link to your Company Intranet ‣ Adding a link to Confluence’s global Browse menu • Also works in other places • Also works in other Atlassian applications ‣ Done in only 2½ steps http://confluence.atlassian.com/display/CONFDEV/Web+UI+Module 13 Monday, June 14, 2010 13
  • 14. Step 1: Create a Web Item <web-item key="company-intranet" name="Company Intranet" section="system.browse/global" weight="40"> <label>My Company Intranet</label> <link>http://intranet.example.com/</link> </web-item> http://confluence.atlassian.com/display/CONFDEV/Web+UI+Module 14 Monday, June 14, 2010 14
  • 15. Step 2: Drop it in the XML template <atlassian-plugin key="com.example.plugins.sample" name="My Sample Plugin" plugins-version="2"> <plugin-info> <version>1.0</version> <vendor>My Company</vendor> </plugin-info> <web-item key="company-intranet" name="Company Intranet" section="system.browse/global" weight="40"> <label>My Company Intranet</label> <link>http://intranet.example.com/</link> </web-item> </atlassian-plugin> 15 Monday, June 14, 2010 15
  • 16. Last Step: Upload it into Confluence 16 Monday, June 14, 2010 16
  • 17. Result: Link to your Company Intranet ‣ Holy smokes, that was easy! 17 Monday, June 14, 2010 17
  • 18. Example: Project Status User Macro 18 Monday, June 14, 2010 18
  • 19. Step 1: Create your User Macro <user-macro key="green" name="green" hasBody="false" bodyType="raw" outputType="html"> <template><![CDATA[ <span style="background: green; color: white; padding: 4px 12px">GREEN</span> ]]></template> </user-macro> ‣ You might also want to create ones for {red} and {yellow}… http://confluence.atlassian.com/display/CONFDEV/User+Macro+Module 19 Monday, June 14, 2010 19
  • 20. Step 2: Drop it in the XML template <atlassian-plugin key="com.example.plugins.sample" name="My Sample Plugin" plugins-version="2"> <plugin-info> <version>1.0</version> <vendor>My Company</vendor> </plugin-info> <user-macro key="green" name="green" hasBody="false" bodyType="raw" outputType="html"> <template><![CDATA[ <span style="background: green; color: white; padding: 4px 12px">GREEN</span> ]]></template> </user-macro> </atlassian-plugin> 20 Monday, June 14, 2010 20
  • 21. Last Step: Upload it into Confluence 21 Monday, June 14, 2010 21
  • 22. Result: Project Status User Macro 22 Monday, June 14, 2010 22
  • 23. More examples Devoxx Conference Twitter Ticker – JavaScript User Macro 23 Monday, June 14, 2010 23
  • 24. More examples Atlassian’s Staff Directory – just HTML, CSS and JavaScript 24 Monday, June 14, 2010 24
  • 25. Scripting support (alpha stage) ‣ Scripting Extender Plugin – Adds support for scripting languages in your plugin ‣ Groovy Plugins – Lightning talk coming up next… ‣ JavaScript Plugins – At prototype stage, might be bundled soon. ‣ Java 6 Scripting Engine – Can use this with some Java code. ‣ Area of interest for some Atlassian developers – 20% projects and labs work ongoing. 25 Monday, June 14, 2010 25
  • 26. Thank you. 26 Monday, June 14, 2010 26