Skip to content

epogrebnyak/ssg-dataset

Repository files navigation

pytest count release

Popularity of static site generators

Static site generators are tools to create documentation, blogs and landing pages.

This repo contains Github data (stars, forks, issues, create and last modified dates) for 40+ popular open source static site generators (SSG) and the code to create the dataset. There is also a Streamlit app and a Google Colab notebook to explore the dataset.

Motivation

Why is this data interesting? It help to find answers to the following:

  • Why people are building new stuff in a field where there are dominant projects?
  • What drives a SSG adoption by users?
  • Who are SSG project maintainers and what is their motivation?
  • What makes a SSG project a success and why it might fail?
  • Are well-designed themes more important than a SSG engine?

I also share ideas on picking the right SSG tool for your own project based on SSGs I tried myself.

Try live on Streamlit

Open in Streamlit

Streamlit app lays out a data story about SSGs with several visualisations.

Streamlit Screenshot

There is also a post in Streamlit Showcase forum about v.0.4.3 release.

Google Colab

Demo in Google Colab

Colab is a notebook with data downloaded and some code for charts.

Dataset

Download CSV DOI

The stable URL for dataset is https://raw.githubusercontent.com/epogrebnyak/ssg-dataset/main/data/ssg.csv

To download:

import pandas as pd
url = ("https://raw.githubusercontent.com/"
       "epogrebnyak/ssg-dataset/main/data/ssg.csv")
df = pd.read_csv(url, parse_dates=["created", "modified"])

How to update dataset

Get a Github token

You will need a Github token to retrieve stats for many repos. Write out .config.env at a directory where you run your Python code:

# Your Github username
GH_USER="epogrebnyak"

# Your personal Github token
GH_TOKEN="ghp_AzWYbshEUQ6sQhgxgQ7QyYFJX7g9Tn2uR4sG"

Your personal Github token is here and token documentation is here.

Update CSV file

The CSV file is generated from a list of Github repos grouped by programming language. This repo list is stored in a YAML file in the following format:

Go:
  - gohugoio/hugo
JavaScript:
  - gatsbyjs/gatsby
  - hexojs/hexo
  - vuejs/vuepress
Python:
  - mkdocs/mkdocs
  - getpelican/pelican
  - sphinx-doc/sphinx

Use ssg.yaml_to_csv() to update CSV file:

from ssg import yaml_to_csv

yaml_to_csv("data/ssg.yaml", "data/ssg.csv")

You can also run example/update.py to make new data/ssg.csv:

poetry run python example/update.py

The update.py script will also writes metadata.json file.

Adding more SSGs to dataset

You can make a PR to update SSG list, just add a new line to YAML file.

More links about SSG

Recent articles

Performance

Static Site Generators Build Performance Testing:

  • framework-based SSG: gatsby, next, nuxt
  • non-framework-based SSG: astro, eleventy, hugo, jekyll

Structure

Listings

Samples

Hosting services

Archive articles

Citation

Evgeny Pogrebnyak. (2021). Github data for static site generators (SSG) popularity (Version 0.1.2) [Data set]. Zenodo. http://doi.org/10.5281/zenodo.4429834