Upload
colleenfry
View
165
Download
5
Tags:
Embed Size (px)
Citation preview
Hi! I'm Tim, a.k.a
Slides:
STUFF I LIKE
codingDVCSnew technologyAPIstime saversstar wars
STUFF I DON'T LIKE
meetingstime trackingoffice documentsbusiness process diagramsSOEmanagement science
@kannonboy
tinyurl.com/scratch-your-own-itch
Legions of Atlassian developers
1. Scratch your own itch
2. Build a back scratcher
3. Design for extension
4. Sell to millions
KEEPING DEVS HAPPY
Integration plugins
Application LinksReconciling issues and code
REST APIsClient-side Branching from broken commits
Designing for extensibilityPlugins for your pluginExporting Java APIs"Suggesting" PR reviewers
Extending JQL
git hooks
HOW IT WORKS
INTEGRATE ALL THE THINGSAnswer interesting questionsKill context switching
UAL makes it easy:AuthenticationZero-ConfPluggable
GIT HOOKS
$ git clone [email protected]:STASH/stash.git
Cloning into 'stash'...
done.
$ ls stash/.git/hooks
applypatch-msg.sample pre-applypatch.sample
commit-msg.sample pre-commit.sample
prepare-commit-msg.sample post-update.sample
pre-rebase.sample update.sample
$ git checkout 2.4.1
Switched to branch '2.4.1'
171957a has 5 green builds.
$ git checkout master
Switched to branch 'master'
Warning! c25e64d has 3 red builds.(Plus 3 green and 0 in progress)Details: https://stash.atlassian.com/rest/build-status/latest/commits/c25e64d
$ git checkout tpettersen/STASH-1984
Switched to branch 'tpettersen/stash-1984'
ff1837 hasn't built yet.
HOW IT WORKS
DESIGNING FOR EXTENSION - RESTExpose your dataUI is hard - let them script!Organic growthAuto-discovery via REST API browser
HOW IT WORKS
DESIGNING FOR EXTENSION -
modular designtoggle per customerx-product deployments
<module.. application="jira" />
customisation by external developers
:
<module-type key="my-type" class="MyModuleDescriptor">
MyModuleDescriptor.java
MyModuleInterface.java
trivial to implement
DESIGNING FOR EXTENSION - export services & utility classesmulti-module pluginssell add-ons for your add-onsother developers can stand on your shoulders
trivial to implement:
<component class="MyService" public="true" />
<instructions>
<Export-Package>
com.myplugin.api*;version=1.0
</Export-Package>
</instructions>
THIS IS JUST THE BEGINNING...
1. SCRATCH YOUR OWN ITCH
2. BUILD A BACK SCRATCHER
3. DESIGN FOR EXTENSION
REST API
Java API
SPI (plugin points)
4. SELL TO MILLIONS
Come talk to me about..