Dipping into the Stream

You may already know about the Activity Stream feature that will be part of Jira Studio. The idea is that all of the activity on a project, across its issues, wiki content, source commits and code reviews, can be viewed in a continuous, integrated timeline. We recently rolled the feature out to Jira Studio beta testers, and we’re continuing to expand and improve it for the upcoming public launch. Here’s a peek at what it looks like today:


We were able to implement Activity Streams entirely as a plugin — actually, a suite of three plugins, for Jira, Confluence and Fisheye/Crucible. This has been an exciting and challenging project that has given me a chance to work with all of Atlassian’s products and development teams around the world. I joined Atlassian in late 2007 as part of a new team that is dedicated full-time to plugin development and developer relations. What makes this group different from the other Atlassian development teams is that we work out of Atlassian’s San Francisco office instead of the headquarters in Sydney. So while development teams in Sydney were busy implementing the core enabling functionality and integration features for Jira Studio, development of the Activity Stream plugin suite was taking place independently in San Francisco.

Going with the Flow

Well, in truth, it wasn’t entirely independent. The Activity Stream plugins leverage other technology that was in development concurrently, such as Trusted Application Authentication and AppLinks. The Jira Activity Stream plugin uses these to make HTTP requests on behalf of the logged in user to the Activity Stream plugins in linked instances of Confluence, Fisheye, and Crucible, as well as querying Jira directly itself, and mixes the results together into an Atom feed. The UI works by making an AJAX request for the Atom feed, and then rendering the results in a Jira portlet or tab panel. Of course, the feed can also be accessed directly by feed readers, aggregators, or anything else that can read Atom XML.

Here’s what it all looks like put together:


As I sketched out this diagram, I realized that it reminded me of another familiar pattern of interaction. Just as we designed the plugins to use loosely coupled components and flexible protocols to communicate across various products and assemble an integrated result, the plugin development team has been able to work effectively with several teams in Sydney by using powerful collaboration tools, despite thousands of miles of distance and a nineteen hour time difference. Even better, Atlassian’s newest development team — in Gdansk, Poland, thousands of miles in the other direction — has been among the first groups to use Jira Studio and the Activity Stream plugins in production on a real project, and has given us great feedback already, via Jira of course!


Looking Downstream

Now that the groundwork is in place, we’re looking at other ways to use Activity Streams throughout Jira Studio. For example, there could be a stream for a particular issue in Jira, including any wiki pages, changesets or code reviews that link to it, or a stream specific to an individual user. Streams could include builds from a linked Bamboo instance, and maybe even bookmarks from del.icio.us, events from Google Calendar, status updates from Twitter, or anything else that provides an RSS or Atom feed. And, of course, we’re working on making these plugins available outside of Jira Studio, for anyone who uses Jira by itself or in conjunction with other Atlassian software. We don’t know yet how soon this will be, but keep watching this blog and the plugin home page for updates.

We want to hear your ideas, too! You can keep tabs on development and offer your suggestions in the Atlassian Activity Stream Plugin Developer Network Jira project.

Communicating Across Products and Oceans