Hi Hitesh,

Unfortunately, I don't know much about Gradle's dependencyInsight task.

Looking at what help:effective-pom does, I think it already answers the following questions:

- Why is artifact X present on the classpath?
- Which dependency path introduced it?

And MPH-183 aims to add the answer to this question:

- Did dependency management or a BOM influence the final selection?

That leaves the following questions still unanswered:

- Which version of the mediation rules was applied?
- Were alternative versions considered and omitted?

Personally, I think that could be useful information. I find it hard, however, to judge if this should go in the Maven Dependency Plugin (as you proposed) or in the Maven Help Plugin, as that's where other "explanation" of the (effective) POM is reported. **Maybe other committers have can share their thoughts on that?**

I'm not sure about Mavens participation in past editions of GSoC. I do recall we had proposals earlier this year, but I'm not sure someone from the Maven community stepped up to mentor those candidates.

Thanks,


Maarten

On 18/06/2026 08:58, Hitesh Sai wrote:
Hi Maarten,

Thank you for the references.

After reviewing dependency:tree and MPH-183 more closely, I think my proposal may be solving a related but slightly different problem.

MPH-183 focuses on improving provenance information in help:effective- pom -Dverbose, particularly for dependencyManagement entries imported through BOM chains.

The goal I had in mind is closer to Gradle's dependencyInsight task. Rather than answering "Where did this managed version come from?," it would answer questions such as:

- Why is artifact X present on the classpath?
- Which dependency path introduced it?
- Which version of the mediation rules was applied?
- Were alternative versions considered and omitted?
- Did dependency management or a BOM influence the final selection?

For example, dependency:tree can already show paths to a dependency, but it does not provide a focused explanation of why a particular version was selected.

Before investing more effort into the proposal, I would appreciate your opinion on whether this distinction is meaningful from a Maven perspective, or whether you feel the existing work around MPH-183 would already address most of these use cases.

I also had a more general question regarding Maven and GSoC. While reviewing the recent GSoC idea lists, I noticed that I could not find Maven-specific project ideas. Has Maven participated in GSoC in the past, or is Maven typically not part of the program? I'm curious about the history here, as I'd like to understand whether proposal ideas are usually developed independently by contributors or if there is a different process for identifying suitable GSoC projects within the Maven community.

Thanks again for the feedback and pointers.

Best regards,
Hitesh Sai

On Thu, 18 Jun 2026 at 12:05, hitesh sai <[email protected] <mailto:[email protected]>> wrote:

    Hi Maarten,

    Thank you for the feedback and for taking the time to review the
    proposal.

    I'll take a closer look at the existing `dependency:tree`
    functionality, especially with the includes parameter applied, as
    well as the older GitHub proposal you referenced. After reviewing
    both, I'll compare them against my idea and identify any gaps or
    differences that could justify a separate feature.

    I appreciate the guidance and will follow up with a more detailed
    analysis.

    Thanks again,
    Hitesh Sai

    On Thu, 18 Jun 2026 at 11:56, Maarten Mulders <[email protected]
    <mailto:[email protected]>> wrote:

        Hi Hitesh,

        Great to hear you're interested in contributing to Apache Maven
        through
        GSoC!


        About your proposal: the output you suggest looks quite like
        that of
        dependency:tree [1], especially with the includes parameter
        applied.
        Could you please highlight where your proposal differs from
        existing
        functionality? Also, there is an existing (old, but still relevant)
        proposal on GitHub [3] that maybe relates to what you're trying to
        achieve. I'm not 100% sure, but it might be good to check that
        one, too.


        Please note that this reply does not promise I would be
        available as a
        mentoring committer. At this point, I'm trying to help you write a
        relevant proposal for GSoC.


        Good luck,


        Maarten


        [1]
        https://maven.apache.org/plugins/maven-dependency-plugin/
        usage.html#dependency.3Atree <https://maven.apache.org/plugins/
        maven-dependency-plugin/usage.html#dependency.3Atree>
        [2] https://maven.apache.org/plugins/maven-dependency-plugin/
        tree-mojo.html <https://maven.apache.org/plugins/maven-
        dependency-plugin/tree-mojo.html>
        [3] https://github.com/apache/maven-help-plugin/issues/303
        <https://github.com/apache/maven-help-plugin/issues/303>

        On 18/06/2026 06:35, Hitesh Sai wrote:
         > Hi everyone,
         >
         > I'm Hitesh, a CS student planning to apply for GSoC 2027 with
        Apache Maven.
         > I wanted to share my proposal idea early and get community
        input before
         > writing the full application.
         >
         > The proposal: add a dependency:insight goal to the maven-
        dependency-plugin
         > that answers the question "Why is artifact X on my classpath?"
         >
         > Current situation:
         >    Users run `mvn dependency:tree` and manually scan hundreds
        of lines to
         > find a transitive dependency's origin. There is no direct
        command for this.
         >
         > Proposed solution:
         >    $ mvn dependency:insight -Dartifact=guava
         >
         >    guava:32.1-jre  (declared: 32.0, overridden by spring-
        boot-dependencies)
         >    └─ spring-context:6.1.2
         >       └─ spring-core:6.1.2
         >          └─ com.example:my-app (root)
         >
         > Implementation approach:
         >    - Hook into the existing DependencyCollector/
        DependencyNode graph,
         > already built during the resolve phase
         >    - Perform a reverse BFS from the target artifact node back
        to the root
         >    - Surface version mediation info from
        DefaultDependencyCollector when the
         > resolved version differs from the declared one
         >    - Output both text and, optionally, a machine-readable format
         >
         > Gradle's `dependencyInsight` task already solves this for
        Gradle users —
         > this proposal brings equivalent clarity to the Maven
        ecosystem. I am not
         > proposing to change any resolution logic, only to expose what
        Maven already
         > computes internally in a more accessible form.
         >
         > I checked the GSoC 2025 and 2026 idea lists and found no
        existing Maven
         > proposals, so I believe this is new ground.
         >
         > I'd appreciate:
         >    1. Feedback on the scope — too big, too small, or about
        right for 12
         > weeks?
         >    2. Whether a Maven committer would be willing to mentor this
         >    3. Any prior discussion or JIRA tickets I should be aware of
         >
         > Thank you for reading. Happy to answer questions or share a
        draft write-up.
         >
         > Best regards,
         > B.V. Hitesh Sai
         > https://github.com/Hiteshsai007 <https://github.com/Hiteshsai007>
         > Sai Vidya Institute of Technology, India
         >


        ---------------------------------------------------------------------
        To unsubscribe, e-mail: [email protected]
        <mailto:[email protected]>
        For additional commands, e-mail: [email protected]
        <mailto:[email protected]>



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to