
This is a kitchen time conversation between two developers (John and Jean) working as a developer in an IT firm.
John: Hi Jean, how are you?
Jean: Hi John, I am good, thanks for asking. How are you?
John: I am also doing great. What’s going on in your project? Anything interesting?
Jean: Yes, currently we are having an issue related to pair rotation. Initially we had less number of developers, we were nicely rotating pairs between us. But as number of developers grew, we started facing issue with it. We tried to maintain a virtual pairing matrix on confluence/miro, but issue was people had to manually update the matrix. As it’s manual task, most of developers forgot to update the matrix as they felt it’s a tedious task. Now we are trying to figure out how to resolve this manual updation issue, is there any way to automate this task? 🤔
John: Similar issue we also faced and then found out a tool named Pairing Matrix which generates this pairing matrix automatically using GitHub commits. The best part of this tool is that it doesn’t make use of any GitHub API, therefore it’ll not face any API rate limitation issue with Github.
Jean: It’s really nice, but I am curious to understand how does it create the matrix without making use of API 🤔
John: Basically, when you are configuring this tool, you have to provide list of repositories from which it will generate the matrix. Once it’s configured, it’ll clone the repository locally and next time onwards it’ll pull the latest changes only from Github.
Jean: So, if I understood correctly, you are saying that it’ll do git clone for each and every new repository, and if a repository already present then it’ll just do git fetch, right?
John: You are absolutely right.
Jean: As you are saying it does git clone/pull, does it only work with public repos?
John: It works for private repository as well. You just have to provide ssh key path which can be used to pull code from private repository.
Jean: That’s nice, I want to try it. But before I try it out can you tell how does it figure out the pairs from Github commit? Do I have to use specific commit format or give certain RegExp pattern?
John: No, no Jean. It makes use of recommended commit format with co-author from Github. So, if you are following the recommended format then you don’t have to change anything.
Jean: Can you tell me how can I try this tool?
John: Pairing Matrix provides docker image, which can be used to visualise pairing matrix information.
Jean: Docker image! it’s good but in our project we have an internal UI tool set, which contains tools to make developer life better. Is there anyway I can integrate pairing matrix information along with this UI tool set? 🤔
John: That’s a big yes, you can easily integrate the Pairing Matrix with any Javascript project. The pairing matrix is structured in a way that depends on your requirement, you can choose specific part of this project and integrate it with your existing tool. It has the following parts
- Pairing Matrix Engine: This is a npm package, which contains the main backend logic required to create pairing matrix as JSON from Github. You can use this package with any NodeJs project, can be used with simple CLI tool or can be used with a full fledged backend server.
- Pairing Matrix Charts: This is also another npm package, responsible for charts generation with the data generated from Pairing Matrix engine. Currently, this package contains Chord chart and traditional Tabular chart. Given that this is written in vanila JS, it can be integrated with any frontend tool like ReactJs, VueJs etc.
- Vue Visualiser: This is also another npm package. This package is a wrapper around pairing-matrix-charts, specialised for VueJs. So, incase your project is built using VueJs, you just need this package (for frontend) to visualise matrix information.
- Standalone Docker image: Incase you don’t want to integrate with any existing tool set or don’t want to do lot of customisation, you can make use of docker image directly. This docker image internally makes use of all the above packages to create standalone web application.
Jean: That’s nice. Can you please tell me how does it aggregate the data? Does it only aggregate by number of days or can it be also customised out of the box?
John: By default this tools comes with two aggregation type, Days and Issue. So, depends on your need you can either aggregate the data by number of days or by number of stories/issues played together.
Jean: Wow!! That’s really nice.
Jean: Hey John, you know what, sometimes I wonder if there is any tool which can somewhat recommend with whom I should pair next. I know there are pairing matrix which I can check and decide with whom I should pair next, but when there are lots of teammates, I somewhat get confused. Given that you suggested this tool, I am just wondering if this feature is also available in it? 🤔
John: I almost forgot, yes, this feature is available in this tool as well. This tool out of the box suggests your next pair depends on when and how many times you’ve paired with them.
Jean: Cool 😍. All these things are really great but is it a paid tool? 🤔
John: No no, it’s a free open source tool, you can just get the docker image from Docker Hub and use it as per your needs. Also, if you like, you can contribute to the Github project by adding new features or improving existing ones.
Jean: I’ll definitely look into this tool. Thanks for sharing John 😄.
I hope by this time you have understood the features and easy usability of Pairing Matrix. Therefore, I hope this will be one more option on your plate when you are thinking to automate pairing matrix generation.
PS: I hope you’ve enjoyed it, and if you’ve found it useful, please feel free to share with others or leave a comment 😄. Also, feel free to check and contribute to the tool.
Originally posted on medium.com.