Upload
colleenfry
View
161
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
“ Because source is truth. ”
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
“ Why is everything broken!? ”
$ 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
“ Because domain experts. ”
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..