Skip to content

conda/issue-tracker

Repository files navigation

Conda (and friends) Issue Tracker

Website

A visualization of the issue count of conda org repositories over time.

This is designed to be a serverless site with a static frontend.

Using GitHub Actions we query at set intervals for the number of issues open for a given repository. We generate snapshots for 4 kinds of graphs:

  • recent (hourly interval over the past 3 days)
  • month (every 3 hours over the past 31 days)
  • year (every 24 hours over the past 366 days)
  • all-time (every 72 hours since the start of time)

Snapshots displayed with Chart.js.

Inspired by VSCode Issue Tracker by Benjamin Lannon.
Credit also goes to GitHub Corners by Tim Holman.

Contributing

Contributions to issue-tracker are welcome, see below for details on configuring your environment.

Code of Conduct

The conda organization adheres to the NumFOCUS Code of Conduct.

Development Environment

  1. Signup for a GitHub account (if you haven't already) and install Git on your system.

  2. Fork the conda repository to your personal GitHub account by clicking the "Fork" button on conda/issue-tracker and follow GitHub's instructions.

  3. Clone the repo you just forked on GitHub to your local machine. Configure your repo to point to both "upstream" (the main repo) and "origin" (your fork):

    # choose the repository location
    $ PROJECT_ROOT="$HOME/issue-tracker"
    
    # clone the project
    # replace `your-username` with your actual GitHub username
    $ git clone git@github.com:your-username/issue-tracker "$PROJECT_ROOT"
    $ cd "$PROJECT_ROOT"
    
    # set the `upstream` as the the main repository
    $ git remote add upstream git@github.com:conda/issue-tracker
  4. Create a local development environment and activate that environment

    # install conda packages
    $ conda create -n issue-tracker nodejs python pygithub pyyaml rich
    $ conda activate issue-tracker
    
    # install nodejs packages
    (issue-tracker) $ npm install

Static Code Analysis

This project is configured with pre-commit to automatically run linting and other static code analysis on every commit. Running these tools prior to the PR/code review process helps in two ways:

  1. it helps you by automating the nitpicky process of identifying and correcting code style/quality issues
  2. it helps us where during code review we can focus on the substance of your contribution

Feel free to read up on everything pre-commit related in their docs but we've included the gist of what you need to get started below:

# install pre-commit hooks for conda
(issue-tracker) $ pre-commit install

# manually running pre-commit on current changes
# note: by default pre-commit only runs on staged files
(issue-tracker) $ pre-commit run

# automatically running pre-commit during commit
(issue-tracker) $ git commit

Beware that some of the tools run by pre-commit can potentially modify the code (see black and blacken-docs). If pre-commit detects that any files were modified it will terminate the commit giving you the opportunity to review the code before committing again.

Strictly speaking using pre-commit on your local machine for commits is optional (if you don't install pre-commit you will still be able to commit normally). But once you open a PR to contribue your changes, pre-commit will be automatically run at which point any errors that occur will need to be addressed prior to proceeding.

Generating Historical Snapshots

While the idea is to run GitHub Actions on a regular schedule to generate snapshots of data this only appends new data. To generate the historical data run the provided Python program.

To run history.py you need a GitHub personal access token. This can be conveniently stored in your home directory (at ~/.github_apikey) for repeated use.

(issue-tracker) $ python history.py

The raw data generated by history.py will be cached to allow for faster testing and fewer expensive calls to GitHub's API. Ignore the cache via --ignore-cache argument:

(issue-tracker) $ python history.py --ignore-cache

Running Locally

To test the site locally run http-server from $PROJECT_ROOT:

(issue-tracker) $ http-server