Skip to content

Pruning the dependency tree for initial Pairwise comparisons #8

@ccerv1

Description

@ccerv1

Problem

The current dependency graph is too large for efficient Pairwise voting, so we need to prune it back to something more manageable for a person putting in, say, up to 5 minutes per comparison.


Proposed Solution

We can use heuristics to prune the dependency graph to a more manageable size, capping the number of dependencies to a maximum of 30 per seed node.

The pruning process relies on the following heuristics:

  1. Funding History
    Prioritizes repositories associated with projects that have received funding from platforms such as Gitcoin, Optimism, or Open Collective.

  2. Language Matching
    Retains dependencies written in the same programming language as the dependent repository.

    • Most effective for languages like TypeScript/JavaScript, Rust, Go, and Python.
    • Currently less effective for languages like C, Java, and Nim.
  3. Maintainer Identity
    Prioritizes repositories within a relevant namespace that align closely with the seed node’s dependencies.

    • Example: In the libp2p namespace, both libp2p/go-libp2p and libp2p/go-libp2p-asn-util exist.
      In effect, this should retain libp2p/go-libp2p as the more relevant repo and prune a less central one like libp2p/go-libp2p-asn-util.
  4. Star Counts
    As a fallback, repositories are ranked by star counts when the above heuristics are insufficient to reduce dependencies below the desired cap.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions