autonomousapps / autonomousapps/dependency-analysis-gradle-plugin

Provide modularization advice based on dependency information

Open
#1,208 1 comment 0 reactions 0 assignees View on GitHub
enhancement sponsorable
Dominant language
Kotlin
Stars
2.2k
Forks
158
Avg merge
16h 25m
Merged PRs (30d)
46

Description

**Is your feature request related to a problem? Please describe.**

In larger projects, it often happens that certain modules accumulate classes that are not necessarily tied into a coherent group. Rather, classes may be added to such a module only because many other modules already depend on it, and it makes it easier to "expose" the new class to the desired dependants. Or such "bloated" modules exist in the build for historical reasons.

Modularization (splitting larger modules into smaller ones) can have many benefits, such as better compilation times and more cache hits during the build process. However, often times it is not trivial with where to start that modularization process.

The dependency analysis on the class level may contain enough information to find places where the build structure is ready or almost ready for some modules to be split.

**Describe the solution you'd like**

The plugin provides a new task. The task is responsible for finding classes that, when moved to another module, would allow the dependencies of their dependents to be "lighter."

For instance, if many modules depend only on a few classes from a large module `M`, then when these few classes are moved to another module `S`, the dependencies of those many modules could be changed to just depend on `S` instead of the whole `M`.

**Describe alternatives you've considered**

**Additional context**

Contributor guide

Open the contributing guide

Research direction

The issue names no files, tests, or entry points; begin by locating the existing dependency-analysis tasks and class-level dependency data. Done means a new task can identify classes whose relocation would let dependents use lighter module dependencies, with its advice and evaluation criteria defined.

Written by the indexing model from the issue text.

Assessment

Tech stack
kotlin
Domain
build-system
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.