Skip to content

Create a web app for continuous evaluation and monitoring of explcheck results #28

@Witiko

Description

@Witiko

To provide a sustainable, user-friendly platform for evaluating and showcasing the results of explcheck on all expl3 packages (from both current and historical TeX Live distributions), I propose developing a publicly accessible web app. This app will be updated automatically and offer maintainers, contributors, and the wider TeX community real-time insights into explcheck findings and expl3 usage trends.

Background

In Section 2.2.3 of the project proposal, I discussed conducting a large-scale validation of explcheck by testing all expl3 packages from current and historical TeX Live distributions. The results would inform a TUGboat article, focusing on both quantitative trends in expl3 usage and qualitative insights for future improvements.

Rather than create and discard a one-off experiment, we can build a sustainable solution—a web app—that:

  1. Provides a continuous overview of explcheck results,
  2. Helps package maintainers track issues without installing or running explcheck locally, and
  3. Enables the community of expl3 programmers to explore and learn from aggregated symbol data.

Rationale

  1. Easy monitoring: Package maintainers can instantly see potential issues and errors flagged by explcheck without installing or configuring the tool.
  2. Continuous evaluation: Monitoring results as we develop explcheck allows us to catch regressions or new issues early, rather than discovering them at the end of the project.
  3. Practical example: Demonstrates how explcheck can be used from third-party Lua code.

In the future, the web app could also aggregate all public expl3 symbols from various packages. Similar to how web apps like DeTeXify help authors discover LaTeX2e commands and packages for mathematical symbols, our app could serve as a central repository of expl3 functions, allowing developers to easily discover symbols from different expl3 packages.

Requirements

A pull request (PR) addressing this issue should implement the following changes:

  1. Static website with daily updates:

    • Generated by GitHub Actions, published via GitHub Pages at https://witiko.github.io/expltools/explcheck/.
    • All linter results are precomputed and embedded into the site at build time, avoiding the need for dynamic data retrieval. This allows the entire site to be packaged as a single artifact, making it easy to review in pull requests before merging.
  2. Summary visualization on landing page:

    • Shows a high-level view of how many expl3 files have been found and the total number of detected warnings/errors.
    • Include a time-series or historical perspective (similar to a bar chart from my recent blog post).
    • Prominently display a search bar.
  1. Search and faceted filtering:

    • Selecting the search bar displays a (paginated) list of all found expl3 files and:
      • Allows full-text filename search of expl3 files.
      • Allows faceted search based on the types or categories of detected issues.
      • Dynamically updates the visualization to reflect filtered search results.
  2. Detailed file view:

    • Selecting a specific file (or group of files) shows:
      • A summary visualization scoped to that selection.
      • A list of detected issues with relevant code snippets for each.
      • The ability to switch between different TeX Live distributions and compare results over time.
    • The detailed file view should have a stable URL derived from the filename(s) of the expl3 files.

Next steps

  1. Start small:
    • First generate a static HTML table of found expl3 files using GitHub Actions.
  2. Iterate:
    • Next, generate detailed file views for individual files, potentially as separate HTML files, and link them from the table.
    • Add a stable JSON data source and use it to generate visualizations using e.g. the library D3.js.
  3. Hand over to a frontend developer:
    • Provide them with your JSON data structures, the mockups from the previous two steps, and the requirements.
    • Ask them to implement searching, filtering, and other features that are missing at this point.

Sub-issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions