Open Source Tools

On this page, you will find information about a variety of utilities I've implemented for varying purposes and which I have released as open source software. It is organized on this page into the following sections:

You can find these open source tools at the following sites:

GitHub Actions for Workflow Automation

While developing software for my research, on occasion I implement tools to automate parts of my workflow. When these seem like they would be useful to others, I share them as open source. Since we use GitHub to develop our research software, our choice for CI/CD and other automation is GitHub Actions, which is GitHub's built in workflow automation framework. I've deployed a website, Open Source GitHub Actions for Workflow Automation, focused specifically on the GitHub Actions that I've implemented for this purpose. A few of these GitHub Actions are the following.

jacoco-badge-generator: The jacoco-badge-generator parses a jacoco.csv file from a JaCoCo coverage report, computes C0 and C1 coverage percentages from JaCoCo's Instructions and Branches counters, and generates badges for one or both of these (user configurable) to provide an easy to read visual summary of the code coverage of your test cases. The jacoco-badge-generator provides two modes of operation: as a GitHub Action within GitHub's workflow automation framework, as well as a command-line utility that can be used as part of a local build script. The jacoco-badge-generator (as a GitHub Action) can also optionally be used as part of a pull-request check. Specifically, you can configure it to fail the workflow run if coverage decreased relative to prior run, and/or if coverage is below a target threshold.

user-statistician: The user-statistician GitHub Action generates a detailed visual summary of your activity on GitHub in the form of an SVG, suitable to display on your GitHub Profile README.

generate-sitemap: The generate-sitemap GitHub Action generates an XML sitemap for a website hosted on GitHub Pages.

javadoc-cleanup: The javadoc-cleanup GitHub Action enables creating mobile-friendly and SEO ready, documentation sites by post-processing javadocs in GitHub Actions. The javadoc-cleanup GitHub action is a utility to tidy up javadocs prior to deployment to an API documentation website, assumed hosted on (but not limited to) GitHub Pages.

count-action-users: The count-action-users GitHub Action is a meta-action for use by maintainers of GitHub Actions to monitor and report the number of users of the GitHub Actions that they maintain. It generates a Shields endpoint for each Action that they maintain with the count of the number of workflows that use it.

Top of the page

Command-line Utilities

Here are a few command-line utilities that I originally implemented for my own purpose, but have since released and maintain as open source.

bibliometrics: The bibliometrics tool is a command-line utility that parses a researcher's Google Scholar profile, and summarizes various bibliometrics, generating an SVG that can be shared on a website or other online platform. The bibliometrics that it computes include h-index, g-index, i10-index, i100-index, e-index, as well as total number of citations and the five-year citation count. See my bibliometric summary for an example.

jacoco-badge-generator: See earlier on this page for details. This tool can be used as a command line tool, or within the GitHub Actions framework.

Top of the page

Docker Containers

I currently maintain a few Docker containers, each originated for a specific purpose I had at the time, that I decided to share publicly.

pyaction: A Docker container designed to support implementing Github Actions with Python. It consists of a python slim Docker image, additionally with curl, gpg, git, and the GitHub CLI.

gnu-on-alpine: A lightweight container to support shell scripting, consisting of Alpine Linux to keep the image size small, and a single layer with several GNU tools including bash, coreutils, findutils, and gawk.

alpine-plus-plus: A lightweight container to support shell scripting with git, consisting of Alpine Linux to keep the image size small, and a single layer with git, as well as all of the GNU tools from gnu-on-alpine.

Top of the page