I want to modularize a codebase further to improve build times. A fun idea I had was to make module boundaries such that most historical commits only touch one module. What is a good way to algorithmically create such a grouping of files into modules?