Where parallels cross

Interesting bits of life

Emacs as your code-compass: find collaborators you should (chit) chat with

Too long; didn't read

Have you ever strongly desired to have a chat about the design of your code but did not know who to pick? Find who running c/show-code-communication with your code-compass!

The problem

Once in a while I have to jump in a code base, do my work, and finally walk away leaving things better off. I would probably be like Mr. Wolf in Pulp Fiction, if only it were a movie. Instead, particularly when I have no clue, my job requires asking around. That easily becomes a proper investigation when the developer, who Git blamed, is away. How am I going to find another person now? And how without disturbing my busy colleagues?

It is a problem indeed

Apart of my exploratory problem, it would be cool to see clusters of collaborations for the code base we are working on. I am thinking of the code base telling me: "you changed this module recently, your colleague touched this same module, mmm... shall you two have a chat to see if you are still on the same page?" Probably this is easily achievable for two close collaborators, but what about hotspots which more than one team changes often? It would be nice to have the repository history suggest who should have a design chat together to keep things organized.

And even if you are just looking for a bit of gossip: you may want to discover who communicates/works more often with who. Just to get an idea!

And there is a solution

We can, indeed, learn who we should chat with from our software history! Any time we work on the same code in the repository, Git records it. Then we can just count how often that happens over the repository. If it happens a lot, we shall get notified to discuss together about the design of this repository (if we are not already doing it).

So let's reuse our fancy edge bundling graph that we saw earlier for change coupling.

If you run code-compass's c/show-code-communication on the XMonad repository for the last 2 months, you will see this:

xmonadCodeCommunication.jpg

I put my cursor on the slotThe to see the connections this user has with the others. You can see that the user slotThe has worked on the same code of the other three users. Since this is a project on GitHub these people may never have actually spoken together face to face, still their work intersects.

So, say I am editing a piece of code that slotThe edited last time: if I am really scratching my head, I can try to ping any of those other authors to see if they can help me out.

All in all, this is an analysis that gives you a bit of context of the relationship between authors.

By the way, I find the colors of the links insignificant. The important information is in the relationships.

Conclusion

So just try to see if you find any unexpected communication between your collaborators! You are just a c/show-code-communication away from seeing the relationship in the history of your project.

Happy communication!

Comments