Plugin Modernizer Stats Visualization

Project goal: Build a public, static visualization site that consumes the existing modernization dataset (from GitHub) during its build process to present dashboards and per‑plugin reports

Skills to study/improve: Javascript/Typescript, HTML, CSS, Dashboard, Data Visualization, UI/UX Design

NOTE: This idea is published as a draft under active discussion, but it is confirmed in principle. It is FINE to apply to it. The scope and the suggested implementation may change significantly before the final version is published. Sections like quickstart guide and newbie-friendly issues may be also missing. As a contributor, you are welcome to request additional information and to join the discussions using channels linked on this page.

Details

Abstract

The Jenkins plugin-modernizer tool is a CLI that applies migrations and plugin transformations using OpenRewrite recipes (for example, BOM alignment, parent POM updates, deprecated APIs, test migration). As part of GSoC 2025, its runs produced structured, machine-readable metadata that is collected in the jenkins-infra/metadata-plugin-modernizer repository.

This project proposes building a public, static "Plugin Modernizer Stats" visualization site that:

  • Aggregates the collected modernization metadata

  • Presents clear dashboards, drilldowns, and per-plugin reports

  • Highlights priority areas and ecosystem-wide modernization needs

  • Helps maintainers plan upgrades and helps newcomers find impactful contributions

Delivery may be hosted under stats.jenkins.io or as a separate static site, depending on infra preferences.

Rationale

  • Jenkins has hundreds of plugins maintained by a distributed community; visibility into modernization status is limited.

  • A browsable, fast, and resilient static site reduces operational load while maximizing reach.

  • The site presents modernization results as understandable guidance, showing maintainers where effort most improves security, stability, and compatibility.

Goals

  • Build a static site that consumes the existing dataset from jenkins-infra/metadata-plugin-modernizer during the build process (pull raw data directly from GitHub)

  • Provide global views and per-plugin pages with clear, actionable visualizations (parent POM, BOM, test frameworks, deprecated APIs)

  • Implement useful dashboards and tables with basic client-side filtering (by maintainer/org, labels, severity)

  • Ensure fast, reliable publishing via lightweight CI that rebuilds on a schedule or data changes

  • Focus on user-facing clarity: concise summaries, status badges, and links to repos/issues

Non-Goals

  • Re-implement core analyses from plugin-modernizer (reuse its outputs)

  • Implement dynamic backends or server-side APIs (site remains static and built from GitHub data)

  • Replace developer tutorials; focus is on status visualization

Implementation

A production-ready static site:

  • Home: high-level ecosystem health metrics and trends

  • Dashboards: filters by modernization topic (parent POM, BOM, test frameworks, deprecated APIs)

  • Plugin reports: single-page summaries with current status, recommended steps, links to repo/issues

  • Data explorer: table views with sorting/filtering, CSV/JSON export

  • Methodology and data dictionary pages

Automated publishing:

  • Pull data from metadata-plugin-modernizer on schedule or event

  • Validate schema and handle missing/partial data gracefully

  • Build and publish to stats.jenkins.io or a designated website

Community enablement:

  • Clear contribution guide (adding new visualizations, fields, or rules)

  • Maintainer-friendly links (open issues, PR templates for common upgrades)

Scope and Deliverables

Static site generator

  • Choose a generator suitable for large tables

  • Create pages: overview, dashboards, plugin detail, methodology

  • Implement client-side filtering for large lists (TypeScript)

Visualization and UX

  • Metrics cards, trend lines, and categorized breakdowns

  • Severity and priority badges; status heatmaps

  • Mobile-friendly layouts and accessible components

Automation and publishing

  • CI pipeline (GitHub Actions or Jenkins Pipeline) to:

    • Fetch/validate metadata

    • Build site

    • Publish to target (GitHub Pages, S3+CloudFront, or stats.jenkins.io infra)

  • Failure alerts with clear logs

Skills

  • TypeScript

  • React

  • Static site generation

  • HTML/CSS

  • Data visualization (Apache ECharts; Plotly.js acceptable)

  • CI/CD (GitHub Actions or Jenkins)

  • Working with CSV/JSON datasets

Tech Stack

  • Frontend: React + TypeScript with Vite.js (preferred) or Gatsby

  • Charts: Apache ECharts (preferred), Plotly.js (acceptable)

  • Hosting: stats.jenkins.io or GitHub Pages depending on infra decision

  • Automation: GitHub Actions or Jenkins Pipeline for scheduled/data-triggered builds

Project Size

175h (standard/small)

Project Difficulty

Medium

Benefits to Jenkins

  • Increased modernization velocity by surfacing clear, actionable status

  • Lower maintenance burden via a static, cacheable public site

  • Improved onboarding paths for new contributors via "high-impact" views

  • Better ecosystem health through visibility and trend tracking

Technical Notes

  • Source of truth: jenkins-infra/metadata-plugin-modernizer

  • Data format: CSV and JSON from the GitHub repository; ingested at build time

  • Build frequency: scheduled (for example, daily) plus event-based triggers

  • Hosting: prefer stats.jenkins.io if feasible; otherwise GitHub Pages or infra-approved bucket

  • Privacy: only public plugin data; no user tracking beyond anonymous analytics if approved

Contributor Requirements

  • Show prior work with static sites or dashboards

  • Comfortable with data modeling and TypeScript

  • Willingness to iterate with Jenkins community feedback

  • Write clear docs and tests

Potential Mentors

Project Links

Organization Links

> Go back to other GSoC 2026 project ideas