SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Downloaden Sie, um offline zu lesen
1
1
How the Atlassian Plugin SDK Cured
Cancer and Reunited Soundgarden


Ben Speakmon

Developer Relations




                                     2
                                     2
Agenda
• Developer Relations
• Definitions
• Challenges in writing plugins
• How the SDK addresses them
• SDK in action
• Getting involved
• Wrap-up

                                  3
                                      3
Developer Relations
• Dedicated product team
 • Started in June 2009
 • Based in San Francisco
 • Two full-time developers

• In addition to the SDK…
 • plugins.atlassian.com
 • studio.plugins.atlassian.com
 • Developer documentation




                                  4
                                      4
What weʼve got to show for it
• First SDK release in October 2009 • February 2010 Doc Sprint
  at AtlasCamp                        • Completely new developer
 • 16 releases since                    documentation
                                      • 20 new tutorials
• plugins.atlassian.com
 • Over 500 plugins
 • 1.1 release has searching,
   performance, and RSS feed
   improvements



• studio.plugins.atlassian.com
                                                                   5
 • Over 500 hosted projects
                                                                       5
Definitions
• SDK – Software Development Kit
• Maven – Project management tool
 • Open source project at apache.org
 • Builds and Dependency management

• Plugin – Code that adds a feature to a product
 • Maven plugins extend Maven
 • Atlassian plugins extend Atlassian products


                                                   6
                                                       6
Plugin development challenges


• I made this half-pony half-monkey monster to please you
• But I get the feeling that you donʼt like it
• Whatʼs with all the screaming?
•                -- Jonathan Coulton, “Skullcrusher Mountain”



                                                                7
                                                                    7
Effective plugin development

• Different than product development
 • Work within someone elseʼs sandbox

• Three things that MUST be easy:
 • Starting the product
 • Configuring the product
 • Installing the plugin

                                        8
                                            8
Challenge #1: Starting the product
Product            Startup method
JIRA               bin/startup.sh or .bat (standalone) or WAR install into app.
                   server
Confluence         bin/startup.sh or .bat (standalone) or WAR install into app.
                   server
Bamboo             bamboo.sh or Win32 service or WAR install into app. server

Crowd              start_crowd.sh or .bat (standalone) or WAR install into app.
                   server
FishEye/Crucible   run.sh or .bat – no WAR version available



                                                                                  9
                                                                                      9
Challenge #2: Configuring the product
Product          Data and logs   Configuration
                 directory
JIRA             jira-home       WEB-INF/classes/jira-application.properties
Confluence       No default      WEB-INF/classes/confluence-init.properties

Bamboo           No default      WEB-INF/classes/bamboo-init.properties
Crowd            No default      WEB-INF/classes/crowd-init.properties,
                                 system property, servlet context property

FishEye/Crucible var             FISHEYE_INST environment variable

                                                                               10
                                                                                10
Challenge #3: Installing a plugin
Product           Plugin install methods
JIRA              Two plugin directories for different plugin systems, web interface

Confluence        Two plugin directories for different plugin systems, web interface,
                  plugin repository

Bamboo            Two plugin directories for different plugin systems

Crowd             One plugin directory (plugins 2 only)

FishEye/Crucible One plugin directory (plugins 2 only)



                                                                                        11
                                                                                         11
And if that wasnʼt enough…
Build systems
 • Maven 1 or 2? Ant?
 • Dependencies are really
   confusing
Starting a plugin project
 • Expert product knowledge
   required just to get started
 • Maven archetypes are too
   hard to use

                                  12
                                   12
It all adds up to…
Lots of small headaches
== big headache
 • Not your fault
 • Not your job to fix them
Slow code/test/debug cycle
Frustration
                             13
                              13
How the SDK deals with the challenges


•“What is happiness? The feeling
 that power is growing, that
 resistance is overcome.”
•          --Friedrich Nietzsche, LISP user

                                              14
                                               14
Challenge #1: Starting the product
Product            Startup method
JIRA               bin/startup.sh or .bat (standalone) or WAR install into app. server

Confluence         bin/startup.sh or .bat (standalone) or WAR install into app. server

Bamboo             bamboo.sh or Win32 service or WAR install into app. server

Crowd              start_crowd.sh or .bat (standalone) or WAR install into app. server

FishEye/Crucible   run.sh or .bat – no WAR version available




                                                                                         15
                                                                                          15
Challenge #1: Starting the product
Product            Startup method
JIRA               bin/startup.sh or .bat (standalone) or WAR install into app. server

Confluence         bin/startup.sh or .bat (standalone) or WAR install into app. server

Bamboo             bamboo.sh or Win32 service or WAR install into app. server

Crowd              start_crowd.sh or .bat (standalone) or WAR install into app. server

FishEye/Crucible   run.sh or .bat – no WAR version available




                                                                                         15
                                                                                          15
Challenge #1: Starting the product
Product            Startup method
JIRA               bin/startup.sh or .bat (standalone) or WAR install into app. server

Confluence         bin/startup.sh or .bat (standalone) or WAR install into app. server

Bamboo             bamboo.sh or Win32 service or WAR install into app. server

Crowd              start_crowd.sh or .bat (standalone) or WAR install into app. server

FishEye/Crucible   run.sh or .bat – no WAR version available



•                       atlas-run
                                                                                         15
                                                                                          15
Challenge #2: Configuring the product
Product            Data and logs   Configuration
                   directory
JIRA               jira-home       WEB-INF/classes/jira-application.properties
Confluence         No default      WEB-INF/classes/confluence-init.properties

Bamboo             No default      WEB-INF/classes/bamboo-init.properties
Crowd              No default      WEB-INF/classes/crowd-init.properties, system
                                   property, servlet context property

FishEye/Crucible   var             FISHEYE_INST environment variable




                                                                                   16
                                                                                    16
Challenge #2: Configuring the product
Product            Data and logs   Configuration
                   directory
JIRA               jira-home       WEB-INF/classes/jira-application.properties
Confluence         No default      WEB-INF/classes/confluence-init.properties

Bamboo             No default      WEB-INF/classes/bamboo-init.properties
Crowd              No default      WEB-INF/classes/crowd-init.properties, system
                                   property, servlet context property

FishEye/Crucible   var             FISHEYE_INST environment variable




                                                                                   16
                                                                                    16
Challenge #2: Configuring the product
Product            Data and logs   Configuration
                   directory
JIRA               jira-home       WEB-INF/classes/jira-application.properties
Confluence         No default      WEB-INF/classes/confluence-init.properties

Bamboo             No default      WEB-INF/classes/bamboo-init.properties
Crowd              No default      WEB-INF/classes/crowd-init.properties, system
                                   property, servlet context property

FishEye/Crucible   var             FISHEYE_INST environment variable

•                          Logs sent to console


                                                                                   16
                                                                                    16
Challenge #2: Configuring the product
Product            Data and logs   Configuration
                   directory
JIRA               jira-home       WEB-INF/classes/jira-application.properties
Confluence         No default      WEB-INF/classes/confluence-init.properties

Bamboo             No default      WEB-INF/classes/bamboo-init.properties
Crowd              No default      WEB-INF/classes/crowd-init.properties, system
                                   property, servlet context property

FishEye/Crucible   var             FISHEYE_INST environment variable

•                          Logs sent to console
•                  Preconfigured data directories
                                                                                   16
                                                                                    16
Challenge #3: Installing a plugin
Product           Plugin install methods
JIRA              Two plugin directories for different plugin systems, web interface
Confluence        Two plugin directories for different plugin systems, web interface,
                  plugin repository
Bamboo            Two plugin directories for different plugin systems
Crowd             One plugin directory (plugins 2 only)
FishEye/Crucible One plugin directory (plugins 2 only)




                                                                                        17
                                                                                         17
Challenge #3: Installing a plugin
Product           Plugin install methods
JIRA              Two plugin directories for different plugin systems, web interface
Confluence        Two plugin directories for different plugin systems, web interface,
                  plugin repository
Bamboo            Two plugin directories for different plugin systems
Crowd             One plugin directory (plugins 2 only)
FishEye/Crucible One plugin directory (plugins 2 only)




                                                                                        17
                                                                                         17
Challenge #3: Installing a plugin
    Product           Plugin install methods
    JIRA              Two plugin directories for different plugin systems, web interface
    Confluence        Two plugin directories for different plugin systems, web interface,
                      plugin repository
    Bamboo            Two plugin directories for different plugin systems
    Crowd             One plugin directory (plugins 2 only)
    FishEye/Crucible One plugin directory (plugins 2 only)


•             Automatic through atlas-run
                                                                                            17
                                                                                             17
SDK Design


•“You can get more of what you want
 with a kind word and a gun than you
 can with just a kind word.”
•                --Al Capone, project manager


                                                18
                                                 18
Atlassian Maven Plugins Suite
• Suite of Maven plugins
 • maven-jira-plugin, maven-confluence-plugin, etc.

• Common interface to products:
 • Handles installation and configuration

• Can be used independently of the SDK
 • Very handy if you already have a Maven system

                                                     19
                                                      19
Script shortcuts
Task                                        Maven command            Script shortcut
Start the product with the current plugin   mvn amps:run             atlas-run
preinstalled
Start the product with the current plugin   mvn amps:debug           atlas-debug
preinstalled and allow a debugger to
attach

Start JIRA on port 8243 and context         mvn amps:run             atlas-run
“myjira” with the current plugin            –Dproduct=jira           --product jira
preinstalled                                –Dcontext.path=/myjira   --context-path /myjira
                                            –Dhttp.port=8243         --http-port 8243

Run an arbitrary Maven command              mvn myplugin:mygoal      atlas-mvn myplugin:mygoal
                                            <parameters>             <parameters>


                                                                                                 20
                                                                                                  20
SDK in action


• A thousand moral paintings I can show
• That shall demonstrate these quick blows of Fortuneʼs
• More pregnantly than words.
•                                          Timon of Athens, I:i



                                                                  21
                                                                   21
30-second Plugin Creation™

• Creating a plugin is dirt simple!
 • atlas-create-<product>-plugin

• Executes a Maven archetype
• Automatically prompts for required information
• Created plugin works out of the box

                                                   22
                                                    22
Creating a new JIRA plugin




                             23
                              23
Creating a new JIRA plugin




                             23
                              23
Automatic resource reloading

Plugin web resources
 are monitored
 • Detects changes and
   automatically updates
Reinstall plugin for
 Java updates

                                24
                                 24
Changing a live gadget




                         25
                          25
Changing a live gadget




                         25
                          25
Boxed Maven

Contains a standalone,
 isolated Maven 2.1.0
 • Uses Atlassian repositories by
   default
 • No extra configuration needed

Usable on its own
 • atlas-mvn passes parameters
   and goals straight through

                                    26
                                     26
Getting involved



•Be the change you seek.
•          -- Atlassian Value the Fifth


                                          27
                                           27
Vital statistics
• The SDK is open source
 • Apache 2.0

• Frequent updates, both features and support for
  new releases
• Committers outside Atlassian
 • Preconfigured home directories - Jonathan Doklovic

                                                       28
                                                        28
Helping out"
• http://studio.atlassian.com/browse/AMPS
• Things YOU can help with right now:
 • Documentation
 • Testing on Windows

• Features YOU can help with:
 • Per-plugin storage
 • Integrated release process to PAC and Maven


                                                 29
                                                  29
AtlasCamp – October 2010




                           30
                            30
AtlasCamp – October 2010




                           30
                            30
AtlasCamp – October 2010




                           30
                            30
AtlasCamp – October 2010




                           30
                            30
AtlasCamp – October 2010




                           30
                            30
AtlasCamp – October 2010




                           30
                            30
Wrap-up
SDK makes plugin and gadget
 creation easier
Works in all products
Faster code/test/debug cycle
Tight integration with Atlassian build
 systems
Flexible enough to also work in your
 system


                                         31
                                          31
Resources
• Writing plugins: http://confluence.atlassian.com/x/CgbvCw
• Marketing for plugins: http://plugins.atlassian.com
• Hosting for plugins: http://studio.plugins.atlassian.com
• Developer forums: http://forums.atlassian.com
• Contact Developer Relations:
 • developer-relations@atlassian.com
 • irc.freenode.net #atlassiandev



                                                             32
                                                              32

Weitere ähnliche Inhalte

Was ist angesagt?

Enterprise Maven Repository BOF
Enterprise Maven Repository BOFEnterprise Maven Repository BOF
Enterprise Maven Repository BOFMax Andersen
 
How to be effective with JBoss Developer Studio
How to be effective with JBoss Developer StudioHow to be effective with JBoss Developer Studio
How to be effective with JBoss Developer StudioMax Andersen
 
Tycho - good, bad or ugly ?
Tycho - good, bad or ugly ?Tycho - good, bad or ugly ?
Tycho - good, bad or ugly ?Max Andersen
 
Note - Apache Maven Intro
Note - Apache Maven IntroNote - Apache Maven Intro
Note - Apache Maven Introboyw165
 
Scripting Support in GFv3 Prelude - Full Version
Scripting Support in GFv3 Prelude - Full VersionScripting Support in GFv3 Prelude - Full Version
Scripting Support in GFv3 Prelude - Full VersionEduardo Pelegri-Llopart
 
Build Trust in Your Build-to-Deployment Flow!
Build Trust in Your Build-to-Deployment Flow!Build Trust in Your Build-to-Deployment Flow!
Build Trust in Your Build-to-Deployment Flow!Baruch Sadogursky
 
JBoss Enterprise Maven Repository
JBoss Enterprise Maven RepositoryJBoss Enterprise Maven Repository
JBoss Enterprise Maven RepositoryMax Andersen
 
An Introduction to Maven Part 1
An Introduction to Maven Part 1An Introduction to Maven Part 1
An Introduction to Maven Part 1MD Sayem Ahmed
 
JavaOne 2009 Deploying Apps for Consumers Bof5150
JavaOne 2009 Deploying Apps for Consumers Bof5150JavaOne 2009 Deploying Apps for Consumers Bof5150
JavaOne 2009 Deploying Apps for Consumers Bof5150Jeff Hoffman
 
Rationalize Android Development with StAnD - Clement Escoffier, akquinet
Rationalize Android Development with StAnD - Clement Escoffier, akquinetRationalize Android Development with StAnD - Clement Escoffier, akquinet
Rationalize Android Development with StAnD - Clement Escoffier, akquinetParis Open Source Summit
 
Managed Beans: When, Why and How
Managed Beans: When, Why and HowManaged Beans: When, Why and How
Managed Beans: When, Why and HowRussell Maher
 
DevOps or: How I Learned to Stop Worrying and Love the Cloud
DevOps or: How I Learned to Stop Worrying and Love the CloudDevOps or: How I Learned to Stop Worrying and Love the Cloud
DevOps or: How I Learned to Stop Worrying and Love the CloudHirokazu MORIKAWA
 

Was ist angesagt? (17)

Enterprise Maven Repository BOF
Enterprise Maven Repository BOFEnterprise Maven Repository BOF
Enterprise Maven Repository BOF
 
Maven nutshell
Maven nutshellMaven nutshell
Maven nutshell
 
How to be effective with JBoss Developer Studio
How to be effective with JBoss Developer StudioHow to be effective with JBoss Developer Studio
How to be effective with JBoss Developer Studio
 
Tycho - good, bad or ugly ?
Tycho - good, bad or ugly ?Tycho - good, bad or ugly ?
Tycho - good, bad or ugly ?
 
Note - Apache Maven Intro
Note - Apache Maven IntroNote - Apache Maven Intro
Note - Apache Maven Intro
 
Scripting Support in GFv3 Prelude - Full Version
Scripting Support in GFv3 Prelude - Full VersionScripting Support in GFv3 Prelude - Full Version
Scripting Support in GFv3 Prelude - Full Version
 
Ant, Maven and Jenkins
Ant, Maven and JenkinsAnt, Maven and Jenkins
Ant, Maven and Jenkins
 
Build Trust in Your Build-to-Deployment Flow!
Build Trust in Your Build-to-Deployment Flow!Build Trust in Your Build-to-Deployment Flow!
Build Trust in Your Build-to-Deployment Flow!
 
Maven for eXo VN
Maven for eXo VNMaven for eXo VN
Maven for eXo VN
 
JBoss Enterprise Maven Repository
JBoss Enterprise Maven RepositoryJBoss Enterprise Maven Repository
JBoss Enterprise Maven Repository
 
An Introduction to Maven Part 1
An Introduction to Maven Part 1An Introduction to Maven Part 1
An Introduction to Maven Part 1
 
JavaOne 2009 Deploying Apps for Consumers Bof5150
JavaOne 2009 Deploying Apps for Consumers Bof5150JavaOne 2009 Deploying Apps for Consumers Bof5150
JavaOne 2009 Deploying Apps for Consumers Bof5150
 
Maven Introduction
Maven IntroductionMaven Introduction
Maven Introduction
 
Maven
Maven Maven
Maven
 
Rationalize Android Development with StAnD - Clement Escoffier, akquinet
Rationalize Android Development with StAnD - Clement Escoffier, akquinetRationalize Android Development with StAnD - Clement Escoffier, akquinet
Rationalize Android Development with StAnD - Clement Escoffier, akquinet
 
Managed Beans: When, Why and How
Managed Beans: When, Why and HowManaged Beans: When, Why and How
Managed Beans: When, Why and How
 
DevOps or: How I Learned to Stop Worrying and Love the Cloud
DevOps or: How I Learned to Stop Worrying and Love the CloudDevOps or: How I Learned to Stop Worrying and Love the Cloud
DevOps or: How I Learned to Stop Worrying and Love the Cloud
 

Ähnlich wie How the Atlassian Plugin SDK Cured Cancer and Reunited Soundgarden - Atlassian Summit 2010

Jbossworld Presentation
Jbossworld PresentationJbossworld Presentation
Jbossworld PresentationDan Hinojosa
 
Virtualize and automate your development environment for fun and profit
Virtualize and automate your development environment for fun and profitVirtualize and automate your development environment for fun and profit
Virtualize and automate your development environment for fun and profitAndreas Heim
 
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)VMware Tanzu
 
Custom Buildpacks and Data Services
Custom Buildpacks and Data ServicesCustom Buildpacks and Data Services
Custom Buildpacks and Data ServicesTom Kranz
 
Java Build Tools
Java Build ToolsJava Build Tools
Java Build Tools­Avishek A
 
CoC NA 2023 - Reproducible Builds for the JVM and beyond.pptx
CoC NA 2023 - Reproducible Builds for the JVM and beyond.pptxCoC NA 2023 - Reproducible Builds for the JVM and beyond.pptx
CoC NA 2023 - Reproducible Builds for the JVM and beyond.pptxHervé Boutemy
 
CQ5 Development Setup, Maven Build and Deployment
CQ5 Development Setup, Maven Build and DeploymentCQ5 Development Setup, Maven Build and Deployment
CQ5 Development Setup, Maven Build and Deployment6D Global
 
CQ5 Development Setup, Maven Build and Deployment
CQ5 Development Setup, Maven Build and DeploymentCQ5 Development Setup, Maven Build and Deployment
CQ5 Development Setup, Maven Build and Deploymentklcodanr
 
7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins UsersAndrew Bayer
 
Continuous Delivery Applied
Continuous Delivery AppliedContinuous Delivery Applied
Continuous Delivery AppliedExcella
 
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)Mike McGarr
 
Dev ops tools and was liberty profile
Dev ops tools and was liberty profileDev ops tools and was liberty profile
Dev ops tools and was liberty profilesflynn073
 
Automating development-operations-v1
Automating development-operations-v1Automating development-operations-v1
Automating development-operations-v1Sumanth Vepa
 
So. many. vulnerabilities. Why are containers such a mess and what to do abou...
So. many. vulnerabilities. Why are containers such a mess and what to do abou...So. many. vulnerabilities. Why are containers such a mess and what to do abou...
So. many. vulnerabilities. Why are containers such a mess and what to do abou...Eric Smalling
 
Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakayaMbakaya Kwatukha
 
NI Package Manager
NI Package ManagerNI Package Manager
NI Package ManagerDMC, Inc.
 
Continuous delivery applied
Continuous delivery appliedContinuous delivery applied
Continuous delivery appliedMike McGarr
 

Ähnlich wie How the Atlassian Plugin SDK Cured Cancer and Reunited Soundgarden - Atlassian Summit 2010 (20)

Jbossworld Presentation
Jbossworld PresentationJbossworld Presentation
Jbossworld Presentation
 
Virtualize and automate your development environment for fun and profit
Virtualize and automate your development environment for fun and profitVirtualize and automate your development environment for fun and profit
Virtualize and automate your development environment for fun and profit
 
Maven
MavenMaven
Maven
 
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
 
Custom Buildpacks and Data Services
Custom Buildpacks and Data ServicesCustom Buildpacks and Data Services
Custom Buildpacks and Data Services
 
Java Build Tools
Java Build ToolsJava Build Tools
Java Build Tools
 
CoC NA 2023 - Reproducible Builds for the JVM and beyond.pptx
CoC NA 2023 - Reproducible Builds for the JVM and beyond.pptxCoC NA 2023 - Reproducible Builds for the JVM and beyond.pptx
CoC NA 2023 - Reproducible Builds for the JVM and beyond.pptx
 
CQ5 Development Setup, Maven Build and Deployment
CQ5 Development Setup, Maven Build and DeploymentCQ5 Development Setup, Maven Build and Deployment
CQ5 Development Setup, Maven Build and Deployment
 
CQ5 Development Setup, Maven Build and Deployment
CQ5 Development Setup, Maven Build and DeploymentCQ5 Development Setup, Maven Build and Deployment
CQ5 Development Setup, Maven Build and Deployment
 
7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users
 
Continuous Delivery Applied
Continuous Delivery AppliedContinuous Delivery Applied
Continuous Delivery Applied
 
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
 
Dev ops tools and was liberty profile
Dev ops tools and was liberty profileDev ops tools and was liberty profile
Dev ops tools and was liberty profile
 
Continuous Delivery Applied
Continuous Delivery AppliedContinuous Delivery Applied
Continuous Delivery Applied
 
Automating development-operations-v1
Automating development-operations-v1Automating development-operations-v1
Automating development-operations-v1
 
Maven
MavenMaven
Maven
 
So. many. vulnerabilities. Why are containers such a mess and what to do abou...
So. many. vulnerabilities. Why are containers such a mess and what to do abou...So. many. vulnerabilities. Why are containers such a mess and what to do abou...
So. many. vulnerabilities. Why are containers such a mess and what to do abou...
 
Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakaya
 
NI Package Manager
NI Package ManagerNI Package Manager
NI Package Manager
 
Continuous delivery applied
Continuous delivery appliedContinuous delivery applied
Continuous delivery applied
 

Mehr von Atlassian

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020Atlassian
 
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 2020Atlassian
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App ShowcaseAtlassian
 
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 UIAtlassian
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge RuntimeAtlassian
 
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 ExperienceAtlassian
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge TriggersAtlassian
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeAtlassian
 
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 ModelAtlassian
 
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 SystemAtlassian
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the HoodAtlassian
 
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 APIsAtlassian
 
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 PluginAtlassian
 
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 BuildingAtlassian
 
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 MatterAtlassian
 
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 MindAtlassian
 
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 TeamsAtlassian
 
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 TeamAtlassian
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in MindAtlassian
 

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

Kürzlich hochgeladen

#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 

Kürzlich hochgeladen (20)

#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 

How the Atlassian Plugin SDK Cured Cancer and Reunited Soundgarden - Atlassian Summit 2010

  • 1. 1 1
  • 2. How the Atlassian Plugin SDK Cured Cancer and Reunited Soundgarden Ben Speakmon Developer Relations 2 2
  • 3. Agenda • Developer Relations • Definitions • Challenges in writing plugins • How the SDK addresses them • SDK in action • Getting involved • Wrap-up 3 3
  • 4. Developer Relations • Dedicated product team • Started in June 2009 • Based in San Francisco • Two full-time developers • In addition to the SDK… • plugins.atlassian.com • studio.plugins.atlassian.com • Developer documentation 4 4
  • 5. What weʼve got to show for it • First SDK release in October 2009 • February 2010 Doc Sprint at AtlasCamp • Completely new developer • 16 releases since documentation • 20 new tutorials • plugins.atlassian.com • Over 500 plugins • 1.1 release has searching, performance, and RSS feed improvements • studio.plugins.atlassian.com 5 • Over 500 hosted projects 5
  • 6. Definitions • SDK – Software Development Kit • Maven – Project management tool • Open source project at apache.org • Builds and Dependency management • Plugin – Code that adds a feature to a product • Maven plugins extend Maven • Atlassian plugins extend Atlassian products 6 6
  • 7. Plugin development challenges • I made this half-pony half-monkey monster to please you • But I get the feeling that you donʼt like it • Whatʼs with all the screaming? • -- Jonathan Coulton, “Skullcrusher Mountain” 7 7
  • 8. Effective plugin development • Different than product development • Work within someone elseʼs sandbox • Three things that MUST be easy: • Starting the product • Configuring the product • Installing the plugin 8 8
  • 9. Challenge #1: Starting the product Product Startup method JIRA bin/startup.sh or .bat (standalone) or WAR install into app. server Confluence bin/startup.sh or .bat (standalone) or WAR install into app. server Bamboo bamboo.sh or Win32 service or WAR install into app. server Crowd start_crowd.sh or .bat (standalone) or WAR install into app. server FishEye/Crucible run.sh or .bat – no WAR version available 9 9
  • 10. Challenge #2: Configuring the product Product Data and logs Configuration directory JIRA jira-home WEB-INF/classes/jira-application.properties Confluence No default WEB-INF/classes/confluence-init.properties Bamboo No default WEB-INF/classes/bamboo-init.properties Crowd No default WEB-INF/classes/crowd-init.properties, system property, servlet context property FishEye/Crucible var FISHEYE_INST environment variable 10 10
  • 11. Challenge #3: Installing a plugin Product Plugin install methods JIRA Two plugin directories for different plugin systems, web interface Confluence Two plugin directories for different plugin systems, web interface, plugin repository Bamboo Two plugin directories for different plugin systems Crowd One plugin directory (plugins 2 only) FishEye/Crucible One plugin directory (plugins 2 only) 11 11
  • 12. And if that wasnʼt enough… Build systems • Maven 1 or 2? Ant? • Dependencies are really confusing Starting a plugin project • Expert product knowledge required just to get started • Maven archetypes are too hard to use 12 12
  • 13. It all adds up to… Lots of small headaches == big headache • Not your fault • Not your job to fix them Slow code/test/debug cycle Frustration 13 13
  • 14. How the SDK deals with the challenges •“What is happiness? The feeling that power is growing, that resistance is overcome.” • --Friedrich Nietzsche, LISP user 14 14
  • 15. Challenge #1: Starting the product Product Startup method JIRA bin/startup.sh or .bat (standalone) or WAR install into app. server Confluence bin/startup.sh or .bat (standalone) or WAR install into app. server Bamboo bamboo.sh or Win32 service or WAR install into app. server Crowd start_crowd.sh or .bat (standalone) or WAR install into app. server FishEye/Crucible run.sh or .bat – no WAR version available 15 15
  • 16. Challenge #1: Starting the product Product Startup method JIRA bin/startup.sh or .bat (standalone) or WAR install into app. server Confluence bin/startup.sh or .bat (standalone) or WAR install into app. server Bamboo bamboo.sh or Win32 service or WAR install into app. server Crowd start_crowd.sh or .bat (standalone) or WAR install into app. server FishEye/Crucible run.sh or .bat – no WAR version available 15 15
  • 17. Challenge #1: Starting the product Product Startup method JIRA bin/startup.sh or .bat (standalone) or WAR install into app. server Confluence bin/startup.sh or .bat (standalone) or WAR install into app. server Bamboo bamboo.sh or Win32 service or WAR install into app. server Crowd start_crowd.sh or .bat (standalone) or WAR install into app. server FishEye/Crucible run.sh or .bat – no WAR version available • atlas-run 15 15
  • 18. Challenge #2: Configuring the product Product Data and logs Configuration directory JIRA jira-home WEB-INF/classes/jira-application.properties Confluence No default WEB-INF/classes/confluence-init.properties Bamboo No default WEB-INF/classes/bamboo-init.properties Crowd No default WEB-INF/classes/crowd-init.properties, system property, servlet context property FishEye/Crucible var FISHEYE_INST environment variable 16 16
  • 19. Challenge #2: Configuring the product Product Data and logs Configuration directory JIRA jira-home WEB-INF/classes/jira-application.properties Confluence No default WEB-INF/classes/confluence-init.properties Bamboo No default WEB-INF/classes/bamboo-init.properties Crowd No default WEB-INF/classes/crowd-init.properties, system property, servlet context property FishEye/Crucible var FISHEYE_INST environment variable 16 16
  • 20. Challenge #2: Configuring the product Product Data and logs Configuration directory JIRA jira-home WEB-INF/classes/jira-application.properties Confluence No default WEB-INF/classes/confluence-init.properties Bamboo No default WEB-INF/classes/bamboo-init.properties Crowd No default WEB-INF/classes/crowd-init.properties, system property, servlet context property FishEye/Crucible var FISHEYE_INST environment variable • Logs sent to console 16 16
  • 21. Challenge #2: Configuring the product Product Data and logs Configuration directory JIRA jira-home WEB-INF/classes/jira-application.properties Confluence No default WEB-INF/classes/confluence-init.properties Bamboo No default WEB-INF/classes/bamboo-init.properties Crowd No default WEB-INF/classes/crowd-init.properties, system property, servlet context property FishEye/Crucible var FISHEYE_INST environment variable • Logs sent to console • Preconfigured data directories 16 16
  • 22. Challenge #3: Installing a plugin Product Plugin install methods JIRA Two plugin directories for different plugin systems, web interface Confluence Two plugin directories for different plugin systems, web interface, plugin repository Bamboo Two plugin directories for different plugin systems Crowd One plugin directory (plugins 2 only) FishEye/Crucible One plugin directory (plugins 2 only) 17 17
  • 23. Challenge #3: Installing a plugin Product Plugin install methods JIRA Two plugin directories for different plugin systems, web interface Confluence Two plugin directories for different plugin systems, web interface, plugin repository Bamboo Two plugin directories for different plugin systems Crowd One plugin directory (plugins 2 only) FishEye/Crucible One plugin directory (plugins 2 only) 17 17
  • 24. Challenge #3: Installing a plugin Product Plugin install methods JIRA Two plugin directories for different plugin systems, web interface Confluence Two plugin directories for different plugin systems, web interface, plugin repository Bamboo Two plugin directories for different plugin systems Crowd One plugin directory (plugins 2 only) FishEye/Crucible One plugin directory (plugins 2 only) • Automatic through atlas-run 17 17
  • 25. SDK Design •“You can get more of what you want with a kind word and a gun than you can with just a kind word.” • --Al Capone, project manager 18 18
  • 26. Atlassian Maven Plugins Suite • Suite of Maven plugins • maven-jira-plugin, maven-confluence-plugin, etc. • Common interface to products: • Handles installation and configuration • Can be used independently of the SDK • Very handy if you already have a Maven system 19 19
  • 27. Script shortcuts Task Maven command Script shortcut Start the product with the current plugin mvn amps:run atlas-run preinstalled Start the product with the current plugin mvn amps:debug atlas-debug preinstalled and allow a debugger to attach Start JIRA on port 8243 and context mvn amps:run atlas-run “myjira” with the current plugin –Dproduct=jira --product jira preinstalled –Dcontext.path=/myjira --context-path /myjira –Dhttp.port=8243 --http-port 8243 Run an arbitrary Maven command mvn myplugin:mygoal atlas-mvn myplugin:mygoal <parameters> <parameters> 20 20
  • 28. SDK in action • A thousand moral paintings I can show • That shall demonstrate these quick blows of Fortuneʼs • More pregnantly than words. • Timon of Athens, I:i 21 21
  • 29. 30-second Plugin Creation™ • Creating a plugin is dirt simple! • atlas-create-<product>-plugin • Executes a Maven archetype • Automatically prompts for required information • Created plugin works out of the box 22 22
  • 30. Creating a new JIRA plugin 23 23
  • 31. Creating a new JIRA plugin 23 23
  • 32. Automatic resource reloading Plugin web resources are monitored • Detects changes and automatically updates Reinstall plugin for Java updates 24 24
  • 33. Changing a live gadget 25 25
  • 34. Changing a live gadget 25 25
  • 35. Boxed Maven Contains a standalone, isolated Maven 2.1.0 • Uses Atlassian repositories by default • No extra configuration needed Usable on its own • atlas-mvn passes parameters and goals straight through 26 26
  • 36. Getting involved •Be the change you seek. • -- Atlassian Value the Fifth 27 27
  • 37. Vital statistics • The SDK is open source • Apache 2.0 • Frequent updates, both features and support for new releases • Committers outside Atlassian • Preconfigured home directories - Jonathan Doklovic 28 28
  • 38. Helping out" • http://studio.atlassian.com/browse/AMPS • Things YOU can help with right now: • Documentation • Testing on Windows • Features YOU can help with: • Per-plugin storage • Integrated release process to PAC and Maven 29 29
  • 39. AtlasCamp – October 2010 30 30
  • 40. AtlasCamp – October 2010 30 30
  • 41. AtlasCamp – October 2010 30 30
  • 42. AtlasCamp – October 2010 30 30
  • 43. AtlasCamp – October 2010 30 30
  • 44. AtlasCamp – October 2010 30 30
  • 45. Wrap-up SDK makes plugin and gadget creation easier Works in all products Faster code/test/debug cycle Tight integration with Atlassian build systems Flexible enough to also work in your system 31 31
  • 46. Resources • Writing plugins: http://confluence.atlassian.com/x/CgbvCw • Marketing for plugins: http://plugins.atlassian.com • Hosting for plugins: http://studio.plugins.atlassian.com • Developer forums: http://forums.atlassian.com • Contact Developer Relations: • developer-relations@atlassian.com • irc.freenode.net #atlassiandev 32 32