Alle Stories

Printing issues with Possy

Gerald Leeb
Gerald Leeb
digitaltech
Printing issues with Possy

Tired of writing tasks by hand? — In this article I want to introduce Possy, a tool to print cards with POS printers for physical task boards with data provided by issue tracking systems, e.g. Atlassian Jira.

Physical task boards are typically encountered in software development teams who use an Agile method like Scrum or Kanban as their process model. These task boards help to visualize the advance in development. Quite often there is the requirement to maintain the state of physical task boards in digital issue tracking systems, e.g. Jira or GitLab. In this case a considerable effort accrues because the state of the development progress has to be maintained on the physical task board and on the issue tracking system.

Possy Agile Board
Example of Possy-printed Agile Board

You could avoid using physical boards and manage the issues with a single digital instance without the need to sync any state. But here are some advantages of physical boards, so you probably want to use them in conjunction with an issue tracker:

  • A physical place where the team members meet
  • Physical board motivates the team to gather, discuss and collaborate
  • Face-to-face contact improves communication and engagement among team members
  • Better communication leads to more efficiency, ownership, better products and less unwanted delays

So we need some tooling here to make our lives easier, and that's why I want to introduce Possy to you.

Possy

Possy is intended to be used as an addition to physical Scrum and Kanban boards. It's a simple web interface to automate the creation of print-cards which are typically used on physical boards.

Usually you have to sign in on your ticket system. Then you have to find the desired issue, and finally you have to write some text on e.g. Post-it® by hand. In total, these steps can be very time-consuming.

Possy automates this process by letting the user choose the tasks to be printed in its simple web interface. The UI part is connected to an issue tracking system like GitHub or Atlassian Jira. Possy prints the selected issues with one of the connected POS printers. Why POS printers? — Simply because they print on thermal paper. Thermal paper is quite affordable, usually cheaper than conventional sticky notes.

The idea behind Possy comes from my colleague Boris and Gerald (Me). The first prototype was born some time ago. Currently, we work on different features and improvements. There are many ideas to extend the functionality of Possy. Have a look on GitHub for the current status of the project.

The following image illustrates a Possy-printed User Story. As you can see, the quality is quite good for a POS-printed document.

Possy Story Issue
Printed with an Epson TM-T20II printer

Architecture

There are two main modules, Possy Service and Possy Daemon. Possy Service serves the user interface made with Vaadin and is responsible for communication with the issue tracking systems. The Service creates print jobs which are consumed by the Daemon. Possy Daemon is connected with some POS printers via CUPS. Multiple connected POS printers are supported to enable prints with different colors. The JVM-based language Kotlin is used for the whole project.

We have two different networks in our production environment. Members in network A are not able to talk with members of network B, but vice versa. The requirement was to serve the user interface via network A. If Possy would be a monolithic application that runs in network A, there is no chance to talk with the printers in network B. So we decided to split Possy into two modules. The Daemon in network B fetches print jobs from the Service in network A.

Possy Architecture

Possy Daemon is a tiny and lightweight application. Therefore, it's perfectly clear to run the Deamon on a small and handy device like a Raspberry Pi.

Planner

Possy includes a very convenient feature called Planner. Mostly it's used during Planning II meetings to create Story subtasks. All tasks for multiple Stories can be defined directly in Possy's user interface, and with one click all tasks get printed in order.

As we have no distributed team, we aren't managing subtasks of Stories with Jira. This is much faster and more flexible to do with Possy Planner. There is no need to manage the subtask state both in Jira and on the board. Of course, this approach has some downsides when working remotely because the physical board is not visible then. But we have the vision to capture continuous snapshots of the physical board with a camera attached to Possy. Feel free to open a pull request for this feature 😏

Possy Planner

If you have any feedback or if there are some missing features, feel free to open an issue on GitHub.