Automatic qualification plugin for Redmine

Veeraraghavan SEKAR
alter-way-innovation
3 min readAug 17, 2021

Redmine and pipelines

Redmine is a fantastic open source tool allowing teams and companies to create, list, prioritize and manage issues. If you know about Jira, Redmine is its open source counterpart. While being extremely minimalist it is also highly modular. So when we had to extend our internal support system with automatic issues processing, we directly thought of our solution as a Redmine extension.

We looked at a way to create a simple and flexible interface to define arbitrary workflows when issues are created. Moreover, in order not to execute any arbitrary code over our Redmine instance, we imagined a web hook system. Then we decided to chain those calls to be able to use third-party web services together.

For the oldest readers, we had Yahoo Pipes in our mind. Yahoo pipes product was an innovative solution from the early 2000’s, bringing syndication systems such as Netvibes to another level. Yahoo Pipes used to propose a web based graphical user interface that enabled its users to defines pipes made of various RSS services, custom scripts... Glued together, those services and scripts could provide any kind of information filtering pipeline. The service was made free, ans as it was not sustainable it fatally closed in 2015.

Yahoo Pipes example

The concept stayed vivid in the minds of many leading to the creation of paid services like IFTTT, Zapier or self hosted alternatives like Huginn. Since we had to bind our solutions with Redmine internal hooks, we developed our own pipeline system has a Redmine plugin. Our solutions calls iteratively one to many services upon issue creation, after every step we save the textual response of the service in a Redmine custom field to be eventually reused later.

Configuring Individual Service in Plugin
Plugin configuration for each project

We added the possibility to enable or disable the plugin entirely or some of its pipelines for each project. This allows users to customize the behavior of their workflow directly from the project configuration. In the end, as many projects can have as many pipeline configurations, depending on their business and teams needs or constraints.

Use case and new plugin version

What are we trying to achieve at Alter Way ? Behind this plugin lies a machine learning project, we described more extensively in a previous article. To put it short, we aim to automatically qualify incoming issues by asking our algorithms the following questions :

  • Is it a fix or a new feature ?
  • Is this issue critical ?
  • How long will it take to be solved ?
  • Do we have similar issues ?

This analysis, also known as triage, is usually performed by our support team but it is time-consuming. Moreover we can hardly rely on human agents (be them client side or support one) to precisely answer them, as they are experienced based, especially for time estimation and similarity.

Introducing Qualification plugin

To achieve this use case, we published three years ago an initial Redmine plugin called NATH Redmine. This plugin used web hooks but in a constraining way. It required the service to accept strict answers and responses format, which did not allow for services chaining. The machine learning ecosystem evolving so quickly, those constraints ended up being hard limitations. We needed a flexible solution capable of following our prototypes, and this his why we created Redmine-qualification-plugin , a flexible way to automate your Redmine workflows.

The plugin is licensed under MIT and is open to pull requests.

Thanks to Alter Way, and the RnD team for making this project possible.

Keep innovating!

--

--