Plugin Health Scoring system - how should it work

Project goal: Provide a 'plugin health indicator' for plugin maintainers and Jenkins administrators

Skills to study/improve: Java, Data Analysis, Data Presentation

Details

Plugin health scoring to help maintainers, new contributors, and Jenkins users.

Background

Keeping a plugin current with the ongoing development of Jenkins is key for a smooth operation. Keeping it current can require user interface improvements, dependency updates, and more.

Measurements of the plugin’s "health" will help maintainers as they decide how to invest their development time. With such a system, items that need to be maintained, improved, or adapted are identified.
For example, having Release Drafter correctly configured and Pull Request Labeling in place is a recognized good practice. It reduces the effort to provide a changelog with each release.
Another example: having Dependabot properly configured will reduce the dependency update effort by automatically submitting update pull requests.

Measurements of the plugin’s "health" will help users to decide if they should install and use a plugin. Plugins with a lower health score may be less likely to meet the user’s reliability needs. It is similar to a badly maintained garden that will make harvesting difficult and not yield good vegetables or fruits.

Quick Start

A presentation of the "Plugin Health Score" project was made during the 10-Feb-2022 GSoC Office Hour.

Note that, seen the size of the project, contributors could work on a subset.

Conceptual structure/idea

This project is articulated around four axes:

  • data collection

  • data aggregation

  • data presentation

  • data delivery

Data Collection

Each data point is retrieved by running an atomic analysis probe on the plugin. Probes could be "Version of plugin parent pom", "Number of installations", etc.

Some of the measurement ideas are listed in the "Contributing to Open Source" workshop document.

Typical work on that axis would cover probe identification and description, probe algorithm definition, probe proof of concept, and lastly probe implementation. An important step is to run the probe on all the plugins to gather statistical data to validate the probe and the thresholds.

Data Aggregation

The actual "health score" of a plugin is computed by aggregating probe measurements. It is calculated based on the measurement’s deviation from the expected score (or range).

Data Presentation

The health score and the probe details need to be presented to the user. This part of the project has to deal with where and how the collected data is presented (summary, diagramming, details, navigation/drill down)

Data Delivery

This axis covers how the probes are run, the data collected and displayed. It covers thus the "industrialization" of the feature. Aspects such as deployment, infrastructure, monitoring are very important.

Skills to Study and Improve

  • Java

  • Data extraction from GitHub repositories

  • Data analyze applied to data representation.

Project Difficulty Level

Beginner to Intermediate

Project Size

175 hours

Expected outcomes

New feature

Jenkins plugin maintainers will have a summary of multiple attributes related to the ongoing care and upkeep of their plugins. Plugin maintainers will see how their plugin compares with other plugins. The comparison data will help plugin maintainers decide how to invest their time in maintaining and improving their plugins.

Jenkins users will have a summary of multiple attributes related to ongoing care and upkeep of plugins. Users can use that information to guide their choice of plugins to install.

How to get familiarized with the subject

Contributors that want to become familiar with the matter could start by reading the "How to contribute to open source" document and watch the related live stream.

  • Part 1 - Choosing your plugin, update the parent pom, update Jenkins base version

  • Part 2 - Spotbugs, incremental builds, dependency updates, and release drafter

  • Part 3 - Migrate docs to GitHub, add a “report an issue” link, interactive testing

  • Part 4 - Enable continuous delivery, plugin bill of materials

  • Part 5 - Topics and labels on repositories, resolving security scan reports

And how about submitting modernization pull requested as suggested in the above documentation? It will help to gain real life experience of plugin health problems and of the contribution process.

Potential Mentors

Project Links

Organization Links

> Go back to other GSoC 2022 project ideas