Uploaded image for project: 'Jenkins Website'
  1. Jenkins Website
  2. WEBSITE-327

Exclude dependencies of popular plugins from 'Trending' list of plugins

    Details

    • Type: Improvement
    • Status: To Do (View Workflow)
    • Priority: Minor
    • Resolution: Unresolved
    • Component/s: plugin-site
    • Labels:
      None
    • Similar Issues:

      Description

      A problem with how we're calculating the "Trending" list of plugins (installs now / installs 1 month ago) is a recent trend in plugin development:

      Popular plugins split off functionality in new plugins, are add new (essential) features as a separate plugin that the established plugin depends on. This results in "new" plugins with skyrocketing install numbers.

      Looking at the current trending list:

      Pipeline: Stage Tags Metadata – dependency of pipeline-model-definition, a dependency of workflow-aggregator
      Pipeline: Model API – dependency of pipeline-model-definition, a dependency of workflow-aggregator
      Pipeline: Declarative Agent API – pipeline-model-definition, a dependency of workflow-aggregator
      Pipeline: Model Definition – dependency of workflow-aggregator
      Docker Pipeline – dependency of pipeline-model-definition, a dependency of workflow-aggregator
      Docker Commons – dependency of a number of plugins, most notably docker-pipeline, a dependency of pipeline-model-definition, a dependency of workflow-aggregator
      Authentication Tokens API – dependency of docker-commons, a dependency of docker-pipeline, a dependency of pipeline-model-definition, a dependency of workflow-aggregator
      Pipeline: GitHub Groovy Libraries – dependency of github-organization-folder
      Credentials Binding – dependency of pipeline-model-definition, a dependency of workflow-aggregator
      – Display URL API – dependency of a number of plugins, notably github-branch-source and mailer

      Right now, almost the entire list (italic) can be traced back to the inclusion of pipeline-model-definition in workflow-aggregator (a default recommendation). Only two (in bold) are not, but are still dependencies of default inclusions into the list.

      It would be interesting to know how the list would look like when only containing plugins nothing else is depending on (variant 1), or when reducing the install count by the number of installations of the most popular dependent plugin in each month (variant 2).

      If the result of either looks sane, implement that behavior.

        Attachments

          Activity

          Hide
          mmccaskill Michael McCaskill added a comment -

          Daniel Beck - So I've begun working on variant 1. Not sure if this is useful but in the process I did end up making a reverse dependency map and indexing it. So for example when getting the "git" plugin it's possible to see all the current plugins that have a direct dependency. Could this in anyway be useful to the user or possibly in the search or filtering?

          "reverseDependencies": [
              "pom2config",
              "bitbucket-pullrequest-builder",
              "git-changelog",
              "GatekeeperPlugin",
              "pretested-integration",
              "github-branch-source",
              "gogs-webhook",
              "pipeline-github-lib",
              "bitbucket",
              "git-tag-message",
              "openshift-sync",
              "repository",
              "blueocean-pipeline-api-impl",
              "mantis",
              "bitbucket-approve",
              "trac",
              "bitbucket-build-status-notifier",
              "scm2job",
              "stashNotifier",
              "tracking-git",
              "whitesource",
              "jira-ext",
              "github",
              "maven-release-cascade",
              "git-chooser-alternative",
              "debian-package-builder",
              "gitbucket",
              "salesforce-migration-assistant-plugin",
              "codecommit-url-helper",
              "gitlab-oauth",
              "aws-sqs",
              "backlog",
              "stash-pullrequest-builder",
              "last-changes",
              "github-sqs-plugin",
              "assembla-merge-request-builder",
              "codebeamer-result-trend-updater",
              "tfs",
              "artifactory",
              "ghprb",
              "hp-application-automation-tools-plugin",
              "google-source-plugin",
              "deveo",
              "xpdev",
              "codefresh",
              "github-oauth",
              "gitlab-plugin",
              "scm-sqs",
              "bigpanda-jenkins",
              "ikachan",
              "blueocean-autofavorite",
              "gerrit-trigger",
              "travis-yml",
              "spoonscript",
              "delivery-pipeline-plugin",
              "flaky-test-handler",
              "google-git-notes-publisher",
              "google-analytics-usage-reporter",
              "gitlab-hook",
              "cloudbees-bitbucket-branch-source",
              "git-parameter",
              "build-requester",
              "view-job-filters",
              "codebeamer-xunit-importer"
          ]
          
          Show
          mmccaskill Michael McCaskill added a comment - Daniel Beck - So I've begun working on variant 1. Not sure if this is useful but in the process I did end up making a reverse dependency map and indexing it. So for example when getting the "git" plugin it's possible to see all the current plugins that have a direct dependency. Could this in anyway be useful to the user or possibly in the search or filtering? "reverseDependencies": [ "pom2config", "bitbucket-pullrequest-builder", "git-changelog", "GatekeeperPlugin", "pretested-integration", "github-branch-source", "gogs-webhook", "pipeline-github-lib", "bitbucket", "git-tag-message", "openshift-sync", "repository", "blueocean-pipeline-api-impl", "mantis", "bitbucket-approve", "trac", "bitbucket-build-status-notifier", "scm2job", "stashNotifier", "tracking-git", "whitesource", "jira-ext", "github", "maven-release-cascade", "git-chooser-alternative", "debian-package-builder", "gitbucket", "salesforce-migration-assistant-plugin", "codecommit-url-helper", "gitlab-oauth", "aws-sqs", "backlog", "stash-pullrequest-builder", "last-changes", "github-sqs-plugin", "assembla-merge-request-builder", "codebeamer-result-trend-updater", "tfs", "artifactory", "ghprb", "hp-application-automation-tools-plugin", "google-source-plugin", "deveo", "xpdev", "codefresh", "github-oauth", "gitlab-plugin", "scm-sqs", "bigpanda-jenkins", "ikachan", "blueocean-autofavorite", "gerrit-trigger", "travis-yml", "spoonscript", "delivery-pipeline-plugin", "flaky-test-handler", "google-git-notes-publisher", "google-analytics-usage-reporter", "gitlab-hook", "cloudbees-bitbucket-branch-source", "git-parameter", "build-requester", "view-job-filters", "codebeamer-xunit-importer" ]
          Hide
          danielbeck Daniel Beck added a comment -

          There's a use case, but it's not relevant enough to show by default. "Click here to see which other plugins depend on this plugin" would be useful though. Also, consider including which version of the target plugin they depend on.

          That reminds me of another issue. I filed WEBSITE-328 for it.

          Show
          danielbeck Daniel Beck added a comment - There's a use case, but it's not relevant enough to show by default. "Click here to see which other plugins depend on this plugin" would be useful though. Also, consider including which version of the target plugin they depend on. That reminds me of another issue. I filed WEBSITE-328 for it.
          Hide
          mmccaskill Michael McCaskill added a comment - - edited

          So I started on variant 1. This first attachment shows an interesting result. I'm not convinced I properly constructed a reverse dependency graph since it's still showing Pipeline plugins. But to be fair they're sorted by fewest reverse dependencies ascending then installs now / installs 1 month ago.

          Edit: Actually it's the exact same as what's deployed so I clearly did something wrong.

          Show
          mmccaskill Michael McCaskill added a comment - - edited So I started on variant 1. This first attachment shows an interesting result. I'm not convinced I properly constructed a reverse dependency graph since it's still showing Pipeline plugins. But to be fair they're sorted by fewest reverse dependencies ascending then installs now / installs 1 month ago. Edit: Actually it's the exact same as what's deployed so I clearly did something wrong.
          Hide
          mmccaskill Michael McCaskill added a comment -

          Attached latest screenshot. That's looking more interesting.

          Show
          mmccaskill Michael McCaskill added a comment - Attached latest screenshot. That's looking more interesting.
          Hide
          danielbeck Daniel Beck added a comment -

          Based on nothing but the list, I am not sure I can evaluate this. But Blue Ocean beta grew about 7.7% between Jan and Feb, while AD grew by 2.7%. Neither has dependents. So I would expect BO to be way above AD.

           

          Show
          danielbeck Daniel Beck added a comment - Based on nothing but the list, I am not sure I can evaluate this. But Blue Ocean beta grew about 7.7% between Jan and Feb, while AD grew by 2.7%. Neither has dependents. So I would expect BO to be way above AD.  

            People

            • Assignee:
              mmccaskill Michael McCaskill
              Reporter:
              danielbeck Daniel Beck
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated: