8000 Monitoring total count of dependencies that require a bundle transitively to help reduce dependency bottlenecks ahead of time · Issue #5 · connexta/osg-eyes · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Monitoring total count of dependencies that require a bundle transitively to help reduce dependency bottlenecks ahead of time #5

New issue

Have a question about this project? Sign up for 8000 a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
ryeats opened this issue Apr 21, 2020 · 2 comments
Labels
capabilities/analysis Concerns the graph data model, output libraries, and command line workflow type/feature New feature or request that's satisfying some kind of functional requirement

Comments

@ryeats
Copy link
Member
ryeats commented Apr 21, 2020

It would be nice if there was a way to figure out how many bundles depend on a bundle and how many bundles then depend on that dependent bundle so we can see what bundles cause the biggest bottleneck.

@Lambeaux
Copy link
Contributor

Good stuff.

This also gives me an idea for issue templates. Typically to create a quality analysis solution I need to know:

  • What insights or connections with the data you're looking to make; this is your best guess as to what osg-eyes could provide to solve your problem.
  • What kind of action you plan to take based on the data; is this focused on empowering code changes, static analysis focused, or something else?
  • Without specifying this repository, define the end goal; what is the problem being solved?

@Lambeaux Lambeaux changed the title Total of dependencies that require a bundle transitively Total count of dependencies that require a bundle transitively May 19, 2020
@Lambeaux
Copy link
Contributor
Lambeaux commented Jul 7, 2020

Issue summary & value proposition

Pick a bundle in the dependency tree and evaluate its transitive impact against terminal (capability) bundles that actually provide the service or function that gets consumed externally. This can be useful for identifying problematic middleware bundles that are causing dependency pain.

Problem

It's difficult to see where my dependency bottlenecks occur as I add features to an OSGi project.

Insight

  • Given bundle X, how large is the graph of dependents (measured in node count)?
  • Given a list of bundles, provide a (sorted?) list of sizes of their graphs of dependents (measured in node count)?

Controls

  • Include or exclude transitive dependencies
  • Include or exclude edge types (package, service, or embedded)

Action

  • Refactoring activities

Proposed solution

Start by improving the selection ecosystem:

;;
81AB
 Standard way of selection
(list-edges [:node "ddf/.*"])
;; Provide the ability to submit a hard-coded list of nodes or edges as the selection instead of using the filtering vector
(list-edges ["ddf/bundle-A" "ddf/bundle-B"])

Then supply the new commands that counts the size of the dependent subtree (inverted idea of the typical "dependency" relationship - stuff that needs the target):

;; Takes a filter vector and prints a sorted key-value list of their coupling scores in node count
(measure-coupling [:node "ddf/.*"])
;; Also accepts a vector of strings (nodes) and prints a sorted key-value list of their coupling scores in node count
(measure-coupling ["ddf/spatial-csw-endpoint" "ddf/spatial-csw-bindings"])

I suppose we could also provide commands to analyze the converse, which is the size of the dependee subtree (the typical "dependency" relationship - stuff the target needs):

(measure-bulk [:node "ddf/.*"])
(measure-bulk ["ddf/spatial-csw-endpoint" "ddf/spatial-csw-bindings"])

Notes

  • The more "coupled" a bundle is, the more things that exist that need it.
  • The "bulkier" a bundle is, the greater the cost of depending on it.

@Lambeaux Lambeaux added the type/feature New feature or request that's satisfying some kind of functional requirement label Jul 7, 2020
@Lambeaux Lambeaux changed the title Total count of dependencies that require a bundle transitively Monitoring total count of dependencies that require a bundle transitively to help reduce dependency bottlenecks ahead of time Jul 7, 2020
@Lambeaux Lambeaux added the capabilities/analysis Concerns the graph data model, output libraries, and command line workflow label Dec 4, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
capabilities/analysis Concerns the graph data model, output libraries, and command line workflow type/feature New feature or request that's satisfying some kind of functional requirement
Projects
None yet
Development

No branches or pull requests

2 participants
0