-
+
{{- .title | markdownify -}}
@@ -99,6 +107,11 @@
{{ if $deprecated -}}
deprecated
{{ end -}}
+ {{ if .cncfProjectLevel -}}
+
+ {{ .cncfProjectLevel }}
+
+ {{ end -}}
@@ -183,9 +196,9 @@
Quick Install
- {{ with .urls.homepage -}}
- {{ $homepageHref := printf "href=%q" . | safeHTMLAttr -}}
-
Homepage
+ {{ with .urls.website -}}
+ {{ $websiteHref := printf "href=%q" . | safeHTMLAttr -}}
+
Website
{{- end -}}
{{ with .urls.docs -}}
{{ $docsHref := printf "href=%q" . | safeHTMLAttr -}}
@@ -197,6 +210,7 @@
Quick Install
{{- end -}}
{{ with .urls.repo -}}
{{ $icon := cond ( hasPrefix . "https://github.com/" ) "fa-brands fa-github" "fab fa-git-alt" -}}
+ {{ $repoHref := printf "href=%q" . | safeHTMLAttr -}}
Repository
{{- end -}}
{{ with .urls.demo -}}
diff --git a/layouts/shortcodes/docs/languages/exporters/prometheus-setup.md b/layouts/shortcodes/docs/languages/exporters/prometheus-setup.md
index 26ddaea71d8a..5c0ae214afdc 100644
--- a/layouts/shortcodes/docs/languages/exporters/prometheus-setup.md
+++ b/layouts/shortcodes/docs/languages/exporters/prometheus-setup.md
@@ -2,10 +2,9 @@
To send your metric data to [Prometheus](https://prometheus.io/), you can either
[enable Prometheus' OTLP Receiver](https://prometheus.io/docs/prometheus/latest/feature_flags/#otlp-receiver)
-and use the [OTLP exporter](#otlp) or you can use the
-[`PrometheusHttpServer`](https://javadoc.io/doc/io.opentelemetry/opentelemetry-exporter-prometheus/latest/io/opentelemetry/exporter/prometheus/PrometheusHttpServer.html),
-a `MetricReader`, that starts an HTTP server that will collect metrics and
-serialize to Prometheus text format on request.
+and use the [OTLP exporter](#otlp) or you can use the Prometheus exporter, a
+`MetricReader` that starts an HTTP server that collects metrics and serialize to
+Prometheus text format on request.
### Backend Setup {#prometheus-setup}
diff --git a/layouts/shortcodes/docs/languages/libraries-intro.md b/layouts/shortcodes/docs/languages/libraries-intro.md
index b31bc3107d8f..00a40302dbe3 100644
--- a/layouts/shortcodes/docs/languages/libraries-intro.md
+++ b/layouts/shortcodes/docs/languages/libraries-intro.md
@@ -1,7 +1,12 @@
-{{ $lang := .Get 0 -}}
{{ $howMany := .Get 1 | default 10 -}}
-{{ $integrations := where (where $.Site.Data.ecosystem.integrations ".components" "intersect" (slice $lang)) ".native" "eq" true -}}
+{{ $langIndex := .Get 0 }}
+{{ $lang := index $.Site.Data.instrumentation $langIndex -}}
+{{ $integrations := where (slice ) ".language" $langIndex -}}
+
+{{ $integrations := slice }} {{ range $entry := $.Site.Data.registry }}
+{{ if and (and (eq $entry.language $langIndex) (eq $entry.isNative true)) (eq $entry.registryType "instrumentation") }}
+{{ $integrations = $integrations | append $entry }} {{ end }} {{ end }}
When you develop an app, you might use third-party libraries and frameworks to
accelerate your work. If you then instrument your app using OpenTelemetry, you
@@ -29,20 +34,20 @@ Go to the documentation for that library to learn more.
{{ range first $howMany (sort $integrations "name") -}}
-- [{{ .name }}]({{ .docsUrl }})
+- [{{ .title }}]({{ .urls.docs }})
{{- end }}
{{ if eq (len $integrations) 0 -}}
Help wanted!
-As of today, we don't know about any {{ $lang }} library that has OpenTelemetry
+As of today, we don't know about any {{ $lang.name }} library that has OpenTelemetry
natively integrated. If you know about such a library,
let us know.
{{ else -}}
-If you know a {{ $lang }} library that has OpenTelemetry
+If you know a {{ $lang.name }} library that has OpenTelemetry
natively integrated,
let us know.
diff --git a/layouts/shortcodes/ecosystem/integrations-table.md b/layouts/shortcodes/ecosystem/integrations-table.md
index 8da425d350e8..9b63ad695d0b 100644
--- a/layouts/shortcodes/ecosystem/integrations-table.md
+++ b/layouts/shortcodes/ecosystem/integrations-table.md
@@ -1,10 +1,20 @@
-
-{{ $data := sort (sort $.Site.Data.ecosystem.integrations "name") "oss" "desc" -}}
-Name[^1] | OSS | Components | Learn more
+
+{{ $integrations := slice -}}
+{{ range $entry := $.Site.Data.registry -}}
+ {{ if or (and (eq ($.Get 0) "native libraries") (eq $entry.isNative true) (eq $entry.registryType "instrumentation")) (and (eq ($.Get 0) "application integrations") (eq $entry.registryType "application integration")) -}}
+ {{ $entry = merge $entry (dict "oss" (ne .license "Commercial")) -}}
+ {{ $integrations = $integrations | append $entry -}}
+ {{ end -}}
+{{ end -}}
+
+{{ $languages := merge $.Site.Data.instrumentation (dict "collector" (dict "name" "collector") "lua" (dict "name" "Lua")) -}}
+
+Name[^1] | OSS | Component | Learn more
------------ | --- | ---------- | ----------
-{{- range $data }}
-{{ $cncfTag := cond (not (eq .cncf false)) (printf "
" (humanize .cncf) (humanize .cncf)) "" -}}
-[{{ .name }}]({{ .url }}){{ $cncfTag }} | {{- cond .oss "Yes" "No" }} | {{ delimit (sort .components) ", " }} | [{{ replace .docsUrl "https://" "" }}]({{ .docsUrl }})
+{{- range sort (sort $integrations ".title") ".oss" "desc" }}
+{{ $lang := cond (eq .language "collector") (dict "name" "Collector") (index $.Site.Data.instrumentation .language) -}}
+{{ $cncfTag := cond (isset . "cncfProjectLevel") (printf "
" (humanize .cncfProjectLevel) (humanize .cncfProjectLevel)) "" -}}
+[{{ .title }}]({{ .urls.website }}){{ $cncfTag }} | {{- cond (eq .license "Commercial") "No" "Yes" }} | {{ $lang.name }} | [{{ replace .urls.docs "https://" "" }}]({{ .urls.docs }})
{{- end }}
[^1]: Listed alphabetically
diff --git a/layouts/shortcodes/ecosystem/registry/search-form.html b/layouts/shortcodes/ecosystem/registry/search-form.html
index f751e7c24753..4e2fc00028c1 100644
--- a/layouts/shortcodes/ecosystem/registry/search-form.html
+++ b/layouts/shortcodes/ecosystem/registry/search-form.html
@@ -106,5 +106,5 @@
-
+
{{ partial "script.html" (dict "src" "js/registrySearch.js") -}}
diff --git a/package.json b/package.json
index 52b7e46e5c30..5fc18e6f4a12 100644
--- a/package.json
+++ b/package.json
@@ -23,9 +23,12 @@
"_filename-error": "echo 'ERROR: the following files violate naming conventions; fix using: `npm run fix:filenames`'; echo; npm run -s _ls-bad-filenames; exit 1",
"_get:no": "echo SKIPPING get operation",
"_get:submodule:non-lang": "npm run _get:submodule -- content-modules/opentelemetry-specification themes/docsy",
- "_get:submodule": "set -x && git submodule update --init ${DEPTH:- --depth 1}",
+ "_get:submodule": "set -x && git submodule update --init ${DEPTH:- --depth 999}",
"_hugo": "hugo --cleanDestinationDir",
+ "_install:dict": "npm install -D $(npm run -s _list:dict)",
+ "_install:netlify-cli": "npm list netlify-cli || npm install -O netlify-cli",
"_list:check:*": "npm run --loglevel=warn | grep -Ee '^\\s*check:[^:]+$'",
+ "_list:dict": "grep '^\\s*\"@cspell' package.json | awk -F: '{print $1}' | tr -d '\"'",
"_list:fix:*": "npm run --loglevel=warn | grep -Ee '^\\s*fix:[^:]+$' | grep -v 'fix:all'",
"_ls-bad-filenames": "find assets content static -name '*_*' ! -name '[_.]*'",
"_prebuild": "npm run seq -- get:submodule cp:spec",
@@ -47,7 +50,7 @@
"check:links": "npm run _check:links",
"check:markdown": "scripts/check-markdown-wrapper.sh",
"check:registry": "npm run _check:registry -- ",
- "check:spelling": "npx cspell --no-progress -c .cspell.yml content/en data 'layouts/**/*.md'",
+ "check:spelling": "npx cspell --no-progress -c .cspell.yml content data 'layouts/**/*.md'",
"check:text": "npm run _check:text -- ",
"check": "npm run seq -- $(npm run -s _list:check:*)",
"clean": "make clean",
@@ -58,7 +61,7 @@
"diff:check": "npm run _diff:check || (echo; echo 'WARNING: the files above have not been committed'; echo)",
"diff:fail": "npm run _diff:check || (echo; echo 'ERROR: the files above have changed. Locally rerun `npm run test-and-fix` and commit changes'; echo; exit 1)",
"fix:all": "npm run seq -- $(npm -s run _list:fix:*)",
- "fix:dict": "find content layouts -name \"*.md\" -print0 | xargs -0 scripts/normalize-cspell-front-matter.pl",
+ "fix:dict": "find content/en layouts -name \"*.md\" -print0 | xargs -0 scripts/normalize-cspell-front-matter.pl",
"fix:filenames": "npm run _rename-to-kebab-case",
"fix:format": "npm run format",
"fix:i18n:all": "scripts/check-i18n.sh -a -c HEAD",
@@ -72,7 +75,6 @@
"fix": "npm run fix:all",
"format": "npm run _check:format -- --write && npm run _check:format:ja+zh -- --write",
"get:submodule": "npm run _get:${GET:-submodule}",
- "install:netlify-cli": "npm list netlify-cli || npm install netlify-cli",
"log:check:links": "npm run check:links | tee tmp/build-log.txt",
"make:public": "make public ls-public",
"netlify-build:preview": "npm run seq -- build:preview diff:check",
@@ -90,7 +92,7 @@
"prenetlify-build:production": "echo 'IgnoreTagAttribute: rel' >> .htmltest.yml",
"prepare": "npm run seq -- get:submodule _prepare:docsy",
"preserve:hugo": "npm run _prebuild",
- "preserve:netlify": "npm run seq -- _prebuild install:netlify-cli",
+ "preserve:netlify": "npm run seq -- _prebuild _install:netlify-cli",
"schemas:update": "npm run update:submodule content-modules/opentelemetry-specification",
"seq": "bash -c 'for cmd in \"$@\"; do npm run $cmd || exit 1; done' - ",
"serve:hugo": "npm run _serve:hugo -- --renderToMemory",
@@ -106,17 +108,19 @@
"update:other-pkg": "npm install --save-dev gulp@latest",
"update:pkgs": "npx npm-check-updates -u",
"update:submodule:lang": "npm run seq -- update:submodule _get:submodule:non-lang",
- "update:submodule": "set -x && git submodule update --remote ${DEPTH:- --depth 1}"
+ "update:submodule": "set -x && git submodule update --remote ${DEPTH:- --depth 999}"
},
"devDependencies": {
+ "@cspell/dict-es-es": "^3.0.0",
+ "@cspell/dict-pt-br": "^2.3.0",
"ajv": "^8.17.1",
"ajv-errors": "^3.0.0",
"ajv-formats": "^3.0.1",
"autoprefixer": "^10.4.20",
"cspell": "^8.13.1",
"gulp": "^5.0.0",
- "js-yaml": "^4.1.0",
"hugo-extended": "0.131.0",
+ "js-yaml": "^4.1.0",
"markdown-link-check": "^3.12.2",
"markdownlint": "^0.34.0",
"postcss-cli": "^11.0.0",
diff --git a/scripts/content-modules/adjust-pages.pl b/scripts/content-modules/adjust-pages.pl
index e59889c9d256..2b5ccb521876 100755
--- a/scripts/content-modules/adjust-pages.pl
+++ b/scripts/content-modules/adjust-pages.pl
@@ -18,7 +18,7 @@
my $semConvRef = "$otelSpecRepoUrl/blob/main/semantic_conventions/README.md";
my $specBasePath = '/docs/specs';
my %versions = qw(
- spec: 1.35.0
+ spec: 1.36.0
otlp: 1.3.2
semconv: 1.27.0
);
diff --git a/scripts/normalize-cspell-front-matter.pl b/scripts/normalize-cspell-front-matter.pl
index 4f13dce1d120..929f3e3b181b 100755
--- a/scripts/normalize-cspell-front-matter.pl
+++ b/scripts/normalize-cspell-front-matter.pl
@@ -8,7 +8,7 @@
my $lineLenLimit = 79;
my $last_file = '';
my $last_line = '';
-my %dictionary = getSiteWideDictWords('.cspell.yml', '.textlintrc.yml');
+my %dictionary = getSiteWideDictWords('.cspell/en-words.txt', '.textlintrc.yml');
while (<>) {
if (/^\s*(spelling: |-\s*)?cSpell:ignore:?\s*(.*)$/
@@ -43,15 +43,16 @@ sub getSiteWideDictWords {
my $dictionary_file = shift;
my $textlintrc_file = shift;
- my %dictionary = readYmlListOfWords('words', $dictionary_file);
- my %textlintDictionary = readYmlListOfWords('terms', $textlintrc_file);
+ my %dictionary = readYmOrPlainlListOfWords('', $dictionary_file);
+ my %textlintDictionary = readYmOrPlainlListOfWords('terms', $textlintrc_file);
# Merge dictionaries
@dictionary{keys %textlintDictionary} = values %textlintDictionary;
return %dictionary;
}
-sub readYmlListOfWords {
+sub readYmOrPlainlListOfWords {
+ # Read plain list of words if $wordsFieldName is empty
my $wordsFieldName = shift;
my $file_path = shift;
my $fh = FileHandle->new($file_path, "r") or die "Could not open file '$file_path': $!";
@@ -60,18 +61,24 @@ sub readYmlListOfWords {
my %dictionary;
my $indentation = '';
- my $in_terms = 0;
+ my $in_terms = $wordsFieldName eq '' ? 1 : 0;
foreach my $line (@lines) {
chomp $line;
- if ($line =~ /^(\s*)$wordsFieldName:/) {
- $indentation = $1 || '';
+ next if $line =~ /^\s*#|^\s*$/;
+ # print "> $line\n" if $wordsFieldName;
+
+ if ($wordsFieldName && $line =~ /^(\s*)$wordsFieldName:/) {
+ $indentation = "$1 - " || '';
$in_terms = 1;
- # print STDOUT "Found terms!";
- } elsif ($line =~ /^$indentation - (\w[^\s]*)$/ && $in_terms) {
+ # print "> FOUND $wordsFieldName keyword\n"
+ } elsif ($line =~ /^$indentation(\w[^\s]*)$/ && $in_terms) {
my $term = $1;
$dictionary{$term} = 1 if $term;
- } elsif ($line !~ /^ / && $in_terms) {
+ } elsif ($wordsFieldName && $line !~ /^ / && $in_terms) {
$in_terms = 0;
+ # print "FINISHE word list\n" if $in_terms;
+ } else {
+ # print "OOPS LINE DID NOT MATCH\n" if $in_terms;
}
}
diff --git a/static/img/cncf-icon-white.svg b/static/img/cncf-icon-white.svg
new file mode 100644
index 000000000000..77b4fda9ea9e
--- /dev/null
+++ b/static/img/cncf-icon-white.svg
@@ -0,0 +1 @@
+