alunduil / alunduil/blog.alunduil.com

Maintenance at scale-of-one: one template, four Haskell libraries

未关闭
#98 4 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
idea
主要语言
Astro
星标
1
派生
1
平均合并
6 小时 34 分钟
30 天内合并 PR
118

描述

## Spark

This week the same modernization template — Travis → GitHub Actions matrix, drop Nix, fourmolu+hlint pre-commit, KAC 1.1.0 changelog, AGENTS.md/CLAUDE.md, Renovate `config:best-practices`, `develop`→`main`, modernized cabal bounds, tag-driven Hackage release workflow — landed across four Haskell repos: `collection-json.hs`, `network-uri-json`, `siren-json.hs`, `network-arbitrary`. Same shape, four repos, five days.

## Why it could be interesting

The activity is "I modernized my Haskell libraries." The underlying claim worth a post: **for solo maintainers, the bottleneck on supporting N libraries isn't writing code — it's keeping N CI/release/lint configurations coherent.** A reusable template (whether copy-paste, GitHub starter, chezmoi-managed scaffolding, or org-level reusable workflows) collapses the per-repo *meta*-maintenance cost from O(N) to O(1), leaving the actual library logic as the only per-repo work.

Maintainer Month is a useful framing here: maintainer burnout in the published narrative is mostly *meta-work* (CI breakage, release plumbing, security advisories, Dependabot churn), not feature work. A solo-maintainer template is the same insight applied at the personal scale.

## Open questions

- [ ] What's actually shared vs. genuinely per-repo across the four libraries?
- [ ] What's the right deliverable shape — `cookiecutter` starter? GitHub `.github/` repo with reusable workflows? chezmoi-shipped scaffolding? Just a checklist?
- [ ] How does the template language-bind? Haskell-specific bits vs. portable bits — would the same template fit zfs-replicate (Python) or woodland-generators (TS)?
- [ ] Connects to: #72 (Terraform import skill) — same impulse (collapse meta-work), different layer.

## Source material

- [collection-json.hs#135](https://github.com/alunduil/collection-json.hs/pull/135) — ci: replace Travis with GitHub Actions matrix
- [collection-json.hs#134](https://github.com/alunduil/collection-json.hs/pull/134) — Modernise cabal file and set verified bounds
- [collection-json.hs#133](https://github.com/alunduil/collection-json.hs/pull/133) — Add tag-driven Hackage release workflow
- [collection-json.hs#131](https://github.com/alunduil/collection-json.hs/pull/131) — Add fourmolu + hlint to CI
- [collection-json.hs#82](https://github.com/alunduil/collection-json.hs/issues/82) — Rename develop → main
- [collection-json.hs#111](https://github.com/alunduil/collection-json.hs/issues/111) — Drop Nix tooling
- [siren-json.hs#71](https://github.com/alunduil/siren-json.hs/pull/71) — Drop unmaintained Nix scaffolding
- [siren-json.hs#72](https://github.com/alunduil/siren-json.hs/pull/72) — Migrate Object construction to Data.Aeson.KeyMap
- [network-uri-json#96](https://github.com/alunduil/network-uri-json/pull/96), [#97](https://github.com/alunduil/network-uri-json/pull/97) — README + AGENTS.md/CLAUDE.md
- [network-arbitrary#87](https://github.com/alunduil/network-arbitrary/pull/87) — Renovate config:best-practices
- [Welcome to Maintainer Month: Celebrating the people behind the code](https://read.readwise.io/read/01kqw8r31wqxg3sbt3scg6aqef) — GitHub
- [Bliki: Mythical Man Month](https://read.readwise.io/read/01kqwfb4a39ct7pfh54ea7thqx) — Fowler
- [Haskell: the re-export module X pattern](https://read.readwise.io/read/01kqwscehfqfy0tvrr26f5ej6z) — Unformed Delta

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。