Kasia Pytko
Kasia Pytko May 7, 2020

Context Buddy – the tool to revolutionize devs’ workflow

Imagine that – you have just joined a project with legacy code. Or you found yourself with no exact knowledge of the code and what needs to be done next. What’s more, you had to collaborate with a group of people with different opinions on what constitutes good code. In all those cases you need someone or something that will help you get through. It’s high time for you to meet Context Buddy, the tool that will help you get known swiftly codebase you are working with.

What’s that all about

Context Buddy providing the context about the code focused on making developers more productive when working with new/complicated codebases. It comes with a dedicated view where you can inspect history in more detail and understand how code changes. The project’s main objective would be to expand semantic information obtained from code with actions like comments on Pull (Merge) Requests, failed/passed tests during Continuous Integration or if code was deployed with outages and problems from production servers. With such information linked with code changes, developers are able to identify and fix problems easier and quicker. This also means that in many cases help from others won’t be needed what is especially important for less experienced or/and new developers joining the team.

Then & now

Context Buddy had its premiere during ScalaDays 2019 when Krzysztof Romanowski presented his innovative project. Krzysztof took up this topic because he has been working at VirtusLab for the client with a huge codebase so the historical analysis was also big and complicated. Reading the code takes most of the development time so Krzysztof decided to evolve a tool that would help deal with such a common problem for many programmers.

Currently, apart from Krzysztof, Tomasz Dudzik and Michał Bednarz are working on Context Buddy. Tomasz and Michał began their adventure at VirtusLab with a student internship, during which they were developing Context Buddy. After the internship, they decided to stay and further work on this tool. In addition, due to the fact that the project is strongly associated with our R&D center, Michał is able to develop his bachelor’s thesis, ‘Linking changes in code semantics with CI/CD and review actions’, which is related to the development of Context Buddy. Moreover, Bartosz Radzyński’s master thesis, ‘Automatic resolution of Pull Requests reviewers based on source code changes using semantic data’, will be also based on Context Buddy.

Challenges & Plans

The project is developed mostly in Scala with bits of TypeScript. Context Buddy is based on catching the context from other tools (e.g. IntelliJ, VS Code, compilers and build tools). The biggest challenge here is proper data extraction from many sources and proper integration around the context. Our teams work with many compilers on a daily basis, so they know what to catch, which context is important. However, building a solution that is not yet on the market is not easy, there are many cases that no one has ever covered. Especially trying to provide the most precise history and keeping it up-to-date is the challenge. What needs to be done in the project is the implementation of plugins/applications that will read various data and associate it with a model of code changes. The assumption is that Context Buddy will consist of two parts – a plugin in IntelliJ and VS Code and a set of extensions for collecting semantics and problem analysis, giving a greater view of the code and its environment. We are working hard to make it a platform for other projects that will build on top of it.

Your best buddies

VirtusLab presented Context Buddy and Graph Buddy during last year’s edition of Currently, these are separate projects, but they solve similar problems. Context Buddy provides a better view of code from different perspectives and gives the project’s history. Graph Buddy visualizes dependencies. Both projects are parts of a bigger one (Visdom) that we are developing within VirtusLab to create a tooling ecosystem of the future.

Written by

Kasia Pytko
Kasia Pytko