mirror of https://github.com/helm/helm
docs(agents): add Helm design philosophy to AGENTS.md (#32559)
Append the project's design-philosophy guide after the existing AGENTS.md content so agent-assisted review (Copilot code review, and agents that read the repo) judges changes the way maintainers do: how-to-engage and the behavior gates first, then design principles, then context and provenance. The guide is ordered by priority because Copilot code review attends best to roughly the first 1000 lines of an instructions file. The review-critical principles lead so they stay in range, while uncapped agents read all of it. Part of #32559. A follow-up commit removes the existing AGENTS.md content now covered by the guide; the helm-philosophy skill and the HIP-sourced sync are tracked in the issue. Signed-off-by: Joe Julian <me@joejulian.name>pull/32560/head
parent
c000a408b8
commit
2445d8b5a7
@ -0,0 +1,353 @@
|
||||
# Helm design philosophy: sources, field notes, and background
|
||||
|
||||
Background for the design-philosophy section of `AGENTS.md`: how it was assembled, who the maintainers are, the developer-call field notes and quotes behind the principles, the full source list, and honest limits. This is provenance, not review criteria.
|
||||
|
||||
## How this guide was sourced
|
||||
|
||||
Primary sources, actually fetched and mined:
|
||||
|
||||
- **Helm Developer Call recordings.** The weekly maintainer call (Thursdays, 9:30am US
|
||||
Pacific) publishes each recording to Helm's own YouTube channel (`@Helmpack`), the "Helm
|
||||
Community Meetings" playlist (`Helm Developer Call YYYYMMDD`), stated in
|
||||
`helm/community/communication.md`, which also points to the running-notes Google Doc. The
|
||||
playlist holds **380 videos** spanning 2018-2026; **377 with captions were transcribed**
|
||||
via `yt-dlp` (YouTube's timedtext API and all transcript services were token-walled; 3
|
||||
videos lack captions or were removed) and mined across 12 signal-ranked passes. Captions
|
||||
are ASR (auto-generated), so wording is approximate and speaker labels are inferred only
|
||||
where the transcript names someone. The Field notes section distills this archive.
|
||||
- **Maintainer GitHub comment histories** across `helm/helm` and `helm/community` (via
|
||||
authenticated API): Farina, Butcher, Fisher, Khouzam, Dolitsky, Thomas, Hickey, Reese,
|
||||
Rigby, Mungai, Howe, Sirchia, and Julian (Julian's oldest 2019-2020 items only partially
|
||||
sampled - see Gaps).
|
||||
- **All 27 Helm Improvement Proposals** (index `helm/community/hips/`).
|
||||
- **The developer-call notes 2017-2021** (`helm/community/meeting-notes/*.txt`).
|
||||
- **Both blog archives** (`codeengineered.com`, `helm.sh/blog`), **conference-talk
|
||||
transcripts** (KubeCon 2018-2025, the QCon "Helm: Past, Present, Future" panel), and
|
||||
**podcasts** (SE Radio 509, GCP 50, Kubernetes Podcast 102/168).
|
||||
|
||||
|
||||
## The maintainer roster (multi-repo)
|
||||
|
||||
Helm is a multi-repo org; the canonical registry is `helm/community/maintainer-groups.yaml`
|
||||
(established by **HIP-0007**, authored by Farina and Rigby - still draft, but the only
|
||||
machine-readable source). Do not treat `helm/helm/OWNERS` as the whole project.
|
||||
|
||||
- **Org maintainers** (scope, vision, brand, security oversight; `MAINTAINERS.md`): Karen
|
||||
Chu (`karenhchu`), Matt Butcher (`technosophos`, chair), Matt Farina (`mattfarina`),
|
||||
Reinhard Nagele (`unguiculus`), Scott Rigby (`scottrigby`).
|
||||
- **Helm core** (`helm/helm/OWNERS`): Evans Mungai (`banjoh`), George Jenkins (`gjenkins8`),
|
||||
Joe Julian (`joejulian`), Marc Khouzam (`marckhouzam`), Matt Farina, Robert Sirchia
|
||||
(`robertsirc`), Andrew Block (`sabre1041`), Scott Rigby, Matt Butcher, Terry Howe
|
||||
(`TerryHowe`). Triage: `yxxhero`, Allen Bai (`zonggen`), Ian Zink (`z4ce`).
|
||||
- **Website** (`helm-www`): Jenkins, Karen Chu, Farina, Paige Calvert (`paigecalvert`),
|
||||
Rigby, Butcher, Howe, `yxxhero`.
|
||||
- **Chartmuseum**: Casey Buto (`cbuto`), Josh Dolitsky (`jdolitsky`), Obinna Odirionye
|
||||
(`nerdeveloper`), Nace Sc (`scbizu`).
|
||||
- **Charts group** (chart-testing, chart-releaser, actions): Reinhard Nagele, David Karlsen
|
||||
(`davidkarlsen`), Carlos Panato (`cpanato`).
|
||||
- **Mapkubeapis plugin**: Farina, Sirchia, Rigby.
|
||||
- **Security team** (`SECURITY.md`): Block, Jenkins, Butcher, Farina, Sirchia.
|
||||
- **Emeritus** (~29, across groups): Taylor Thomas (`thomastaylor312`), Martin Hickey
|
||||
(`hickeyma`), Adam Reese (`adamreese`), Matt Fisher (`bacongobbler`), Josh Dolitsky
|
||||
(emeritus org-wide but active on Chartmuseum), Vic Iglesias (`viglesiasce`), Bridget
|
||||
Kromhout, Karena Angell (`angellk`), Michelle Dhanani (`michelleN`), Paul Czarkowski,
|
||||
Lachlan Evenson, Adnan Abdulhussein (`prydonius`), Rimantas Mocevicius, and others.
|
||||
|
||||
50 distinct humans total. When you cite "a maintainer," name them and their role, and
|
||||
remember decisions on non-`helm/helm` repos (Chartmuseum, charts tooling) belong to those
|
||||
groups.
|
||||
|
||||
|
||||
## Field notes from the Developer Call archive (2018-2026)
|
||||
|
||||
Distilled from mining all 377 available Developer Call transcripts. These extend, do not
|
||||
replace, the rules above; where a line restates an earlier rule it adds a vivid phrasing or
|
||||
new nuance. Quotes are ASR (approximate); speakers named only where the transcript
|
||||
identifies them; extra weight to Farina. Cited as `- who, dev call YYYY-MM-DD` (video id
|
||||
under `youtu.be/`).
|
||||
|
||||
### Identity and stability
|
||||
- **Boring is the goal.** "reliable boring infrastructure software that just needs to work...
|
||||
not a startup where you can move fast and break things" - Farina, 2024-05-16. Also: "if
|
||||
Helm 4's most exciting thing is we didn't break people, that's a big win."
|
||||
- **Majors are rare; Helm is ancillary.** "Helm isn't a major thing, it's a minor thing in
|
||||
what they do"; aim for a major "every 2 or 3 years," and assume most users lag one or two
|
||||
majors behind - Farina, 2026-03-12.
|
||||
- **Support reaches far past the official n-2**, because "the peak is Kubernetes ~18 months
|
||||
ago... most people are using unsupported versions" - Farina, 2023-03-16.
|
||||
- **Open source is not open build.** "everybody uses curl, nobody gets their curl binary from
|
||||
the curl project... open source doesn't mean open build" - why Helm ships no images or
|
||||
Homebrew/Chocolatey packages - Farina, 2023-12-14.
|
||||
- **Slowness is deliberate.** "we're just slower at merging things because so many people use
|
||||
it, we don't want to break people" - Farina, 2020-12-17.
|
||||
|
||||
### Scope
|
||||
- **Not a Swiss army knife.** "Helm is not attempting to be both a floor wax and a dessert
|
||||
topping" - point users wanting full lifecycle to Argo/Flux - 2022-02-24.
|
||||
- **Backward-compatible does not mean in-scope.** "make me a sandwich... or the Pizza Hut API
|
||||
- it's backwards compatible but it doesn't mean it's in scope" - 2023-08-10.
|
||||
- **Helm knows its place.** "it's like the separation between apt, yum and Chef... some
|
||||
features we can say this just doesn't belong in Helm, it belongs over here" - 2023-05-04.
|
||||
- **Do not route around a user's bug.** "they're trying to get Helm to ride around their bug
|
||||
which can introduce a regression... we shouldn't route around that" - Farina, 2026-01-29.
|
||||
- **apt/RPM do not create the user they install for** - so namespace/service-account creation
|
||||
is out of scope - Farina, 2026-01-15. And "Argo doesn't use Helm - it takes the template
|
||||
output and does its own thing" - 2024-07-18.
|
||||
- **Sprig's scope is frozen small.** "its primary user is Helm... it's not the one source of
|
||||
them all" - Farina, 2022-09-01.
|
||||
|
||||
### Backward and forward compatibility
|
||||
- **The Python 3 cautionary tale.** "we can't have our Python 3 moment here... we're an
|
||||
enabler for an ecosystem, we can't break it, and if we do Helm will just be forked" -
|
||||
Farina, 2024-10-10.
|
||||
- **An API is its response too.** "an API isn't just the arguments you pass in, it's the
|
||||
contract of what you get in response" - Farina, 2024-05-16.
|
||||
- **A new warning on previously-silent behavior is itself a breaking change** - Farina,
|
||||
2025-05-22. And "we don't deprecate and break [like Kubernetes]... we're adding an extra
|
||||
level of stability on purpose" - Farina, 2023-01-12.
|
||||
- **Gate compatibility on the visible thing.** Restrictions belong on the Helm version the
|
||||
user can see, not the chart version they cannot - 2026-05-14.
|
||||
- **Load-bearing bugs.** "people get very emotionally attached to the load-bearing bugs"; a
|
||||
silent behavior change (recompiles, does something different) "is even worse than removing
|
||||
it" - 2021-04-01, 2022-12-08.
|
||||
- **Fail loud, not silent.** A missing template function errors on old Helm (good); a
|
||||
silently-ignored new field is "an end user problem" (bad) - Farina, 2022-08-11.
|
||||
- **`helm create` output is exempt** from the compatibility promise - it is a developer
|
||||
helper, not a production/automation path - 2024-04-25.
|
||||
|
||||
### Author vs consumer
|
||||
- **Namespace creation in a chart "switches the roles/personas"** from the installer to the
|
||||
author - which is why it stays an install-time concern - Farina, 2020-02-06.
|
||||
- **Maintainers rank themselves last.** "those of us who build Helm, we prioritize last after
|
||||
everybody else... to make it a significantly better experience for somebody who installs a
|
||||
chart" - Farina, 2024-11-21.
|
||||
- **Put config where the knowledge lives.** Hook-parallelism safety is the chart author's
|
||||
knowledge, so it belongs in chart metadata, not a CLI flag - Farina, 2024-07-11.
|
||||
|
||||
### Keep the core small; dependency hygiene
|
||||
- **Support burden is the primary design driver.** "we're the ones who get the support
|
||||
requests and I'm trying to avoid the support requests" - Farina, 2025-10-09. And "one small
|
||||
maintenance burden could end up being something somebody has to get out of bed at 2am for."
|
||||
- **Wrap volatile dependencies behind your own API**, so a major dependency bump ships in a
|
||||
Helm minor - the "cube package" pattern that shields consumers from client-go churn -
|
||||
Farina, 2024-05-16. Do not hard-depend on a VC-funded startup's bespoke features: "a
|
||||
startup can pivot, we can't" - Farina, 2025-04-10.
|
||||
- **Distrust the Kubernetes dependency.** "we import nothing from kubernetes/kubernetes except
|
||||
the client, and even there I'm iffy on trust"; Helm keeps a "shallow clone" of the client-go
|
||||
factory exposing only what it needs - Farina, 2018-07-05, 2022-05-12.
|
||||
- **Only claim support for what you can test.** "we can assure it builds but we can't ensure it
|
||||
runs" - add an architecture only when it hits mainstream - 2023-08-31.
|
||||
|
||||
### Portability and the plugin runtime
|
||||
- **One static binary, no dynamic linking.** "we produce Helm as a single static binary
|
||||
without dynamic linking so everything works everywhere" - which is why a `.so`-emitting
|
||||
engine is a non-starter and WASM is the target - Farina, 2024-11-07.
|
||||
- **Embed a pure-Go WASM runtime** (wazero); reject shared-object plugins - Farina, 2025-03-06.
|
||||
- **"If you build it they will come" is false.** Helm 2's pluggable engine hook (`EngineYard`)
|
||||
went unused for years and was deleted in v3 - "nobody ever came" - Farina, 2024-10-10.
|
||||
- **WASM is the sandbox that lets alternative engines and post-renderers ship inside a chart**,
|
||||
so a consumer can "just grab a chart and install it" without a third-party plugin, and
|
||||
untrusted plugin code is isolated instead of "executing arbitrary executables" - Farina,
|
||||
2025-12-18; Scott/George, 2025-07-10.
|
||||
|
||||
### Templating and determinism
|
||||
- **Alternative engines enter only through the plugin seam, never core** - a chart must "just
|
||||
work without having to look inside it" - 2023-08-10.
|
||||
- **Isolate non-determinism in a "generate values" phase.** Do crypto/random/`lookup` up front
|
||||
so core rendering stays 100% reproducible; "YAML in, YAML out" as a guiding principle -
|
||||
2023-11-30.
|
||||
- **Turing-complete templates make a chart's real image set unknowable** - the reason a
|
||||
declared image/BOM annotation exists - 2023-11-30.
|
||||
- **Some things can't be fixed in Helm.** Template line numbers/error text live in Go's stdlib
|
||||
`text/template`; providing them would mean forking Go, so it is out of scope - Farina,
|
||||
2024-10-10.
|
||||
|
||||
### Values and lifecycle
|
||||
- **Rollback = exactly the prior state.** "if you want to make changes then you need to roll
|
||||
forward" - adding even a label on rollback risks a non-clean rollback - 2023-11-02.
|
||||
- **`null` deletes a key** - a deliberate sentinel, because the Kubernetes API rejects some
|
||||
empty/conflicting keys and users need a way to remove them - 2025-01-02.
|
||||
- **Release objects need their own API versions, and release logic should be separate from
|
||||
chart logic**; upgrade logic should key off the application's own version (its DB schema
|
||||
version), not chart/packaging metadata, "because people do lots of funny things with
|
||||
packaging" - Farina, 2025-12-11.
|
||||
- **Never delete by surprise.** "data loss is always bad"; honor `resource-policy: keep` even
|
||||
when set outside Helm - Joe Julian, 2025-05-01. Annotate everything Helm creates and error
|
||||
on ownership conflict (exactly one owner).
|
||||
- **CRDs are cluster-global/root-level.** "think of a CRD like a feature flag on your cluster
|
||||
... that's like a root access thing"; auto-deleting one is "deleting a production database";
|
||||
"two wrongs don't make a right" - let Kubernetes handle version changes, and Helm does not
|
||||
rewrite users' manifests - Farina, 2019-01-31, 2026-01-29, 2020-11-12, 2020-02-27.
|
||||
- **Never panic.** "Helm shouldn't panic... anytime you see a panic, that's a spot to worry
|
||||
[about] a security problem"; and inconsistency is itself a bug (erroring on upgrade but
|
||||
exit-0 on install for the same condition) - 2023-05-25, 2021-02-11.
|
||||
|
||||
### Distribution and trust
|
||||
- **Decentralization is a "free market" (Packagist model), not a hosting service.** The central
|
||||
`helm/charts` repo died of maintainer burnout and an unpayable bandwidth bill ("nobody's
|
||||
going to pick up that check") - 2018-10-25, 2020-09-24.
|
||||
- **Never bake a third party's URL into the client** - own a vanity URL and redirect; a
|
||||
hard-coded external URL caused a P1 outage - 2020-08-27, 2026-04-23.
|
||||
- **Content-address by archive digest** (do not assume git); use one digest-keyed cache for
|
||||
both classic repos and OCI, because name+version is neither unique nor trustworthy - Farina,
|
||||
2024-10-17. This requires deterministic `helm package` (sort files before tarring) -
|
||||
2020-05-28.
|
||||
- **Do not mix OCI and repository concepts (or code).** Add OCI as a third option beside repos;
|
||||
"what value is OCI giving us if we're just re-implementing the entire chart-repository API?"
|
||||
Work within native OCI primitives, no server-side daemons - Farina, 2026-01-08, 2021-06-24.
|
||||
- **Spec-compliance is not real-world compatibility.** A "technically correct" OCI-auth change
|
||||
broke real registries and "Helm became nonfunctional" - hence mandatory multi-registry
|
||||
integration testing before any major - 2024-08-01, 2026-04-23.
|
||||
- **Chart signatures are location-independent** - a chart doesn't embed its repository name, so
|
||||
its signature survives moving between repos (unlike a container image) - Butcher, 2019-05-30.
|
||||
- **Air-gap = a repeatable bill-of-materials.** Helm must not reach outside the air gap; it
|
||||
provides a reproducible enumeration of images, and "does not provide the trust methodology"
|
||||
because no single one exists - 2023-01-19.
|
||||
|
||||
### Security
|
||||
- **Charts are handled as in-memory tarballs, not off disk** - "certain classes of attack
|
||||
vectors go away because you're not dealing with a filesystem"; in-memory decompression is
|
||||
bounded (zip-bomb defense) with surveyed headroom - Farina, 2024-12-12, 2025-12-18.
|
||||
- **Warn, don't block, when a security-relevant behavior is already in use** ("instead of
|
||||
blocking it in the name of security we announced it"); use an env var, not a flag, for a
|
||||
footgun opt-out so it "won't spread by copy-paste" - 2024-05-23.
|
||||
- **First value wins is a security stance** - a later override for the same key is an injection
|
||||
vector - 2021-04-29. And refuse an add-a-flag that reopens a hole: "fix the root cause rather
|
||||
than give people the foot gun."
|
||||
- **"Working as designed" is not a CVE.** A tool printing a secret it is built to print is
|
||||
misuse, not a vulnerability - push back. And "SHA proves integrity, not authenticity;
|
||||
authenticity comes from signing" - 2024-03-14.
|
||||
- **Reachability-aware scanning, never a merge gate.** Prefer `govulncheck` (call-graph aware)
|
||||
and run vuln scans as a scheduled job, never a PR gate that blocks an unrelated typo fix -
|
||||
2023-05-04. Never trust client-asserted identity or forward private credentials (the Tiller
|
||||
sig-auth lesson) - 2017-11-16.
|
||||
|
||||
### The SDK is a product
|
||||
- **Act like a grown-up program, not a CLI.** Long-running consumers (Flux, Argo, operators)
|
||||
broke the one-shot assumption; the SDK must manage its own resources, close connections, and
|
||||
stop goroutines on context-cancel - 2025-08-28, 2021-07-29.
|
||||
- **`internal/` by default; the public surface is a curated one-way door.** "if you make
|
||||
something public and that was a mistake, you're stuck" - and keeping an experiment in
|
||||
`internal/` is exactly what lets it make breaking changes safely before GA - 2025-07-24.
|
||||
- **Read env/config only in the CLI and pass it into the SDK** - never read the environment
|
||||
inside a package - Farina, 2022-06-09. Don't hard-code the filesystem: expose an interface
|
||||
so a GitOps controller can back the cache with object storage.
|
||||
|
||||
### Governance and process
|
||||
- **Skin in the game.** Org maintainers come from code maintainers - no detached managers or
|
||||
executives on top - Farina, 2018-07-19. Vendor-neutral: no auto-merge/trust privilege wired
|
||||
to one company; Apache-2 license + copyright ownership is the hard gate for adopting a
|
||||
project into the org.
|
||||
- **Many small HIPs over a monolithic design doc.** Helm 3's single doc read as "howl's moving
|
||||
castle instead of the cinderella castle"; HIPs are modeled on Python's PEP process and stay
|
||||
"green" (living), and route out-of-scope PRs into a HIP but then actually move it - Butcher,
|
||||
2021-04-22.
|
||||
- **Design the "why"/UX first, and evidence it.** A behavior-change HIP should "look at other
|
||||
package managers... not just say this makes sense to us" - Farina, 2021-08-12.
|
||||
- **Spec-first when code, tests, and docs disagree.** For a chronically buggy subsystem (values
|
||||
coalescing) none of the three is authoritative - write down intended behavior as an
|
||||
informational HIP, then code to it - 2024-02-01, 2026-05-07.
|
||||
- **Ship it and let the world test it.** "a lot of people... take it for a spin, poke holes in
|
||||
it - that's when you get a lot of testing" - Farina, 2025-10-09.
|
||||
- **Lower the barrier, don't raise it.** DCO over CLA; don't auto-close contributor PRs ("less
|
||||
hostile, do it by hand"); "one false step here can be the end of the project." Bots get no
|
||||
write access (own fork + PRs only); a milestone signals commitment, so track uncommitted or
|
||||
experimental work with a label instead - 2026-01-08.
|
||||
- **Best practices are descriptive** - "we build best practices around what we see people
|
||||
doing" - 2018-09-04. Test Helm's *usage* of a dependency, not the dependency itself.
|
||||
- **Reach the silent ~99%.** Most users are never in the community; blog/Twitter do not reach
|
||||
them, so deprecations need non-intrusive in-tool signalling - Farina, 2020-11-05.
|
||||
|
||||
### AI-era contributions
|
||||
- **The problem is the slop, not the tool.** "it's not just about it being generated by AI...
|
||||
it's the AI slop"; an "I used AI" checkbox solves nothing - Farina, 2026-06-11.
|
||||
- **AI is allowed; a human must understand and own it, and must not be listed as co-author.**
|
||||
"folks are allowed to use AI-generated code just as they were allowed to copy-paste from
|
||||
Stack Overflow, but should not list the agent as a co-contributor" - 2026-04-30.
|
||||
- **Contribution exists to mentor people - "you don't do that with AI"** - Farina, 2026-06-11.
|
||||
Require an issue before a PR (the hurdle filters slop; an issue is reason-about-able). Review
|
||||
is shifting from mechanics to scope: "does this actually belong here or not?"
|
||||
|
||||
### Consistency and UX
|
||||
- **Do not mirror Kubernetes UX - aim to exceed it.** "Kubernetes gets so much crap for poor
|
||||
UX... the goal has been to provide a better user experience... it shouldn't be the gold
|
||||
standard" - Farina, 2025-01-09, 2025-02-06.
|
||||
- **Output-stability tiers.** Adding fields to JSON/YAML output is safe; append new table
|
||||
columns to the END of the row; assume users parse by column number even though they
|
||||
shouldn't - Butcher, 2020-07-30. stdout is output, stderr is diagnostics - but re-changing it
|
||||
re-breaks users (Windows treats stderr as an error).
|
||||
|
||||
---
|
||||
|
||||
|
||||
## Sources
|
||||
|
||||
Grouped; all fetched during research. Handles: `mattfarina` Farina, `technosophos` Butcher,
|
||||
`bacongobbler` Fisher, `marckhouzam` Khouzam, `jdolitsky` Dolitsky, `thomastaylor312`
|
||||
Thomas, `hickeyma` Hickey, `adamreese` Reese, `scottrigby` Rigby, `gjenkins8` Jenkins,
|
||||
`sabre1041` Block, `banjoh` Mungai, `TerryHowe` Howe, `joejulian` Julian.
|
||||
|
||||
- **Developer Call recordings:** `@Helmpack` YouTube, "Helm Community Meetings" playlist
|
||||
(`youtube.com/playlist?list=PLVt9l4b66d5EY5Xs9OVJgvO5ss9WzrSY0`); canonical pointer in
|
||||
`helm/community/communication.md`. Transcribed via yt-dlp; cited by meeting date. Deep
|
||||
dives: `Helm Developer Call 20241220 - Helm 4 discussions Pt.1/Pt.2`.
|
||||
- **Matt Farina** (weighted heaviest): codeengineered.com archive; GitHub (helm/helm #5871,
|
||||
#6184, #8332, #8453, #9791, #9903, #10026, #10077, #10537, #12653; helm/community #138,
|
||||
#175, #301, #371, #379, #394); helm.sh/blog Helm 4 posts; HIP-0007, HIP-0012 (co),
|
||||
HIP-0020; developer calls; talks below.
|
||||
- **HIPs (all 27):** notably 0001 process, 0004 backward compatibility, 0006 OCI, 0007
|
||||
maintainer groups, 0011 CRDs, 0012 Helm 4 process, 0015 image/BOM annotation, 0017 OCI
|
||||
media types, 0020 Charts v3, 0021 logging, 0022 wait/kstatus, 0023 server-side apply,
|
||||
0025 resource sequencing, 0026 Wasm plugins, 0029 render-time release history. Gaps: 0013, 0028.
|
||||
- **Maintainer GitHub comment histories:** Butcher/Fisher (helm/helm #1193, #1413, #1883,
|
||||
#2243, #2492, #3141, #3805, #6243, #7584, #8137); Khouzam/Dolitsky (#3557, #5242, #7345,
|
||||
#7862, #10312, #10553); Rigby (#6901, #10553, #11736, #12460, #12879, #30873, #31167,
|
||||
#31176, #31340, #31748; helm/community #235, #388); Mungai (#30697, #31250, #31589,
|
||||
#31574, #13447; community #372); Howe (#12173, #12812, #13185, #13382, #13443, #30600,
|
||||
#30993, #30917). Sirchia and Julian comment histories UNMINED (see Gaps).
|
||||
- **Roster:** `helm/community/maintainer-groups.yaml`, `MAINTAINERS.md`, `SECURITY.md`,
|
||||
per-repo `OWNERS` (`helm/helm`, `helm-www`, `chartmuseum`, `helm-mapkubeapis`), HIP-0007.
|
||||
- **Docs & distribution:** helm.sh/docs (topics/charts, chart_best_practices/values,
|
||||
subcharts_and_globals, version_skew, provenance, library_charts, faq/changes_since_helm2);
|
||||
HIP-0006, distributed-search archive, helm/charts README, storing-charts-in-oci blog.
|
||||
- **Talks (transcripts):** QCon "Helm: Past, Present, Future" (2020, infoq.com/presentations/helm-4);
|
||||
KubeCon NA 2019 "An Introduction to Helm" (Farina/Dolitsky) and "Helm 3 Deep Dive"
|
||||
(Thomas/Hickey); NA 2018 and EU 2019 "Deep Dive: Helm"; NA 2022 "Learn About Helm And Its
|
||||
Ecosystem"; NA 2025 "Introducing Helm 4" (Farina/Sirchia). Talk quotes are ASR without
|
||||
timestamps unless from the InfoQ text transcript.
|
||||
- **Podcasts:** SE Radio 509, GCP 50, Kubernetes Podcast 102/168.
|
||||
|
||||
|
||||
## Honest gaps (do not paper over)
|
||||
|
||||
- **The full Developer Call archive (377 of 380 videos) is now transcribed and mined**
|
||||
(see Field notes), but captions are **ASR**: wording is approximate and most speakers are
|
||||
unlabeled (attributed only where the transcript self-identifies, so many strong statements
|
||||
are "unattributed"). Verify a quote against the video before citing it as verbatim. The
|
||||
post-2021 running-notes Google Doc remains unreachable.
|
||||
- **Conference-talk quotes have no per-line timestamps** (timed YouTube endpoints were
|
||||
token-walled); they carry Ctrl-F "locate-by" anchors instead.
|
||||
- **`Learning Helm`** (O'Reilly; Butcher, Farina, Dolitsky) is the deepest single source
|
||||
and was not web-accessible.
|
||||
- Some blog/chart lines are close paraphrase from fetch summaries; verify before quoting as
|
||||
verbatim. Podcast and developer-call quotes are auto-transcripts.
|
||||
|
||||
|
||||
## Known gaps and do-not-overclaim
|
||||
|
||||
- **Julian's oldest 2019-2020 comments only partially sampled** (2020-2026 saturated);
|
||||
Sirchia and Julian are otherwise mined. HIP-0025's "Joe" is **Joe Beck (`joebeck5705`)**,
|
||||
not Joe Julian - do not attribute HIP-0025 to Julian. Julian's CRD *conversion-webhook* and
|
||||
lifecycle reasoning appears in both the 2021 dev-call notes and helm/community#379.
|
||||
- **Full Developer Call archive mined** (377/380 videos, see Field notes), but ASR wording is
|
||||
approximate and most speakers unlabeled (attributed only where the transcript
|
||||
self-identifies). Post-2021 running-notes Google Doc unreachable.
|
||||
- **Talk quotes lack per-line timestamps** (timed YouTube endpoints token-walled); they have
|
||||
Ctrl-F locate-by anchors in the working files, not shown here.
|
||||
- **`Learning Helm`** book text not accessible. **`Learning Helm`** and PR inline-review
|
||||
threads remain the two richest unmined veins.
|
||||
- Tiller-removal quotes are Fisher's/Butcher's, not Farina's. HIP-0004 was authored by
|
||||
Khouzam and Butcher. No enumerated non-goals doc exists; no formal "Why Go templates?"
|
||||
FAQ - present the engine as defended-and-retained (v4 reconsidered then kept it, adding
|
||||
YAMLScript as a mixable in-chart option), not permanently closed. Attribute precisely.
|
||||
|
||||
Loading…
Reference in new issue