gates / gates (push) Successful in 6m24s
Read-only. fetch.py + tables.py (stdlib), TABLE.md (45 charts, % of respondents), FELHOM.md (apps, features, reasons, hardware, trends, ten ranked recommendations), METHOD.md (hashes, counts, matching, MIT licence, limits). Survey files are not committed. One register row (R-989) and one STATUS line ask the operator to rule on the recommendations.
41 lines
3.1 KiB
Markdown
41 lines
3.1 KiB
Markdown
# Method — selfh.st survey read, 2026-10-12
|
|
|
|
**Fetched** 2026-10-12 by `fetch.py` to `~/research-cache/selfhst-survey/` (outside every repo; not committed).
|
|
|
|
| Year | Data file | Bytes | SHA-256 | Matches the spec |
|
|
|---|---|---|---|---|
|
|
| 2023 | `https://raw.githubusercontent.com/selfhst/cdn/main/assets/surveys/annual/2023-results.json` | 10362 | `714350e5e4b8f3ccbc7ce8c1348122a9b7a4ae8167abaf2c051d3dcc9911f03f` | yes |
|
|
| 2024 | `…/2024-results.json` | 14290 | `289c5161e5b6b5684ac6c751c16e73dd0dc42490c5c0d24517a6c1f891da4832` | yes |
|
|
| 2025 | `…/2025-results.json` | 20428 | `e083094ad7f8cb6721f7059c6c73e8779273717bb3d4c1f14dbd744dc0d0229e` | yes |
|
|
|
|
**Respondents.** 2025: **4,081**, stated as completed responses on `https://selfh.st/survey/2025-results/`.
|
|
2023 and 2024 pages give only rounded numbers ("just shy of 1,900", "~3,700" — `https://selfh.st/survey/2023-results/`,
|
|
`…/2024-results/`). The exact figures used, **1,869** and **3,655**, are the column sum of the first, mandatory,
|
|
single-choice question (personal / enterprise / both). The same method gives exactly 4,081 for 2025.
|
|
|
|
**Shapes.** 2023/2024: top-level `charts`, each with an `id`. 2025: `categories[].charts[]`, no `id`, five
|
|
categories, 39 charts. Some 2025 charts carry a `commentary` field (not copied).
|
|
|
|
**Percentages.** Multi-select charts: % of the year's respondents. Single-choice charts (marked in `TABLE.md`):
|
|
% of the column sum, because the question went to a subset or not everyone answered. Favourite software is one
|
|
answer per person but the chart drops small counts, so it is % of respondents.
|
|
|
|
**Matching across years.** 2023/2024 by `id` (same titles). 2025 by question meaning, a hand-written map in
|
|
`tables.py` (`MATCH_2025`); both titles are printed in every section. Answer labels mapped by hand where the
|
|
wording changed (`ALIAS`, e.g. Yes → Deploy, Generic Linux → Linux, Docker - Individual → Container (Separate),
|
|
2023 Paperless → Paperless-ngx, 2024 "Trilum" → Trilium); labels that differ only in case are merged and listed.
|
|
|
|
**Unmatched (no same question in 2025):** 2023 offsite-backup yes/no (T40), 2023 Kubernetes (T41 — 2024/2025
|
|
ask about any orchestration), 2023 media-streaming yes/no (T42), 2024 smart-home protocols (T43), 2024
|
|
ActivityPub yes/no and platforms (T44, T45). 2025-only: Management Platforms, Authentication, Git.
|
|
|
|
**Licence.** The results page shows no licence. The data repository `github.com/selfhst/cdn` is **MIT**
|
|
(GitHub API `license.spdx_id = MIT`; `LICENSE` reads "MIT License, Copyright (c) 2025 selfh.st"). We commit no
|
|
survey file and no survey prose; only our own counts derived from it, each cited to its URL.
|
|
|
|
**Limits.** Hobby users, mostly technical (Technology career 80.6 %, T36), self-selected through the selfh.st
|
|
newsletter and community, not households buying a service. Multi-select counts: a column passes 100 %. Open-text
|
|
charts (favourites) omit small answers. **Country:** the JSON files carry no country data, but the **2024 results
|
|
page has a country table** (HTML only, not in `tables.py`): United States 964, Germany 430 … **Hungary 19**.
|
|
2023 and 2025 pages have none.
|