Interested in the latest Stash release? Check out What’s New »

TL;DR

The brand-spanking-new Stash developer site is now online here and documentation for the Stash REST API has touched down here.

These updates couldn’t have come at a better time as Atlassian Codegeist has just started (with some serious cash prizes and a category specifically for Stash) so get hacking!

A bit of history

Stash 2.1 has a bunch of cool new features, but what really excites me are the improvements to the Stash plugin system and developer documentation that we’ve shipped with this release.

The Atlassian plugin system started as a small library embedded in Jira almost a decade ago, and has since facilitated over 1,477 plugins across seven different Atlassian products. Stash itself started life as a fork of the Atlassian RefApp – a bare-bones Java web app container with an Atlassian plugins implementation – and has supported plugins since day one.

In fact, a large number of the features that ship with the standard Stash distribution actually are plugins. Three of the headline features from 2.1(Jira integration, build integration and the new pull request inbox) all ship as bundled plugins, as are SSH support, branch permissions and countless other Stash features from previous releases. If you download the Stash source (as all commercial license holders are entitled to do – yes, even $10 starter license holders!) you can take a gander at our modular, highly-pluggable architecture.

All of these have been built on top of the public Stash API and SPI, as well as the common Atlassian Platform libraries available in all Atlassian applications.

Who cares?

If Stash 2.1 were sentient, you might have a conversation with it like this:

Developer: “So Stash, you’re built on plugins, who cares?”

Stash: “You do, let me tell you why:

All of these great features are built on top of a robust, battle-hardened API that is expanded upon, but backwards-compatible, every release. Stash works pretty great out of the box, but I just bet there’s a facet of your development workflow that you could grease up a little bit with a plugin or two:

  • Want to notify a build server whenever a new branch is pushed to any repository in Stash? Build yourself a push event listener.
  • Not using Jira? You should be. But until that day comes you could tweak the Stash UI a little and integrate with your own issue tracker (or wiki, build server, legacy VCS, toaster or whatever).
  • Think it’d be cool to send a custom message to developers every time they push or pull? Maybe run a little static analysis and berate them for using tabs instead of spaces? Hack up a little pre-receive hook and let Stash lay the smackdown for you.
  • Sick of crafting arcane curl commands to communicate with REST APIs? Keep it short and sweet on the command line with custom SSH commands.
  • Want to stop that half-mad person on your team (I think they’re related to the boss?) from merging pull requests willy-nilly? Lock ’em out with a bespoke merge check.

Want to do something else to Stash? You probably can. Head over to our brand spanking new developer docs site and take a look at what’s available.

Developer: “Wow! That does sound kinda sweet. I followed a couple of those those links above though. Some of those are javadocs dude! Sure Java’s enterprisey, but decidedly unhip. What a turn-off.”

Stash: “What if I told you that we’re also launching full documentation for our extensive REST API. With a little web fragment magic you can build a plugin written purely using javascript that interacts with the Stash backend using REST.”

Developer: “Woah!”

Scratch that itch

I find plugins generally exciting. Something about solving those little niggling day-to-day problems with a little package of code hot-deployed to a running web-app warms my developer heart.

Being a git repository management tool means that Stash is laser-focused on developers as end-users. This means that a large portion of the end-user community has the skills to build a plugin to “scratch that itch” and customize Stash, or integrate it even more tightly with their development workflow. There are already a number of open and closed source plugins out there, both from Atlassian and from third party vendors, for doing everything from gamifying Stash to generating sweet charts.

If I weren’t already employed by Atlassian, I’d be hacking away on my next commercial Stash plugin to launch in the Atlassian marketplace. As it stands, I make them free and open source on Bitbucket. If you fancy a little cash on the side or just want to contribute a free plugin that you’ve made, head on over to the marketplace and sign up.

In the meantime, if you’ve got a little niggle that needs solving or a grand plan for the next big Stash feature, check out:

and scratch that itch!

In it for the money?

The Atlassian Codegeist competition started a few days ago and has some serious cash prizes, including a special $10K “best Stash plugin” category.

Why not scratch those development itches and make a little cash at the same time?

Stash 2.1: Scratch that itch