Conversation
Signed-off-by: tym83 <6355522@gmail.com>
✅ Deploy Preview for cozystack ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
📝 WalkthroughWalkthroughA new open-source software component licensing system was added to the website, including Hugo shortcodes for rendering card-based component catalogs, responsive SCSS styling with dark mode support, and complete license documentation pages for both the next and v1.3 versions listing Cozystack-shipped and upstream components grouped by platform role. ChangesOSS Licenses Display System
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Tip 💬 Introducing Slack Agent: The best way for teams to turn conversations into code.Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.
Built for teams:
One agent for your entire SDLC. Right inside Slack. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Code Review
This pull request introduces a comprehensive license reference page for Cozystack by adding a shared markdown file that lists licenses for core, system, and application packages, along with managed workload runtimes. This content is integrated into the documentation for both the current and upcoming versions. Feedback was provided to ensure consistency in the monitoring agents entry by including source links for all listed components rather than just one.
| | `system/mongodb-operator` | Percona Operator for MongoDB Helm chart | Apache-2.0 | [source](https://github.com/percona/percona-server-mongodb-operator/blob/main/LICENSE) | | ||
| | `system/mongodb-rd` | Cozystack MongoDB resource definition | Apache-2.0 | [source](https://github.com/cozystack/cozystack/tree/main/packages/system/mongodb-rd) | | ||
| | `system/monitoring` | Cozystack monitoring package | Apache-2.0 | [source](https://github.com/cozystack/cozystack/tree/main/packages/system/monitoring) | | ||
| | `system/monitoring-agents` | Fluent Bit; kube-state-metrics; node-exporter | Apache-2.0 | [source](https://github.com/fluent/fluent-bit/blob/master/LICENSE) | |
There was a problem hiding this comment.
The system/monitoring-agents entry lists three components (Fluent Bit, kube-state-metrics, and node-exporter) but only provides a source link for Fluent Bit. For completeness and consistency with other multi-component entries in this table (such as system/fluxcd or HTTP Cache), source links for all listed components should be included.
| | `system/monitoring-agents` | Fluent Bit; kube-state-metrics; node-exporter | Apache-2.0 | [source](https://github.com/fluent/fluent-bit/blob/master/LICENSE) | | |
| | system/monitoring-agents | Fluent Bit; kube-state-metrics; node-exporter | Apache-2.0 | [fluent-bit](https://github.com/fluent/fluent-bit/blob/master/LICENSE), [kube-state-metrics](https://github.com/kubernetes/kube-state-metrics/blob/main/LICENSE), [node-exporter](https://github.com/prometheus/node_exporter/blob/master/LICENSE) | |
Signed-off-by: tym83 <6355522@gmail.com>
myasnikovdaniil
left a comment
There was a problem hiding this comment.
Thanks for putting this together — overall the data looks accurate and the per-version pages are clean. A few changes before this can land:
1. Scope: keep only next/ and v1.3/
Please drop the new files for v0/, v1.0/, v1.1/, and v1.2/.
The package list in this PR reflects the current (v1.3-era) set. v0 in particular is a different product snapshot — its applications/ tree had ferretdb and mysql, and didn't have foundationdb, harbor, mariadb, openbao, or qdrant. Backfilling the current list under v0/ would document components that release didn't ship.
For v1.0–v1.2 the application set matches v1.3, but the pinned upstream versions and operators differ across minor releases, and licenses can change between upstream versions (e.g. Redis, MongoDB-family). A license reference should be a per-release snapshot, not a single rolling document retro-applied to frozen versions.
The convention in this repo is that older vX.Y/ directories are frozen as-shipped — we shouldn't retrofit current state into them. If we want license data for older releases, that's worth a separate, version-accurate effort.
2. Include placement
The shared file currently lives at content/en/docs/_include/licenses.md and is transcluded from each per-version page. Two issues with this layout, even after scoping down to next/ + v1.3/:
- It's a new pattern. Existing
{{< include >}}usages all live inside per-version_include/directories (e.g.docs/v1.2/install/_include/hardware-config-tabs.md,docs/v1.2/operations/services/_include/monitoring-overview.md). - Once v1.4 is released and
v1.3/is frozen, edits to the shared file would silently mutate the v1.3 snapshot.
Two reasonable options:
- (a) Inline the body into each version's
licenses.md. Two copies, no shared include — matches how independent versions are supposed to work. Simplest. - (b) Per-version include:
docs/next/operations/configuration/_include/licenses.mdanddocs/v1.3/operations/configuration/_include/licenses.md. Matches the existing_include/convention.
I'd lean toward (a) — there's only one consumer per version, so the indirection doesn't pay off. Either is fine.
3. Generator script — follow-up
This file is hand-curated, but the source of truth lives upstream in cozystack/cozystack (packages/{core,system,apps,extra}/*/Chart.yaml and the components they vendor). To keep the page from drifting at each release, can we add a generator alongside the existing hack/update_apps.sh / hack/download_openapi.sh?
Rough shape:
hack/update_licenses.shdriven bymake update-licenses(and rolled intoupdate-all)- enumerates packages under
packages/{core,system,apps,extra}/in the upstream repo at the requested ref - reads license metadata — either a chart annotation (e.g.
cozystack.io/license,cozystack.io/upstream-license,cozystack.io/upstream-source) or a small per-package metadata file maintained upstream - emits the table into
content/en/docs/<DOC_VERSION>/operations/configuration/licenses.mdusing the sameRELEASE_TAG→DOC_VERSIONrouting asupdate-apps
Doesn't have to block this PR — happy to land hand-maintained content for v1.3 + next now and track the generator separately. But it shouldn't be the steady state; without it this page will drift silently.
Nit
system/linstor-guirow links to the repo root rather than aLICENSEfile — please update for consistency with the surrounding rows.
Aggregate sub-components into top-level entries (one KubeVirt instead of six packages, one LINSTOR/Piraeus instead of four, etc.) and present them as a card grid inspired by the Deckhouse OSS-info layout. Address @myasnikovdaniil review on #530: - drop license pages from v0/v1.0/v1.1/v1.2 (frozen per-release snapshots, current package list doesn't apply to those releases) - drop shared _include/licenses.md and inline content per version (matches existing per-version _include/ convention by avoiding it) - monitoring agents and LINSTOR sub-components now linked to the correct upstream LICENSE files Generator script tracked as a separate follow-up. Signed-off-by: tym83 <6355522@gmail.com>
|
Thanks for the detailed review, Daniil — addressed all three blocks and the nit. Plus took the opportunity to rework the page into a card-grid layout inspired by Deckhouse's OSS-info page, since the flat-table view didn't scale well across this many components. 1. Scope: only 2. Include placement ✅ 3. Generator script — tracked as a follow-up Nit (system/linstor-gui) ✅ While I was in there:
New shortcode pair Netlify deploy preview will rebuild once the push lands. |
Add 36 logos under static/img/logos/components/ — pulled from Simple Icons (CC0), CNCF Artwork, and upstream project repos. Components without an obvious upstream brand asset (Kamaji, LINSTOR, S3 Manager, OpenCost, Goldpinger, Stakater Reloader, HAMi, External Secrets Operator, Tinkerbell Smee, FoundationDB, HAProxy, IP2Location, Outline, Kube-OVN, Kilo) fall back to the initials badge from the shortcode — can be added incrementally without touching the shortcode API. Also extend oss-card to accept .svg, .png, .jpg, .webp so logos that only ship as raster files (multus, seaweedfs, telepresence, external-dns, metallb) render correctly. Signed-off-by: tym83 <6355522@gmail.com>
Add CNCF landscape hosted_logos for Kamaji, Kube-OVN, Kilo, LINSTOR, HAMi, External Secrets, Tinkerbell, OpenCost, FoundationDB, HAProxy. Cards for these components now render with their proper brand marks instead of the initials-badge fallback. Remaining text-fallback components (Goldpinger, S3 Manager, Stakater Reloader, Outline, IP2Location) have no widely-distributed brand asset upstream. Signed-off-by: tym83 <6355522@gmail.com>
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@assets/scss/_oss_info.scss`:
- Line 73: Replace the deprecated CSS declaration `word-break: break-word` in
assets/scss/_oss_info.scss with the modern equivalent by using `overflow-wrap:
break-word` (remove or replace the `word-break: break-word` line); locate the
occurrence of `word-break: break-word` and update it to use `overflow-wrap:
break-word` to preserve the intended word-wrapping behavior.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 04be0171-abb4-4f1d-a38c-1416b7248287
⛔ Files ignored due to path filters (46)
static/img/logos/components/cert-manager.svgis excluded by!**/*.svgstatic/img/logos/components/cilium.svgis excluded by!**/*.svgstatic/img/logos/components/clickhouse.svgis excluded by!**/*.svgstatic/img/logos/components/clusterapi.svgis excluded by!**/*.svgstatic/img/logos/components/coredns.svgis excluded by!**/*.svgstatic/img/logos/components/etcd.svgis excluded by!**/*.svgstatic/img/logos/components/external-secrets.svgis excluded by!**/*.svgstatic/img/logos/components/externaldns.pngis excluded by!**/*.pngstatic/img/logos/components/fluent-bit.svgis excluded by!**/*.svgstatic/img/logos/components/fluxcd.svgis excluded by!**/*.svgstatic/img/logos/components/foundationdb.svgis excluded by!**/*.svgstatic/img/logos/components/grafana.svgis excluded by!**/*.svgstatic/img/logos/components/hami.svgis excluded by!**/*.svgstatic/img/logos/components/haproxy.svgis excluded by!**/*.svgstatic/img/logos/components/harbor.svgis excluded by!**/*.svgstatic/img/logos/components/hetzner.svgis excluded by!**/*.svgstatic/img/logos/components/kafka.svgis excluded by!**/*.svgstatic/img/logos/components/kamaji.svgis excluded by!**/*.svgstatic/img/logos/components/keycloak.svgis excluded by!**/*.svgstatic/img/logos/components/kilo.svgis excluded by!**/*.svgstatic/img/logos/components/kubeovn.svgis excluded by!**/*.svgstatic/img/logos/components/kubernetes.svgis excluded by!**/*.svgstatic/img/logos/components/kubevirt.svgis excluded by!**/*.svgstatic/img/logos/components/linstor.svgis excluded by!**/*.svgstatic/img/logos/components/mariadb.svgis excluded by!**/*.svgstatic/img/logos/components/metallb.pngis excluded by!**/*.pngstatic/img/logos/components/mongodb.svgis excluded by!**/*.svgstatic/img/logos/components/multus.pngis excluded by!**/*.pngstatic/img/logos/components/nats.svgis excluded by!**/*.svgstatic/img/logos/components/nginx.svgis excluded by!**/*.svgstatic/img/logos/components/nvidia.svgis excluded by!**/*.svgstatic/img/logos/components/openbao.svgis excluded by!**/*.svgstatic/img/logos/components/opencost.svgis excluded by!**/*.svgstatic/img/logos/components/opensearch.svgis excluded by!**/*.svgstatic/img/logos/components/postgresql.svgis excluded by!**/*.svgstatic/img/logos/components/prometheus.svgis excluded by!**/*.svgstatic/img/logos/components/qdrant.svgis excluded by!**/*.svgstatic/img/logos/components/rabbitmq.svgis excluded by!**/*.svgstatic/img/logos/components/redis.svgis excluded by!**/*.svgstatic/img/logos/components/sap.svgis excluded by!**/*.svgstatic/img/logos/components/seaweedfs.pngis excluded by!**/*.pngstatic/img/logos/components/talos.svgis excluded by!**/*.svgstatic/img/logos/components/telepresence.pngis excluded by!**/*.pngstatic/img/logos/components/tinkerbell.svgis excluded by!**/*.svgstatic/img/logos/components/velero.svgis excluded by!**/*.svgstatic/img/logos/components/victoriametrics.svgis excluded by!**/*.svg
📒 Files selected for processing (6)
assets/scss/_oss_info.scssassets/scss/main.scsscontent/en/docs/next/operations/configuration/licenses.mdcontent/en/docs/v1.3/operations/configuration/licenses.mdlayouts/shortcodes/oss-card.htmllayouts/shortcodes/oss-cards.html
| line-height: 1.25; | ||
| color: inherit; | ||
| text-decoration: none; | ||
| word-break: break-word; |
There was a problem hiding this comment.
Replace deprecated word-break: break-word property.
The value break-word for word-break is deprecated. Use overflow-wrap: break-word instead, which provides the same behavior (breaks long words at arbitrary points to prevent overflow).
🔧 Proposed fix
color: inherit;
text-decoration: none;
- word-break: break-word;
+ overflow-wrap: break-word;📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| word-break: break-word; | |
| overflow-wrap: break-word; |
🧰 Tools
🪛 Stylelint (17.10.0)
[error] 73-73: Deprecated keyword "break-word" for property "word-break" (declaration-property-value-keyword-no-deprecated)
(declaration-property-value-keyword-no-deprecated)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@assets/scss/_oss_info.scss` at line 73, Replace the deprecated CSS
declaration `word-break: break-word` in assets/scss/_oss_info.scss with the
modern equivalent by using `overflow-wrap: break-word` (remove or replace the
`word-break: break-word` line); locate the occurrence of `word-break:
break-word` and update it to use `overflow-wrap: break-word` to preserve the
intended word-wrapping behavior.
Summary
Verification
Summary by CodeRabbit
New Features
Documentation