Bringing Server Add-ons
to the Cloud
And Back again - our story of ScriptRunner for JIRA Cloud
ADAM MARKHAM | JON MORT | ADAPTAVIST | @ADAPTAVIST
ADAPTAVIST SCRIPTRUNNER
DEVELOPMENT TIMELINE
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sept Present
Connect Week
February
AtlasCamp
May
Write plugins
without writing a
plugin using
Groovy
SCRIPTRUNNER
Automate and Extend
Enhance Workflows
Dynamic Content
Event Handlers
Customise UI
Advanced Queries
REST Endpoints
Scheduled Tasks
JQL
Bundled JQL Functions - issueFunction
Powerful reporting
Built in Scripts
Bulk Fix Resolutions, Copy Project, Synchronise
Versions between projects, Manage watchers
Workflow
JQL Conditions, Simple Validators, Send Email,
Fast Track Transition, Create Sub-task, Clone
Bundled Macros
Include Version, CQL Search, Markdown,
Currency Converter
Built in Scripts
Copy Space, Bulk Delete Attachments/Comments,
Rename Labels, Change Author
Content Management
Add a comment to outdated pages, Prune Pages
Merge Checks
Require Approvers, Enforce JIRA Issue Key,
Restrict Target Branch, Block Out of Date PRs
Hooks
Protect Refs, Standards Enforcement, Trusted
Authors, Restrict File Size, Send Mail, Messages
Administrative
Mirror Bitbucket Cloud or Github, Clone
Repository, Naming Standards Enforcement, Auto
Add Tasks, Withdraw Approvals on Change
Take (allthethings) from
ScriptRunner Server to
the Cloud
GOAL
DEVELOPMENT TIMELINE
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sept Present
Connect Week
February
AtlasCamp
May
DEVELOPMENT TIMELINE - AUGUST
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sept Present
Connect Week
February
AtlasCamp
May
August
ShipIt
Result
Tech Stack
Where next for ScriptRunner?
Atlassian Cloud of course
Which app?
JIRA first
But how to bring it to Cloud?
Many challenges - mostly deferred
August
What did we ship?
Scripted Workflow Post Functions
Script Console
Hacky JQL Function workaround
ShipIt
Result
Tech Stack
In a nutshell
Remote code exploitation
August
The Choices
Play
Atlassian Connect Express (ACE)
We chose to do it our way
Ratpack
Why not use Play or ACE?
Groovy - written by users
Control
SR is not like anything else (or is it?)
Result
Tech Stack
ShipIt
RATPACK
Ratpack is a set of Java libraries for building modern
HTTP applications.
It provides just enough for writing practical, high
performance, apps.
It is built on Java 8, Netty
and reactive principles.
JVM
Great Groovy support.
All the libraries we know.
Lightweight
No application server. Single executable Jar.
And fast.
Asynchronous
Concurrent request processing.
Connect is inherently async
JVM
Great Groovy support.
All the libraries we know.
Lightweight
No application server. Single executable Jar.
And fast.
Asynchronous
Concurrent request processing.
Connect is inherently async
JVM
Great Groovy support.
All the libraries we know.
Lightweight
No application server. Single executable Jar.
And fast.
Asynchronous
Concurrent request processing.
Connect is inherently async
Ratpack in Java
public static void main(String... args) throws Exception {
RatpackServer.start(server -> server
.serverConfig(ServerConfig.embedded()
.publicAddress(new URI("http://company.org")))
.registryOf(registry -> registry.add("World!"))
.handlers(chain -> chain
.get(ctx -> ctx.render("Hello " + ctx.get(String.class)))
.get(":name", ctx ->
ctx.render("Hello " + ctx.getPathTokens().get("name") + "!"))
)
);
}
Ratpack in Groovy
ratpack {
serverConfig { it.publicAddress(new URI("http://company.org")) }
bindings {
add "World"
}
handlers {
get { String world ->
render "Hello ${world}!"
}
get(":name") {
render "Hello ${pathTokens.name}!"
}
}
}
DEVELOPMENT TIMELINE - AUGUST
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sept Present
Connect Week
February
AtlasCamp
May
DEVELOPMENT TIMELINE - JANUARY
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sept Present
Connect Week
February
AtlasCamp
May
Port not a Fork
Three
Categories
of Feature
Re-implement
Re-think
Can’t Do
Cloud is different, but similar
Some extension points don’t exist on Cloud, others are
different
Same Concepts
Good mapping from Server to Cloud so we can just re-
implement using the same metaphors
Very few differences
There might be some differences but mostly they are
the same
Three
Categories
of Feature
Re-implement
Re-think
Can’t Do
No extension point
There is no direct extension point. We have to re-think
the feature to give a similar level of functionality
Calculated Custom Fields
Base need is to be able to update a field based on
other values. Custom field replaced by webhook based
update
JQL Extensions
Initially we thought we couldn’t do this. But using
Aliases and Filters we can get to a similar level of
functionality
Three
Categories
of Feature
Re-implement
Re-think
Can’t Do
Extension Point is missing
There are some things we just can’t do
Synchronous workflow interaction
Workflow conditions and validators are a no-go
Behaviours
We can’t inject Javascript onto the page
Workaround or Fix
Or just be comfortable that we can’t do it
Development Cycle
Running into limitations and frustrations
Shipping Often
Multiple times a day
Managing multiple environments
Code Sharing
Very little No code is shared between Cloud and
Server
Continuous Delivery
We are running on AWS with lots of automated
tests
We might be
doing
DevOps
now?
Shipping Often
Multiple times a day
Managing multiple environments
Code Sharing
Very little No code is shared between Cloud and
Server
Continuous Delivery
We are running on AWS with lots of automated
tests
We might be
doing
DevOps
now?
Shipping Often
Multiple times a day
Managing multiple environments
Code Sharing
Very little No code is shared between Cloud and
Server
Continuous Delivery
We are running on AWS with lots of automated
tests
We might be
doing
DevOps
now?
DEVELOPMENT TIMELINE - JANUARY
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sept Present
Connect Week
February
AtlasCamp
May
DEVELOPMENT TIMELINE - FEBRUARY
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sept Present
Connect Week
February
AtlasCamp
May
JQL and Custom Field Ideas
Talking through with Atlassian Devs about how
we can achieve feature parity and knock off
some of the rough edges
HipChat Spike
8hrs to a working HipChat implementation
Confluence Support
Perpetually coming soon.
Scripted Macros
Connect
Week
JQL and Custom Field Ideas
Talking through with Atlassian Devs about how
we can achieve feature parity and knock off
some of the rough edges
HipChat Spike
8hrs to a working HipChat implementation
Confluence Support
Perpetually coming soon.
Scripted Macros
Connect
Week
JQL and Custom Field Ideas
Talking through with Atlassian Devs about how
we can achieve feature parity and knock off
some of the rough edges
HipChat Spike
8hrs to a working HipChat implementation
Confluence Support
Perpetually coming soon
Scripted Macros
Connect
Week
DEVELOPMENT TIMELINE - FEBRUARY
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sept Present
Connect Week
February
AtlasCamp
May
DEVELOPMENT TIMELINE - MAY
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sept Present
Connect Week
February
AtlasCamp
May
MARCH TILL MAY
Many
Distractions.
Demo for ShipIt
Live.
Your a SaaS
provider now
Not Just A Jar
Environment
Operations
Service not a Jar
Many more things to think about
Fewer versions to worry about
One version to rule them all
More control
Customers upgrade when you want and using
whatever technology you like
Your a SaaS
provider now
Not Just A Jar
Environment
Operations
Uptime
99% 99.9% 99.99%
Scaling
Load balancing your service
Services
Coping with third party outages
JIRA Cloud has daily maintenance windows
Your a SaaS
provider now
Not Just A Jar
Environment
Operations
0 downtime deployments
Customers must not notice when you deploy
Monitoring
Logs must be centralised and correlated
Metrics should be useful
Dashboards should be beautiful
Alerting
Choosing the right metrics to alert on is hard
Always be iterating on what wakes you up at night
DEVELOPMENT TIMELINE - JUNE
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sep Present
Connect Week
February
AtlasCamp
May
DEVELOPMENT TIMELINE - LAUNCH
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sep Present
Connect Week
February
AtlasCamp
May
in September
Running the Service
is a little scary
Real Customers
Need support
Have good ideas
Invalid expectations
Post Launch
We learned a lot!
Reporting
Marketplace has good tools for cloud
reporting. Conversion rates,
renewals, churn.
Customer Feedback
Changed our priorities. 

JQL is needed.
Evaluations
Paying customers after 30 days?
Nope
Promotions
Can we give it away or cheap for the
first 3 months?
December
You don’t get this on Server
Jars don’t just stop working
Logs are important
Lifeline in diagnosing what went wrong across
many different systems
Iterate Operations
Alerting needed improving. Increase tolerance
of failure
December
First outage
You don’t get this on Server
Jars don’t just stop working
Logs are important
Lifeline in diagnosing what went wrong across
many different systems
Iterate Operations
Alerting needed improving. Increase tolerance
of failure
December
First outage
You don’t get this on Server
Jars don’t just stop working
Logs are important
Lifeline in diagnosing what went wrong across
many different systems
Iterate Operations
Alerting needed improving. Increase tolerance
to failure
December
First outage
Enhanced JQL
FEATURE IN DEPTH
issueFunction in hasComments(3)
numberOfComments = 3
issueFunction in commented("jmort")
commentedBy = "jmort"
issueFunction in linkedIssuesOf("project = FOO")
(can’t do yet)
ENHANCED JQL - SERVER
issueFunction in hasComments(3)
numberOfComments = 3
issueFunction in commented("jmort")
commentedBy = "jmort"
issueFunction in linkedIssuesOf("project = FOO")
(can’t do yet)
ENHANCED JQL - CLOUD
Launch
Took planning to ensure we had capacity and
we could monitor
Customer Feedback
Was immediate and positive
Getting it right
Nearly launched, pulled it and thought againJQL Aliases
Launch
Launch
Took planning to ensure we had capacity and
we could monitor
Customer Feedback
Was immediate and positive
Getting it right
Nearly launched, pulled it and thought againJQL Aliases
Launch
Launch
Took planning to ensure we had capacity and
we could monitor
Customer Feedback
Was immediate and positive
Getting it right
Nearly launched, pulled it and thought againJQL Aliases
Launch
Infrastructure
Lambda, SNS, SQS,
Cloud Watch, EC2,
ELB.
Must scale
Permissions
Add-on user must be
able to see all issues.
Issue Links
No webhook for
links, so we have to
work it out!
JRA-8505 Please!!!!
Initial Sync
We must crawl every
issue of every
instance.
What makes JQL so tricky?
JRA-8505
Please. Pretty Please. With a cherry on top.
DEVELOPMENT TIMELINE - SEPTEMBER
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sep Present
Connect Week
February
AtlasCamp
May
DEVELOPMENT TIMELINE - FUTURE
ShipIt
Initial version
Preparing for
launch - now with
a team
Launch
Future
Aug 2015 Jan June Sep Present
Connect Week
February
AtlasCamp
May
To the Server
Take JQL Aliases
to the Server
(allthethings)
Support Confluence,
HipChat, Bitbucket and Trello
The Future
What is the Same on Server
Support
Similar questions and use cases
Using the API
Atlassian Community
AUI/ADG
UI is the same libs
Metaphors
Same JIRA
Mostly the same…
Used for the same kinds of things
Marketplace
Same listing
Reviews
Reputation
Summary
Support
is easier in the cloud
One version, we have the logs
Ship faster
Features, bugs and bug fixes
To everyone
All at once
Cloud is another world
Connect has more freedom
P2 is easier to get things done
SaaS
is a totally different ball game
https://www.flickr.com/photos/kjarrett/8315033844
Join us in the Cloud
Thank you!
ADAM MARKHAM | JON MORT | ADAPTAVIST | @ADAPTAVIST
All stock images sourced from
https://www.pexels.com/
used under CC0
Creative Commons Zero (CC0) license

Bringing Server Add-ons to the Cloud and Back Again

  • 1.
    Bringing Server Add-ons tothe Cloud And Back again - our story of ScriptRunner for JIRA Cloud ADAM MARKHAM | JON MORT | ADAPTAVIST | @ADAPTAVIST
  • 2.
  • 3.
    DEVELOPMENT TIMELINE ShipIt Initial version Preparingfor launch - now with a team Launch Future Aug 2015 Jan June Sept Present Connect Week February AtlasCamp May
  • 4.
    Write plugins without writinga plugin using Groovy SCRIPTRUNNER
  • 5.
    Automate and Extend EnhanceWorkflows Dynamic Content Event Handlers Customise UI Advanced Queries REST Endpoints Scheduled Tasks
  • 6.
    JQL Bundled JQL Functions- issueFunction Powerful reporting Built in Scripts Bulk Fix Resolutions, Copy Project, Synchronise Versions between projects, Manage watchers Workflow JQL Conditions, Simple Validators, Send Email, Fast Track Transition, Create Sub-task, Clone
  • 7.
    Bundled Macros Include Version,CQL Search, Markdown, Currency Converter Built in Scripts Copy Space, Bulk Delete Attachments/Comments, Rename Labels, Change Author Content Management Add a comment to outdated pages, Prune Pages
  • 8.
    Merge Checks Require Approvers,Enforce JIRA Issue Key, Restrict Target Branch, Block Out of Date PRs Hooks Protect Refs, Standards Enforcement, Trusted Authors, Restrict File Size, Send Mail, Messages Administrative Mirror Bitbucket Cloud or Github, Clone Repository, Naming Standards Enforcement, Auto Add Tasks, Withdraw Approvals on Change
  • 9.
    Take (allthethings) from ScriptRunnerServer to the Cloud GOAL
  • 10.
    DEVELOPMENT TIMELINE ShipIt Initial version Preparingfor launch - now with a team Launch Future Aug 2015 Jan June Sept Present Connect Week February AtlasCamp May
  • 11.
    DEVELOPMENT TIMELINE -AUGUST ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sept Present Connect Week February AtlasCamp May
  • 12.
    August ShipIt Result Tech Stack Where nextfor ScriptRunner? Atlassian Cloud of course Which app? JIRA first But how to bring it to Cloud? Many challenges - mostly deferred
  • 13.
    August What did weship? Scripted Workflow Post Functions Script Console Hacky JQL Function workaround ShipIt Result Tech Stack In a nutshell Remote code exploitation
  • 14.
    August The Choices Play Atlassian ConnectExpress (ACE) We chose to do it our way Ratpack Why not use Play or ACE? Groovy - written by users Control SR is not like anything else (or is it?) Result Tech Stack ShipIt
  • 15.
    RATPACK Ratpack is aset of Java libraries for building modern HTTP applications. It provides just enough for writing practical, high performance, apps. It is built on Java 8, Netty and reactive principles.
  • 16.
    JVM Great Groovy support. Allthe libraries we know. Lightweight No application server. Single executable Jar. And fast. Asynchronous Concurrent request processing. Connect is inherently async
  • 17.
    JVM Great Groovy support. Allthe libraries we know. Lightweight No application server. Single executable Jar. And fast. Asynchronous Concurrent request processing. Connect is inherently async
  • 18.
    JVM Great Groovy support. Allthe libraries we know. Lightweight No application server. Single executable Jar. And fast. Asynchronous Concurrent request processing. Connect is inherently async
  • 19.
    Ratpack in Java publicstatic void main(String... args) throws Exception { RatpackServer.start(server -> server .serverConfig(ServerConfig.embedded() .publicAddress(new URI("http://company.org"))) .registryOf(registry -> registry.add("World!")) .handlers(chain -> chain .get(ctx -> ctx.render("Hello " + ctx.get(String.class))) .get(":name", ctx -> ctx.render("Hello " + ctx.getPathTokens().get("name") + "!")) ) ); }
  • 20.
    Ratpack in Groovy ratpack{ serverConfig { it.publicAddress(new URI("http://company.org")) } bindings { add "World" } handlers { get { String world -> render "Hello ${world}!" } get(":name") { render "Hello ${pathTokens.name}!" } } }
  • 21.
    DEVELOPMENT TIMELINE -AUGUST ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sept Present Connect Week February AtlasCamp May
  • 22.
    DEVELOPMENT TIMELINE -JANUARY ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sept Present Connect Week February AtlasCamp May
  • 23.
  • 24.
    Three Categories of Feature Re-implement Re-think Can’t Do Cloudis different, but similar Some extension points don’t exist on Cloud, others are different Same Concepts Good mapping from Server to Cloud so we can just re- implement using the same metaphors Very few differences There might be some differences but mostly they are the same
  • 25.
    Three Categories of Feature Re-implement Re-think Can’t Do Noextension point There is no direct extension point. We have to re-think the feature to give a similar level of functionality Calculated Custom Fields Base need is to be able to update a field based on other values. Custom field replaced by webhook based update JQL Extensions Initially we thought we couldn’t do this. But using Aliases and Filters we can get to a similar level of functionality
  • 26.
    Three Categories of Feature Re-implement Re-think Can’t Do ExtensionPoint is missing There are some things we just can’t do Synchronous workflow interaction Workflow conditions and validators are a no-go Behaviours We can’t inject Javascript onto the page
  • 27.
    Workaround or Fix Orjust be comfortable that we can’t do it Development Cycle Running into limitations and frustrations
  • 28.
    Shipping Often Multiple timesa day Managing multiple environments Code Sharing Very little No code is shared between Cloud and Server Continuous Delivery We are running on AWS with lots of automated tests We might be doing DevOps now?
  • 29.
    Shipping Often Multiple timesa day Managing multiple environments Code Sharing Very little No code is shared between Cloud and Server Continuous Delivery We are running on AWS with lots of automated tests We might be doing DevOps now?
  • 30.
    Shipping Often Multiple timesa day Managing multiple environments Code Sharing Very little No code is shared between Cloud and Server Continuous Delivery We are running on AWS with lots of automated tests We might be doing DevOps now?
  • 31.
    DEVELOPMENT TIMELINE -JANUARY ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sept Present Connect Week February AtlasCamp May
  • 32.
    DEVELOPMENT TIMELINE -FEBRUARY ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sept Present Connect Week February AtlasCamp May
  • 33.
    JQL and CustomField Ideas Talking through with Atlassian Devs about how we can achieve feature parity and knock off some of the rough edges HipChat Spike 8hrs to a working HipChat implementation Confluence Support Perpetually coming soon. Scripted Macros Connect Week
  • 34.
    JQL and CustomField Ideas Talking through with Atlassian Devs about how we can achieve feature parity and knock off some of the rough edges HipChat Spike 8hrs to a working HipChat implementation Confluence Support Perpetually coming soon. Scripted Macros Connect Week
  • 35.
    JQL and CustomField Ideas Talking through with Atlassian Devs about how we can achieve feature parity and knock off some of the rough edges HipChat Spike 8hrs to a working HipChat implementation Confluence Support Perpetually coming soon Scripted Macros Connect Week
  • 36.
    DEVELOPMENT TIMELINE -FEBRUARY ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sept Present Connect Week February AtlasCamp May
  • 37.
    DEVELOPMENT TIMELINE -MAY ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sept Present Connect Week February AtlasCamp May
  • 38.
  • 39.
    Your a SaaS providernow Not Just A Jar Environment Operations Service not a Jar Many more things to think about Fewer versions to worry about One version to rule them all More control Customers upgrade when you want and using whatever technology you like
  • 40.
    Your a SaaS providernow Not Just A Jar Environment Operations Uptime 99% 99.9% 99.99% Scaling Load balancing your service Services Coping with third party outages JIRA Cloud has daily maintenance windows
  • 41.
    Your a SaaS providernow Not Just A Jar Environment Operations 0 downtime deployments Customers must not notice when you deploy Monitoring Logs must be centralised and correlated Metrics should be useful Dashboards should be beautiful Alerting Choosing the right metrics to alert on is hard Always be iterating on what wakes you up at night
  • 42.
    DEVELOPMENT TIMELINE -JUNE ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sep Present Connect Week February AtlasCamp May
  • 43.
    DEVELOPMENT TIMELINE -LAUNCH ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sep Present Connect Week February AtlasCamp May
  • 44.
  • 45.
    Running the Service isa little scary Real Customers Need support Have good ideas Invalid expectations Post Launch
  • 46.
    We learned alot! Reporting Marketplace has good tools for cloud reporting. Conversion rates, renewals, churn. Customer Feedback Changed our priorities. 
 JQL is needed. Evaluations Paying customers after 30 days? Nope Promotions Can we give it away or cheap for the first 3 months?
  • 47.
  • 48.
    You don’t getthis on Server Jars don’t just stop working Logs are important Lifeline in diagnosing what went wrong across many different systems Iterate Operations Alerting needed improving. Increase tolerance of failure December First outage
  • 49.
    You don’t getthis on Server Jars don’t just stop working Logs are important Lifeline in diagnosing what went wrong across many different systems Iterate Operations Alerting needed improving. Increase tolerance of failure December First outage
  • 50.
    You don’t getthis on Server Jars don’t just stop working Logs are important Lifeline in diagnosing what went wrong across many different systems Iterate Operations Alerting needed improving. Increase tolerance to failure December First outage
  • 51.
  • 52.
    issueFunction in hasComments(3) numberOfComments= 3 issueFunction in commented("jmort") commentedBy = "jmort" issueFunction in linkedIssuesOf("project = FOO") (can’t do yet) ENHANCED JQL - SERVER
  • 53.
    issueFunction in hasComments(3) numberOfComments= 3 issueFunction in commented("jmort") commentedBy = "jmort" issueFunction in linkedIssuesOf("project = FOO") (can’t do yet) ENHANCED JQL - CLOUD
  • 54.
    Launch Took planning toensure we had capacity and we could monitor Customer Feedback Was immediate and positive Getting it right Nearly launched, pulled it and thought againJQL Aliases Launch
  • 55.
    Launch Took planning toensure we had capacity and we could monitor Customer Feedback Was immediate and positive Getting it right Nearly launched, pulled it and thought againJQL Aliases Launch
  • 56.
    Launch Took planning toensure we had capacity and we could monitor Customer Feedback Was immediate and positive Getting it right Nearly launched, pulled it and thought againJQL Aliases Launch
  • 57.
    Infrastructure Lambda, SNS, SQS, CloudWatch, EC2, ELB. Must scale Permissions Add-on user must be able to see all issues. Issue Links No webhook for links, so we have to work it out! JRA-8505 Please!!!! Initial Sync We must crawl every issue of every instance. What makes JQL so tricky?
  • 58.
    JRA-8505 Please. Pretty Please.With a cherry on top.
  • 59.
    DEVELOPMENT TIMELINE -SEPTEMBER ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sep Present Connect Week February AtlasCamp May
  • 60.
    DEVELOPMENT TIMELINE -FUTURE ShipIt Initial version Preparing for launch - now with a team Launch Future Aug 2015 Jan June Sep Present Connect Week February AtlasCamp May
  • 61.
    To the Server TakeJQL Aliases to the Server (allthethings) Support Confluence, HipChat, Bitbucket and Trello The Future
  • 62.
    What is theSame on Server Support Similar questions and use cases Using the API Atlassian Community AUI/ADG UI is the same libs Metaphors Same JIRA Mostly the same… Used for the same kinds of things Marketplace Same listing Reviews Reputation
  • 63.
    Summary Support is easier inthe cloud One version, we have the logs Ship faster Features, bugs and bug fixes To everyone All at once Cloud is another world Connect has more freedom P2 is easier to get things done SaaS is a totally different ball game
  • 64.
  • 65.
    Join us inthe Cloud
  • 66.
    Thank you! ADAM MARKHAM| JON MORT | ADAPTAVIST | @ADAPTAVIST
  • 67.
    All stock imagessourced from https://www.pexels.com/ used under CC0 Creative Commons Zero (CC0) license