diff --git a/.github/workflows/content-deploy.yml b/.github/workflows/content-deploy.yml
index 6debd60c..a5224347 100644
--- a/.github/workflows/content-deploy.yml
+++ b/.github/workflows/content-deploy.yml
@@ -4,7 +4,9 @@ name: content-deploy
# Controls when the workflow will run
on:
-
+ # Triggers the workflow on push to production branch
+ push:
+ branches: [ production ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
diff --git a/.github/workflows/link-checker.yml b/.github/workflows/link-checker.yml
new file mode 100644
index 00000000..86270b81
--- /dev/null
+++ b/.github/workflows/link-checker.yml
@@ -0,0 +1,38 @@
+name: link-checker
+
+# Controls when the workflow will run
+on:
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# A workflow run is made up of one or more jobs that can run sequentially or in parallel
+jobs:
+ # This workflow contains a single job called "build"
+ check-external-links:
+ # The type of runner that the job will run on
+ runs-on: ubuntu-latest
+
+ # Steps represent a sequence of tasks that will be executed as part of the job
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ with:
+ submodules: true
+ fetch-depth: 0
+
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: 3.11.3
+
+ - name: Ignored URLs here
+ run: |
+ echo "These URLs are ignored. Please check them manually every so often to ensure their validity."
+ cat .linkcheckerrc
+
+
+ - name: Run linkchecker
+ run: |
+ pip install linkchecker
+ linkchecker --no-robots --no-warnings --config .linkcheckerrc --user-agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" --check-extern https://www.arm.com/developer-hub/ecosystem-dashboard/servers-and-cloud-computing
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 01d2c669..75710cf5 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -31,12 +31,13 @@ jobs:
hugo-version: '0.98.0'
extended: true
- # Runs pre-processing python scripts to ensure (1) date accuracy, and (2) category descriptions are always up-to-date
+ # Runs pre-processing python scripts to ensure (1) date accuracy, and (2) category descriptions are always up-to-date, and (3) the packages have valid categories
- name: Python pre-processing
run: |
python --version
python ./build_steps/update_category_mappings.py
python ./build_steps/update_recently_added_json.py
+ python ./build_steps/validate_package_catagories.py
# Builds arm-software-developer repo
- name: Build
diff --git a/.linkcheckerrc b/.linkcheckerrc
new file mode 100644
index 00000000..eb8a43af
--- /dev/null
+++ b/.linkcheckerrc
@@ -0,0 +1,8 @@
+[filtering]
+ignore=
+ github.com
+ # Explicitly allowed URLs that cause linkchecker to fail, but do work when manually checked.
+ https://releases.crossplane.io/stable/
+ https://demoa.heimdalldata.com/docs/basics/install.html
+ https://docs.aviatrix.com/documentation/latest/release-notes/copilot-image-release-notes/copilot-image-release-notes.html#copilot-image-version-2-0-4-06-july-2022-aws-arm
+ https://docs.aviatrix.com/documentation/latest/index.html
diff --git a/README.md b/README.md
index a3bbfee6..d7c293a7 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@ The Software Ecosystem Dashboard for Arm is available at https://www.arm.com/dev
This repository is maintained by Arm and contains the source files for the Arm Software Ecosystem Dashboard, providing information on software packages that work on Arm.
This data is sourced from Arm and third parties. While Arm uses reasonable efforts to keep this dashboard accurate, Arm does not warrant (express or implied) or provide any guarantee of data correctness due to the ever-evolving software landscape.
-# How To Contribute:
+# How To Contribute and Request:
* To contribute new package data (or improve existing package data):
* Fork this repo and submit pull requests; follow the step by step instructions in [Contribution guidelines](/contrib.md).
diff --git a/archetypes/commercial_packages/index.md b/archetypes/commercial_packages/index.md
index c6662370..97cd8bd6 100644
--- a/archetypes/commercial_packages/index.md
+++ b/archetypes/commercial_packages/index.md
@@ -1,24 +1,24 @@
---
-name:
-vendor:
-category:
-description:
-product_url:
-works_on_arm:
-release_date_on_arm:
+name: # The short name of the package. Examples: 'Docker', 'CoreDNS', or 'Snyk Container'.
+vendor: # The company name that offers this package. Examples: 'Snyk', or 'Oracle'.
+category: # The category this package belongs in. Must select a category (not the group name) from the package_category_list.yml at the top of the directory structure. Examples: 'Operating System', or 'Databases - noSQL'.
+description: # One complete sentence description of what this package is, ending in a period. If it has an open source equivalent, include what makes this commercial package different.
+product_url: # The URL that acts as the homepage for this product. Must start with 'https://'.
+works_on_arm: # Boolean. It is 'true' if this package works on arm, and 'false' if not.
+release_date_on_arm: # The date, in DD/MM/YYYY format, when this package first worked on Arm. Example: '21/04/2024'.
optional_info:
- homepage_url:
- support_caveats:
- alternative_options:
+ homepage_url: # The URL that brings the reader to the package homepage to learn more high-level info about it. Must start with 'https://'.
+ support_caveats: # If the package requires anything out of the ordinary to work on Arm, such as extra library installs or varying support across common Linux OSes, explain here.
+ alternative_options: # Only valid if 'works_on_arm' is false. Provide the name of one or more packages that address the same problem a developer is trying to solve.
getting_started_resources:
- arm_content:
- vendor_announcement:
- official_docs:
+ arm_content: # URL of a getting started resource that lives on an Arm digital domain such as learn.arm.com or community.arm.com. Must start with 'https://'.
+ vendor_announcement: # URL of the blog / support notes from the vendor that announced Arm support. Must start with 'https://'.
+ official_docs: # URL to a section of the docs that specifies installing on Arm if present, otherwise list the general 'getting started' docs.
optional_hidden_info:
- other_info:
+ other_info: # Not displayed on the website. Use this to list comments that will make package maintenance easier.
---
diff --git a/archetypes/opensource_packages/index.md b/archetypes/opensource_packages/index.md
index 3eabc95e..c0908955 100644
--- a/archetypes/opensource_packages/index.md
+++ b/archetypes/opensource_packages/index.md
@@ -1,30 +1,30 @@
---
-name:
-category:
-description:
-download_url:
-works_on_arm:
+name: # The short name of the package. Examples: 'Docker', 'CoreDNS', or 'Snyk Container'.
+category: # The category this package belongs in. Must select a category (not the group name) from the package_category_list.yml at the top of the directory structure. Examples: 'Operating System', or 'Databases - noSQL'.
+description: # One complete sentence description of what this package is, ending in a period. If it has an open source equivalent, include what makes this commercial package different.
+download_url: # The URL where a developer can download the most recent version of this package. Must start with 'https://'.
+works_on_arm: # Boolean. It is 'true' if this package works on arm, and 'false' if not.
supported_minimum_version:
- version_number:
- release_date:
+ version_number: # The first version that enabled support for Arm, often found in package release notes or news.
+ release_date: # The date, in DD/MM/YYYY format, when this package first worked on Arm. Example: '21/04/2024'.
optional_info:
- homepage_url:
- support_caveats:
- alternative_options:
+ homepage_url: # The URL that brings the reader to the package homepage to learn more high-level info about it. Must start with 'https://'.
+ support_caveats: # If the package requires anything out of the ordinary to work on Arm, such as extra library installs or varying support across common Linux OSes, explain here.
+ alternative_options: # Only valid if 'works_on_arm' is false. Provide the name of one or more packages that address the same problem a developer is trying to solve.
getting_started_resources:
- arm_content:
+ arm_content: # URL of a getting started resource that lives on an Arm digital domain such as learn.arm.com or community.arm.com. Must start with 'https://'.
partner_content:
- official_docs:
+ official_docs: # URL to a section of the docs that specifies installing on Arm if present, otherwise list the general 'getting started' docs.
arm_recommended_minimum_version:
- version_number:
- release_date:
+ version_number: # Leave blank, populated by Arm internal only.
+ release_date: # Leave blank, populated by Arm internal only.
optional_hidden_info:
- release_notes__supported_minimum:
- release_notes__recommended_minimum:
- other_info:
+ release_notes__supported_minimum: # Not displayed on the website. Store the URL of the release notes that first listed Arm support that justifies the listed minimum supported version above.
+ release_notes__recommended_minimum: # Leave blank, populated by Arm internal only.
+ other_info: # Not displayed on the website. Use this to list comments that will make package maintenance easier.
---
diff --git a/assets/css/eco-dashboard.css b/assets/css/eco-dashboard.css
index 91990afd..e6f27278 100644
--- a/assets/css/eco-dashboard.css
+++ b/assets/css/eco-dashboard.css
@@ -63,6 +63,7 @@
}
+
#recently-added-note {
margin: auto;
padding-bottom: 16px;
diff --git a/build_steps/update_active_categories.py b/build_steps/update_active_categories.py
deleted file mode 100644
index 6fc457ea..00000000
--- a/build_steps/update_active_categories.py
+++ /dev/null
@@ -1,56 +0,0 @@
-import os, yaml
-from pathlib import Path
-
-
-# Get the absolute path to this python file's directory
-script_dir = Path(__file__).parent.absolute()
-
-# Relative path to content from script, then tet absolute path to content by combining, and use Resolve to handle backwards".."
-opensource_relative_path = Path('../content/opensource_packages')
-opensource_absolute_path = (script_dir / opensource_relative_path).resolve()
-
-commercial_relative_path = Path('../content/commercial_packages')
-commercial_absolute_path = (script_dir / commercial_relative_path).resolve()
-
-# Same process for the YAML data file:
-yaml_relative_path = Path('../data/all_categories.yml')
-yaml_absolute_path = (script_dir / yaml_relative_path).resolve()
-
-
-
-print('Updating active categories...')
-
-# LOAD ALL CATS
-all_cats = ''
-with open(yaml_absolute_path, 'r') as all_cat_file:
- all_cats = yaml.safe_load(all_cat_file)
-
-
-# CREATE NEW ACTIVE_CATS LIST
-content_directories = [opensource_absolute_path, commercial_absolute_path]
-
-active_cats = []
-for content_directory in content_directories:
- for content_file in os.listdir(content_directory):
- if (content_file != ('_index.md')) and content_file.endswith('.md'):
- # OBTAIN CATEGORY FROM FILE
- cat = None
- with open(os.path.join(content_directory, content_file), 'r') as f:
- for line in f:
- if 'category:' in line:
- cat = line.replace('category:','').strip()
- break
- # ADD TO ACTIVE_CATS LIST IF NOT ALREADY PRESENT
- if cat in all_cats:
- if cat not in active_cats:
- active_cats.append(cat)
-
-# Order list alphabetically
-active_cats = sorted(active_cats)
-for cat in active_cats:
- print(' '+cat)
-
-# SAVE ACTIVE_CATS LIST
-with open('data/active_categories.yml', 'w') as active_cats_file:
- yaml.safe_dump(list(active_cats), active_cats_file, default_flow_style=False)
-
diff --git a/build_steps/validate_package_catagories.py b/build_steps/validate_package_catagories.py
new file mode 100644
index 00000000..473500f2
--- /dev/null
+++ b/build_steps/validate_package_catagories.py
@@ -0,0 +1,116 @@
+import os, sys
+from pathlib import Path
+import yaml
+
+
+
+def isCategoryValid(string, dictionary):
+ # Check if any key in the dictionary matches the string
+ for key in dictionary:
+ if string in key:
+ return True
+ return False
+
+
+if __name__ == "__main__":
+
+ # Get the absolute path to this python file's directory
+ script_dir = Path(__file__).parent.absolute()
+
+ # Relative path to content from script, then tet absolute path to content by combining, and use Resolve to handle backwards".."
+ category_data_yml_relative_path = Path('../data/category_data.yml')
+ category_data_yaml = (script_dir / category_data_yml_relative_path).resolve()
+
+
+ # content dirs
+ opensource_relative_path = Path('../content/opensource_packages')
+ opensource_absolute_path = (script_dir / opensource_relative_path).resolve()
+
+ commercial_relative_path = Path('../content/commercial_packages')
+ commercial_absolute_path = (script_dir / commercial_relative_path).resolve()
+
+ content_directories = [opensource_absolute_path, commercial_absolute_path]
+
+
+
+
+ # Read in category data into a dictionary, which maps {'category': 'group'}.
+ with open(category_data_yaml, 'r') as file:
+ data = yaml.safe_load(file)
+ category_dict = data["subcategory_mapping"]
+
+
+
+ # Loop over all packages
+ invalid_packages = []
+ valid_packages = []
+ for content_directory in content_directories:
+ for f in os.listdir(content_directory):
+ if f.endswith(".md"):
+ file_path_full = os.path.join(content_directory, f)
+ with open(file_path_full, 'r') as file:
+ lines = file.readlines()
+ packages_type = 'Open source'
+ for line in lines:
+ if 'name:' in line:
+ packages_name = line.split('name:')[1].strip()
+ if 'category:' in line:
+ packages_category = line.split('category:')[1].strip()
+ if 'vendor:' in line:
+ packages_type = 'Commercial'
+
+ # check if packages_category matches a key in category_dict
+ is_valid = isCategoryValid(packages_category,category_dict)
+ if is_valid:
+ valid_packages.append({
+ "name": packages_name,
+ "category": packages_category,
+ "group": category_dict[packages_category]
+ })
+ else:
+ invalid_packages.append({
+ "name": packages_name,
+ "file": f,
+ "type": packages_type,
+ "category": packages_category,
+ })
+
+
+
+
+
+
+ if invalid_packages:
+ # Maximum width for columns
+ max_package_name_width = max(len(max(invalid_packages, key=lambda x: len(x['name']))['name']), len('Package Name'))
+ max_category_width = max(len(max(invalid_packages, key=lambda x: len(x['category']))['category']), len('Wrong Category'))
+ max_type_width = max(len(max(invalid_packages, key=lambda x: len(x['type']))['type']), len('Type'))
+ max_file_width = max(len(max(invalid_packages, key=lambda x: len(x['file']))['file']), len('File'))
+
+
+ print("ERROR: The following packages have invalid categories:")
+ print(" ","Package Name".ljust(max_package_name_width), "Wrong Category".ljust(max_category_width), "Type".ljust(max_type_width), "File".ljust(max_file_width))
+ print(" ","-" * max_package_name_width, "-" * max_category_width, "-" * max_type_width, "-" * max_file_width)
+
+ # Print data rows
+ for package in invalid_packages:
+ print(" ",package['name'].ljust(max_package_name_width), package['category'].ljust(max_category_width), package['type'].ljust(max_type_width), package['file'].ljust(max_file_width))
+ sys.exit(1)
+
+
+ else:
+ # Maximum width for columns
+ max_package_name_width = max(len(max(valid_packages, key=lambda x: len(x['name']))['name']), len('Package Name'))
+ max_category_width = max(len(max(valid_packages, key=lambda x: len(x['category']))['category']), len('Category'))
+ max_group_width = max(len(max(valid_packages, key=lambda x: len(x['group']))['group']), len('Group'))
+
+ print("Success! Report of all packages:")
+ print(" ","Package Name".ljust(max_package_name_width), "Group".ljust(max_group_width), "Category".ljust(max_category_width))
+ print(" ","-" * max_package_name_width, "-" * max_group_width, "-" * max_category_width)
+
+ for package in valid_packages:
+ print(" ",package['name'].ljust(max_package_name_width), package['group'].ljust(max_group_width), package['category'].ljust(max_category_width))
+
+ print("Success! See above report.")
+
+
\ No newline at end of file
diff --git a/content/commercial_packages/chef_infra_client_progress.md b/content/commercial_packages/chef_infra_client_progress.md
new file mode 100644
index 00000000..d70b2ae7
--- /dev/null
+++ b/content/commercial_packages/chef_infra_client_progress.md
@@ -0,0 +1,23 @@
+---
+name: Chef Infra Client
+vendor: Progress (Chef)
+category: DevOps
+description: Chef Infra Client requests all the cookbook files (including recipes, templates, resources, providers, attributes, and libraries) that it needs for every action identified in the run-list from the Chef Infra Server.
+product_url: https://docs.chef.io/ctl_chef_client/
+works_on_arm: true
+release_date_on_arm: 01/02/2021
+
+
+optional_info:
+ homepage_url: https://docs.chef.io/ctl_chef_client/
+ support_caveats:
+ alternative_options:
+ getting_started_resources:
+ arm_content:
+ vendor_announcement: https://www.chef.io/docs/cheflibraries/product-and-user-guides/chef-infra-client-16_product-guide.pdf?sfvrsn=6595b433_4
+ official_docs: https://docs.chef.io/quick_start/
+
+optional_hidden_info:
+ other_info:
+
+---
diff --git a/content/commercial_packages/cis-hardened-images.md b/content/commercial_packages/cis-hardened-images.md
new file mode 100644
index 00000000..3d87a76e
--- /dev/null
+++ b/content/commercial_packages/cis-hardened-images.md
@@ -0,0 +1,24 @@
+---
+name: CIS Hardened Images
+vendor: CIS
+category: Security applications
+description: CIS Hardened Images provide users with a secure, on-demand, and scalable computing environment. CIS offers virtual machine (VM) images hardened in accordance with the CIS Benchmarks.
+product_url: https://www.cisecurity.org/
+works_on_arm: true
+release_date_on_arm: 8/7/2021
+
+
+optional_info:
+ homepage_url: https://www.cisecurity.org/
+ support_caveats:
+ alternative_options:
+ getting_started_resources:
+ arm_content:
+ vendor_announcement: https://www.cisecurity.org/insights/blog/new-hardened-vms-from-cis-graviton2-windows-2019-stig
+ official_docs: https://www.cisecurity.org/cis-hardened-images
+
+
+optional_hidden_info:
+ other_info:
+
+---
diff --git a/content/commercial_packages/crowdstrike-falcon.md b/content/commercial_packages/crowdstrike-falcon.md
new file mode 100644
index 00000000..c49b5b98
--- /dev/null
+++ b/content/commercial_packages/crowdstrike-falcon.md
@@ -0,0 +1,24 @@
+---
+name: Falcon
+vendor: CrowdStrike
+category: Security applications
+description: Falcon platform leverages real-time indicators of attack, threat intelligence, evolving adversary tradecraft and enriched telemetry from across the enterprise to deliver hyper-accurate detections, automated protection and remediation, elite threat hunting, and prioritized observability of vulnerabilities.
+product_url: https://www.crowdstrike.com/falcon-platform/
+works_on_arm: true
+release_date_on_arm: 03/12/2019
+
+
+optional_info:
+ homepage_url: https://www.crowdstrike.com/falcon-platform/
+ support_caveats:
+ alternative_options:
+ getting_started_resources:
+ arm_content:
+ vendor_announcement: https://www.crowdstrike.com/blog/join-crowdstrike-at-aws-reinvent-2019/
+ official_docs: https://www.crowdstrike.com/blog/tech-center/install-falcon-sensor-for-linux/
+
+
+optional_hidden_info:
+ other_info: Linux/ARM64 falcon supportive versions can be found on the FAQ page [here](https://www.crowdstrike.com/products/faq/), under the heading - What Linux versions does the falcon agent support.
+
+---
diff --git a/content/commercial_packages/fluent.md b/content/commercial_packages/fluent.md
new file mode 100644
index 00000000..558aa3b0
--- /dev/null
+++ b/content/commercial_packages/fluent.md
@@ -0,0 +1,24 @@
+---
+name: Fluent
+vendor: Ansys
+category: HPC
+description: Ansys Fluent is the industry-leading fluid simulation software known for its advanced physics modeling capabilities and unmatched accuracy.
+product_url: https://www.ansys.com/products/fluids/ansys-fluent
+works_on_arm: true
+release_date_on_arm: 01/06/2023
+
+
+optional_info:
+ homepage_url: https://www.ansys.com/products/fluids/ansys-fluent
+ support_caveats:
+ alternative_options:
+ getting_started_resources:
+ arm_content:
+ vendor_announcement: https://www.ansys.com/content/dam/amp/2023/june/quick-request/arm-64-processor-support-announcement-june-2023.pdf
+ official_docs: https://www.ansys.com/training-center/course-catalog/fluids/ansys-fluent-getting-started-basics
+
+
+optional_hidden_info:
+ other_info:
+
+---
diff --git a/content/commercial_packages/kernelcare_cloudLinux.md b/content/commercial_packages/kernelcare_cloudLinux.md
new file mode 100644
index 00000000..cb4fa416
--- /dev/null
+++ b/content/commercial_packages/kernelcare_cloudLinux.md
@@ -0,0 +1,23 @@
+---
+name: KernelCare
+vendor: CloudLinux
+category: DevOps
+description: KernelCare is a live kernel patching service that provides security patches and bugfixes for a range of popular Linux kernels that can be installed without rebooting the system.
+product_url: https://docs.tuxcare.com/live-patching-services/
+works_on_arm: true
+release_date_on_arm: 12/06/2020
+
+
+optional_info:
+ homepage_url: https://docs.tuxcare.com/live-patching-services/
+ support_caveats:
+ alternative_options:
+ getting_started_resources:
+ arm_content:
+ vendor_announcement: https://aws.amazon.com/blogs/apn/live-patching-linux-without-downtime-on-aws-graviton2-instances/
+ official_docs: https://docs.tuxcare.com/live-patching-services/#installation
+
+optional_hidden_info:
+ other_info:
+
+---
diff --git a/content/commercial_packages/ls-dyna.md b/content/commercial_packages/ls-dyna.md
new file mode 100644
index 00000000..978bfcbc
--- /dev/null
+++ b/content/commercial_packages/ls-dyna.md
@@ -0,0 +1,24 @@
+---
+name: LS-DYNA
+vendor: Ansys
+category: HPC
+description: Ansys LS-DYNA is the industry-leading explicit simulation software used for applications like drop tests, impact and penetration, smashes and crashes, occupant safety and more.
+product_url: https://www.ansys.com/products/structures/ansys-ls-dyna
+works_on_arm: true
+release_date_on_arm: 01/06/2023
+
+
+optional_info:
+ homepage_url: https://www.ansys.com/products/structures/ansys-ls-dyna
+ support_caveats:
+ alternative_options:
+ getting_started_resources:
+ arm_content:
+ vendor_announcement: https://www.ansys.com/content/dam/amp/2023/june/quick-request/arm-64-processor-support-announcement-june-2023.pdf
+ official_docs: https://lsdyna.ansys.com/download-install-overview/
+
+
+optional_hidden_info:
+ other_info:
+
+---
diff --git a/content/commercial_packages/redhawk-sc.md b/content/commercial_packages/redhawk-sc.md
new file mode 100644
index 00000000..a33e0691
--- /dev/null
+++ b/content/commercial_packages/redhawk-sc.md
@@ -0,0 +1,24 @@
+---
+name: RedHawk-SC
+vendor: Ansys
+category: HPC
+description: RedHawk-SC is the proven and trusted industry leader for power noise and reliability signoff for digital IP and SoCs down to 3nm and built on cloud-native elastic compute infrastructure.
+product_url: https://www.ansys.com/products/semiconductors/ansys-redhawk-sc
+works_on_arm: true
+release_date_on_arm: 01/06/2023
+
+
+optional_info:
+ homepage_url: https://www.ansys.com/products/semiconductors/ansys-redhawk-sc
+ support_caveats:
+ alternative_options:
+ getting_started_resources:
+ arm_content:
+ vendor_announcement: https://www.ansys.com/content/dam/amp/2023/june/quick-request/arm-64-processor-support-announcement-june-2023.pdf
+ official_docs: https://www.ansys.com/training-center/course-catalog/semiconductor/ansys-redhawk-sc-getting-started
+
+
+optional_hidden_info:
+ other_info:
+
+---
diff --git a/content/commercial_packages/sentinelone_singularity_xdr.md b/content/commercial_packages/sentinelone_singularity_xdr.md
new file mode 100644
index 00000000..858b9ad6
--- /dev/null
+++ b/content/commercial_packages/sentinelone_singularity_xdr.md
@@ -0,0 +1,24 @@
+---
+name: Singularity XDR
+vendor: SentinelOne
+category: Security applications
+description: SentinelOne Singularity XDR unifies and extends detection and response capability across multiple security layers, including endpoint, cloud, identity, network, and mobile, providing security teams with centralized end-to-end enterprise visibility, powerful analytics, and automated response across a large cross-section of the technology stack.
+product_url: https://www.sentinelone.com/resources/singularity-xdr/
+works_on_arm: true
+release_date_on_arm: 20/07/2022
+
+
+optional_info:
+ homepage_url: https://www.sentinelone.com/resources/singularity-xdr/
+ support_caveats:
+ alternative_options:
+ getting_started_resources:
+ arm_content:
+ vendor_announcement: https://www.sentinelone.com/press/sentinelone-announces-service-ready-designation-for-aws-graviton/
+ official_docs: https://www.sentinelone.com/platform/how-singularity-xdr-works/
+
+
+optional_hidden_info:
+ other_info: Releases are not available on the official website. We probably have to sign in/log in to get access to the downloads page. However, the announcement for the Graviton support was made on 20/07/2022.
+
+---
diff --git a/content/opensource_packages/harbor.md b/content/opensource_packages/harbor.md
index 05d57e87..dede0c1c 100644
--- a/content/opensource_packages/harbor.md
+++ b/content/opensource_packages/harbor.md
@@ -1,6 +1,6 @@
---
name: Harbor
-category: Container Registry
+category: Containers and Orchestration
description: An open source trusted cloud native registry project that stores, signs, and scans content.
download_url: https://github.com/goharbor/harbor/releases
works_on_arm: true
diff --git a/content/opensource_packages/kube-bench.md b/content/opensource_packages/kube-bench.md
new file mode 100644
index 00000000..6cf985b9
--- /dev/null
+++ b/content/opensource_packages/kube-bench.md
@@ -0,0 +1,29 @@
+---
+name: kube-bench
+category: Security applications
+description: kube-bench is a tool that checks whether Kubernetes is deployed according to security best practices as defined in the CIS Kubernetes Benchmark.
+download_url: https://github.com/aquasecurity/kube-bench/releases
+works_on_arm: true
+supported_minimum_version:
+ version_number: 0.3.1
+ release_date: 10/7/2020
+
+
+optional_info:
+ homepage_url: https://www.aquasec.com/products/open-source-projects/
+ support_caveats:
+ alternative_options:
+ getting_started_resources:
+ arm_content:
+ partner_content:
+ official_docs: https://aquasecurity.github.io/kube-bench/dev/installation/
+ arm_recommended_minimum_version:
+ version_number:
+ release_date:
+
+
+optional_hidden_info:
+ release_notes__supported_minimum: https://github.com/aquasecurity/kube-bench/releases/tag/v0.3.1
+ release_notes__recommended_minimum:
+ other_info:
+---
diff --git a/content/opensource_packages/trivy.md b/content/opensource_packages/trivy.md
new file mode 100644
index 00000000..28a10f65
--- /dev/null
+++ b/content/opensource_packages/trivy.md
@@ -0,0 +1,29 @@
+---
+name: Trivy
+category: Security applications
+description: Trivy is most comprehensive and easy-to-use open source vulnerability scanner for container images.
+download_url: https://github.com/aquasecurity/trivy/releases
+works_on_arm: true
+supported_minimum_version:
+ version_number: 0.0.1
+ release_date: 7/5/2019
+
+
+optional_info:
+ homepage_url: https://www.aquasec.com/products/trivy/
+ support_caveats:
+ alternative_options:
+ getting_started_resources:
+ arm_content:
+ partner_content:
+ official_docs: https://aquasecurity.github.io/trivy/v0.50/getting-started/installation/
+ arm_recommended_minimum_version:
+ version_number:
+ release_date:
+
+
+optional_hidden_info:
+ release_notes__supported_minimum: https://github.com/aquasecurity/trivy/releases/tag/v0.0.1
+ release_notes__recommended_minimum:
+ other_info:
+---
diff --git a/contrib.md b/contrib.md
index dfdc3100..50088252 100644
--- a/contrib.md
+++ b/contrib.md
@@ -34,7 +34,7 @@ Either 'true' or 'false'. If 'false', please fill out the 'alternative_options'
`works_on_arm: true`
## version
-This field specifies both the supported_minimum and recommended_minimum versions for this package to run on Arm. You should also include the dates that each version was released; this gives helpful context to the reader to assist their analysis. If a version just says the month and year it was released, you can fill in the first of the month to use the MM/DD/YYYY format. Here is a description of what both version fields mean:
+This field specifies both the supported_minimum and recommended_minimum versions for this package to run on Arm. You should also include the dates that each version was released; this gives helpful context to the reader to assist their analysis. If a version just says the month and year it was released, you can fill in the first of the month to use the DD/MM/YYYY format. Here is a description of what both version fields mean:
supported_minimum = The first version that enabled support for Arm hardware. This is an objective measurement, often found in package release notes or news.
recommended_minimum = The first version that enabled good/great performance on Arm hardware. This is a subjective measurement, and information can be found around release notes, news, and developer first-hand experience.
@@ -42,7 +42,7 @@ recommended_minimum = The first version that enabled good/great performance on A
- supported_minimum: 20.00.0
- supported_minimum_date: 05/11/2020
- recommended_minimum: 22.04.3
-- recommended_minimum_date: 04/21/2022`
+- recommended_minimum_date: 21/04/2022`
# Optional Data
These fields are an optional addition, adding more context to the package. Fill these out if appropriate.
diff --git a/data/active_categories.yml b/data/active_categories.yml
deleted file mode 100644
index fa1513e1..00000000
--- a/data/active_categories.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-- AI/ML
-- Compilers/Tools
-- Compression
-- Containers and Orchestration
-- Content mgmt platforms
-- Crypto
-- Data-format
-- Database
-- Databases - Big-data
-- Databases - noSQL
-- DevOps
-- E-commerce platforms
-- Gaming
-- HPC
-- Languages and Frameworks
-- Messaging/Comms
-- Miscellaneous
-- Monitoring/Observability
-- Networking
-- Operating System
-- Runtimes
-- Security applications
-- Service Mesh
-- Storage
-- Video
-- Web Server
\ No newline at end of file
diff --git a/data/all_categories.yml b/data/all_categories.yml
deleted file mode 100644
index 8b24b197..00000000
--- a/data/all_categories.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-- AI/ML
-- CI/CD
-- Cloud Native Tools
-- Compilers/Tools
-- Compression
-- Containers and Orchestration
-- Content mgmt platforms
-- Crypto
-- Databases - Big-data
-- Databases - noSQL
-- Data-format
-- Distros
-- E-commerce platforms
-- Languages and Frameworks
-- Messaging/Comms
-- Monitoring/Observability
-- Networking
-- Operating System
-- Runtimes
-- Security
-- Service Mesh
-- Storage
-- Video
-- Web Server
diff --git a/themes/arm-design-system-hugo-theme/layouts/partials/eco-dashboard/info-top.html b/themes/arm-design-system-hugo-theme/layouts/partials/eco-dashboard/info-top.html
index 36f64fd1..b2c1d47b 100644
--- a/themes/arm-design-system-hugo-theme/layouts/partials/eco-dashboard/info-top.html
+++ b/themes/arm-design-system-hugo-theme/layouts/partials/eco-dashboard/info-top.html
@@ -4,14 +4,24 @@
Migrating your workloads to Arm?
Discover what software packages work on Arm, the supported versions, download links, and quick-start resources.
For more details, read the contribution guidelines on GitHub to understand how packages are added.
+
+ Legal disclaimer here.
+
+ While Arm uses reasonable efforts to keep this dashboard accurate, Arm does not warrant (express or implied) or provide any guarantee of data correctness due to the ever-evolving software landscape.