System for tracking knowledge of a codebase in a microservices environment
Publication Date: 2018-Mar-08
The IP.com Prior Art Database
System for Tracking Knowledge of a Codebase in a Microservices Environment
A lot of new software development practices state that ownership of a code base is retained by a team throughout the life cycle of that code base. However, in practice team members will frequently change, and business pressures may mean that a team which created a codebase is disbanded and move on to other projects. The team members left to maintain the code may informally request assistance and insight from the original team, but as people continue to leave or the code base changes, it may become more difficult to determine who carries the knowledge for the current code base. This can lead to an inability to maintain a code base, expense and delay whilst new team members skill up.
It is possible today to develop an understanding of how a codebase is changing as commits are made. Tools such as blame will build up a profile of the people involved in developing a file or a project. However, blame provides the auditing of changes over time, whereas it cannot provide the understanding of who has contributed to the code that is in use today. In addition, annotation tools will help provide an understanding of what lines of a file have been changed and by whom, but this does not extend to providing a sense of knowledge ownership across the files within the code base.
This disclosure proposes a system for tracking who has made changes to either a file or a collection of files, such that it can be determined over time who is the most appropriate set of contacts for a code base. Furthermore, the system can be extended across codebases to define a logical codebase, such that experts in a specific area can be identified. It will track the individuals who are still able to contribute to a codebase (i.e. employees at the company), to assess the risk of losing the core knowledge of the project. Finally, it can express the knowledge of a file or codebase as a percentage, such that it is possible to determine how fragmented the knowledge of a project has become.
The system works as follows; when a developer, developer1, checks in a file with 100 lines into source control, the developer is assumed to have 100% knowledge of the codebase. If only that developer continues to add commits, then they remain at 100% knowledge. However, if a second developer, developer2, makes a change to the file and changes 5 lines of the 100-line file, then they become a 5% owner of the file, and developer1 has their knowledge of the system reduced to 95% ownership. As time passes and more developers are added, this pattern is repeated so that the knowledge of the system becomes distributed among a number of developers. This also reflects additions and deletions, so if developer2 had added 100 new lines then developer1 and developer2 both hold 50% ownership of the file. In the case of deletions, ownership is still calculated based on owners...