Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/curl/stats

Scripts for generating project statistics and for plotting them as graphs.
https://github.com/curl/stats

curl git gnuplot libcurl statistics

Last synced: 7 days ago
JSON representation

Scripts for generating project statistics and for plotting them as graphs.

Awesome Lists containing this project

README

        

# Stats

This repository holds a collection of scripts for generating project
statistics and data.

Stats generated by these scripts have been, are and will be used in curl
related blog posts and presentations and by providing the scripts in a public
repository everyone can reproduce the results and can verify the correctness
of them.

This allows everyone to help out to improve the scripts and to provide new
ones that generate even more, better and more interesting project stats.

## Run the scripts

### Check out the main curl git repository

git clone https://github.com/curl/curl.git

### Check out this repository as a subdirectory

cd curl
git clone https://github.com/curl/stats.git

### Get data

The scripts are (primarily) written in perl and are intended to be run from
the curl source code root.

Example:

perl stats/script.pl > tmp/script.csv

### Render graph

The rendering of the graph is separate from the data gathering part. We
gnuplot script is named the same as the perl script and uses the CSV file as
input to generate a SVG output:

gnuplot -c stats/script.plot > tmp/script.svg

### The curl dashboard

The entire collection of scripts is run by the `mksvg.sh` script once per day
in the curl webserver to generate the [curl
dashboard](https://curl.se/dashboard.html).

## Output

The scripts are written to output CSV data, usually having data and/or curl
release versions included in each line.

# Scripts

All perl scripts use the extension `.pl` and they generate CSV files with
data. Several of them are written with a "cache", so that repeated invokes
only scans for the part that is not cached. To run faster and avoid repeating
doing the same things every day.

The gnuplot scripts use the extension `.plot` and they generate SVG output.

## git details

Lots of git operations work with the assumption that we can list all tags
(which correspond to releases) and sort them, and then act on the git
repository at the times when those tags were set.

Lots of git operations also scan specific directory paths of the source code
tree, like `src/` and `lib/` since we know the layout we know the meaning of
that.

# License

All scripts in this repository are provided under the [MIT](LICENSE).