# Open-source self-hosted comments Comparison table for open-source self-hosted commenting servers ([lisakov.com/projects/open-source-comments/](https://lisakov.com/projects/open-source-comments/)). Inspired by [staticsitegenerators.net](http://staticsitegenerators.net). ## Workflow - The data are stored in `data.yaml`. This file is edited manually. - `get_data.py` reads the GitHub and GitLab repositories from `data.yaml`, fetches the current repository metadata and latest commit through their APIs, then updates `data.yaml` for the following: - displayed stars from the repository with the higher star count, - combined star growth over the last 30 days, - latest commit date, - creation date, - license. - Historical repository-derived data are stored in `apigh/history.json`. It keeps only value changes for the fields used by the page (`stars`, `stars_total`, `stars_github`, `stars_gitlab`, `open_issues`, `created`, `license`, `last_commit`) instead of storing raw API responses for every repository every day. - `yaml_2_js.py` converts `data.yaml` to `data.js` (it defines three variables — `osc_data`, `cols` and `col_keys`). - `history_2_js.py` reduces `apigh/history.json` to `star-history.js`, the star series the interactive chart reads: only the `stars` field, without the samples `plot-stars.py` also rejects, downsampled to the points that are visible at chart resolution. - `index.html` is the page structure; `index.md` holds all of its prose. `md_to_html.py` renders each `` section of `index.md` into the matching slot in `index.html`, and computes the system and attribute counts from the data. The table, the column popover, the project record and the chart are drawn by `js/osc.js` (with `js/osc-lib.js`) from `data.js` and `star-history.js` — plain scripts, no framework and no build step. - `plot-stars.py` reads `apigh/history.json`, plots stars vs. time for selected projects, and writes `stars-v-date.svg`. The page shows the interactive chart instead and falls back to this SVG inside `