Skip to content

feat(template): Complete the Artifact Hub metadata in Chart.yaml - #655

Open
lfrancke wants to merge 1 commit into
mainfrom
push-rmuzrtuosnxl
Open

lfrancke wants to merge 1 commit into
mainfrom
push-rmuzrtuosnxl

Conversation

@lfrancke

@lfrancke lfrancke commented Oct 3, 2026 •

Copy link
Copy Markdown
Member

Adds more metadata for Artifact Hub.
See inline for what and why.

Rendered for hive:

maintainers:
  - name: Stackable GmbH
    email: info@stackable.tech
    url: https://www.stackable.tech

# Consumed by Artifact Hub, see https://artifacthub.io/docs/topics/annotations/helm/
annotations:
  # The chart package ships no LICENSE file, so Artifact Hub cannot detect this itself.
  artifacthub.io/license: OSL-3.0
  # Artifact Hub currently infers this from "operator" in the chart name but I don't want to rely on the heuristics.
  artifacthub.io/operator: "true"
  # Unset means Artifact Hub predicts a category from the keywords, which it gets wrong a lot for our stuff
  artifacthub.io/category: database
  artifacthub.io/alternativeName: hive
  # A link named "support" is rendered highlighted by Artifact Hub. Keep it lowercase.
  artifacthub.io/links: |
    - name: Documentation
      url: https://docs.stackable.tech/home/stable/hive/
    - name: Stackable Hub
      url: https://hub.stackable.tech/components/hive
    - name: support
      url: https://github.com/stackabletech/hive-operator/issues
    - name: Operator image on quay.io
      url: https://quay.io/repository/stackable/sdp/hive-operator

Artifact Hub drops any maintainer entry without an email
(internal/tracker/source/helm/helm.go), so no maintainer is shown for any of our
charts today. Adding the address is what makes the entry appear.

Without artifacthub.io/category, Artifact Hub predicts one from the keywords with
a small model trained on a hand-labelled keyword corpus. For data infrastructure
it regularly gets that wrong: Redash is classified as security, NiFi as
monitoring-logging, and OpenSearch lands on four different categories across five
charts. superset, zookeeper and commons use skip-prediction, which is the
documented way to say that none of the eight values fits.

Artifact Hub ranks exact name matches highest, so a search for "hive" ranks
hive-operator poorly. artifacthub.io/alternativeName is weighted like the name.
It has to be a substring of the chart name or the whole chart version is
rejected (internal/pkg/manager.go). The value is configured per operator rather
than derived from product_string, which would alias commons, listener and secret
to their own chart name and give spark-k8s-operator "spark-k8s" instead of the
"spark" people search for.

artifacthub.io/operator is redundant while Artifact Hub infers it from "operator"
appearing in the chart name, and is declared so the listing does not depend on
that inference.

The Stackable Hub link uses the same slug and the same has_product gate as
NOTES.txt, so commons, listener and secret, which have no Hub component, get none.

The listing shows only the oci.stackable.tech image, because that is the registry
the indexed chart resolves to. The quay.io link points at the mirror of the same
image.
@lfrancke
lfrancke marked this pull request as ready for review October 3, 2026 21:27
@lfrancke lfrancke self-assigned this Oct 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Development: Waiting for Review

Development

Successfully merging this pull request may close these issues.

1 participant