Project goal: Provide a 'plugin health indicator' for plugin maintainers and Jenkins administrators
Skills to study/improve: Java, Data Analysis, Data Presentation
Plugin health scoring to help maintainers, new contributors, and Jenkins users.
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.
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.
This project is articulated around four axes:
data collection
data aggregation
data presentation
data delivery
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.
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).
Java
Data extraction from GitHub repositories
Data analyze applied to data representation.
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.
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.