Who's Looking, with Atlassian Connect

This is an Atlassian Connect approximation of the Who's Lookin' plugin for JIRA.

The aim is to show a list of users who are currently viewing an issue, without causing much load on the host application. Once installed on a JIRA instance, it looks like this: Who's Looking with Atlassian Connect

Implementation Overview

The add-on is a remote app running on Play 2 using the Atlassian Connect ac-play-java library. Source is here: https://bitbucket.org/atlassian/whoslooking-connect

The Connect app registers an iframe in the View Issue page. The iframe content is served from the Connect app, and includes JavaScript to issue an XHR heartbeat back to the Connect app. This heartbeat results in the current user being stored as a viewer of the current issue in an in-memory map backed by Redis. Entries expire after a few seconds, so if the heartbeat for a given user stops, the user is dropped from the viewer set for that issue.


Who's Looking Interactions

edit here



  • A Java 7 JDK.
  • Play 2.2.x
  • Postgres to store persistent information about host applications that have registered to use this Connect app.
  • Redis to store transient information abouts which users are looking at given issues.
  • Atlassian SDK to easily spin up local JIRA instances for testing.


  • Install the Atlassian SDK, Play, Postgres and Redis.
  • Create postgres database 'whoslooking'.
    • By default, Who's Looking will use credentials whoslooking/whoslooking to access database 'whoslooking' on localhost. If nececssary, you can configure this in conf/application.conf.
  • Start Redis by running redis-server.
    • By default, Who's Looking will access Redis on localhost:6379 (which are Redis's defaults). If nececssary, you can configure this in conf/application.conf.
  • Start a JIRA instance by running atlas-run-standalone --product jira --version 6.4-OD-14-082 --bundled-plugins com.atlassian.bundles:json-schema-validator-atlassian-bundle:1.0.4,com.atlassian.webhooks:atlassian-webhooks-plugin:2.0.0,com.atlassian.jwt:jwt-plugin:1.2.2,com.atlassian.upm:atlassian-universal-plugin-manager-plugin:2.18.2-D20141112T015724,com.atlassian.plugins:atlassian-connect-plugin:1.1.22 --jvmargs -Datlassian.upm.on.demand=true.
    • See the Connect documentation for the latest version of the above command.
    • By default, JIRA will start at http://localhost:2990/jira. See the Atlassian SDK documentation for more options.
    • All interactions with JIRA must use the same URL (some aspects of OAuth will fail if we mix uses of localhost with my-machine-name). If necessary, log in to the JIRA instance as admin/admin, and change the baseURL to http://localhost:2990/jira.
  • Start the Who's Looking app in dev mode by running play run in the app directory. It should come up on http://localhost:9000. Hit that URL in the browser to trigger initialisation logic.
    • The Connect app should automatically install into the local JIRA instance, but if it doesn't, do so manually by running: curl -v -u admin -X POST -d url=http://localhost:9000 http://localhost:2990/jira/rest/atlassian-connect/1.0/installer

You can now create an issue in JIRA, view it, and ensure the "Who's Looking?" panel is visible and populated. If you make changes to Who's Looking code, the Play framework will pick up the code changes as new requests come in.

Running Integration Tests

  • Run play test for basic unit/integration tests.
  • Run cd pdv; mvn3 test -Plocal to run browser-based PDV tests. See pdv/README.md for more info.

Reporting Bugs

Please report issues here: https://ecosystem.atlassian.net/browse/WLC


See LICENSE.txt and ./public/third-party/licenses.txt