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.
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.
Streamlit app lays out a data story about SSGs with several visualisations.
There is also a post in Streamlit Showcase forum about v.0.4.3 release.
Colab is a notebook with data downloaded and some code for charts.
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"])
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.
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.
You can make a PR to update SSG list, just add a new line to YAML file.
Static Site Generators Build Performance Testing:
- framework-based SSG: gatsby, next, nuxt
- non-framework-based SSG: astro, eleventy, hugo, jekyll
- 347 Generators listed at Jamstack Site Generators
- The definitive listing of Static Site Generators — all 460 of them!
- Awesome Static Web Site Generators
- Why Static Site Generators Are The Next Big Thing (2015)
- Static Site Generator Trends (2020)
- Choose Best Static Site Generator by snipcart
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