Back to blog

What is the plugin health score?

Adrien Lecharpentier
Adrien Lecharpentier
October 25, 2023

Short story long

As of October 24th, there is a new tab named Health Score on each plugin page of plugins.jenkins.io.

This new tab provides the plugin’s health score, along with every aspect that contributed to its score. The score is meant to be unbiased and all plugins are evaluated the same way.

Here is what it looks like:

Plugin health score for Mailer.

Back to the beginning

This project started during the Google Summer of Code 2022 and was finished during the Google Summer of Code 2023. We created the Plugin Health Scoring project with and for the Jenkins community.

The purpose of the project is to provide an unbiased score to all plugins. The resulting score is based on data retrieved from each plugin, and this data is analyzed the same way for every plugin.

Understanding the scores

The scores are based on several data points gathered from each plugin. We use the update-center.json to populate the list of plugins and their source code location.

Based on that, we run what we call probes on each plugin. The purpose of these probes is strictly to gather data such as:

  • Is there a Jenkinsfile within the plugin repository?

  • When was the last commit on the default branch of the repository?

  • etc.

Here is the list of probes used in the project, and you can find their source code in their repository.

Once the data is gathered, we run a list of scoring processes, which grade all plugins based only on the available data. All plugins are then scored using the same criteria. You can find the list of scoring processes on the Plugin Health Score site and their implementation in the Plugin Health Score repository.

Refer to the Plugin Health Scoring project documentation for further information about the architecture and behavior of the project.

How is it displayed?

The score of every plugin is fetched when the plugin site is built. That data is then used to build the /<plugin-name>/healthscore/ page, using the component PluginHealthScore. That component can be found in the plugin site repository.

The scores and different categories are dynamic, and are coming directly from the Plugin Health Scoring project.

Disclaimer

The scores are not perfect and are just another indicator of the plugin state. We are still working on using more data from the plugin to contribute to the score.

The grading system that generates the score for each plugin is, I believe, subjective. However, it is not written in stone and can, and most likely will, evolve in the future.

If you feel there is something incorrect about a plugin score, this may indicate a false negative. Please raise an issue on the Plugin Health Scoring project if the score does not appear to be accurate.

About the author

Adrien Lecharpentier

Adrien Lecharpentier

Adrien is a Jenkins user and plugins developer since 2009 and maintains several plugins. Currently, Adrien works at CloudBees as a software engineer, involved in open-source code development.