Red Hat Developer Hub 1.5

Red Hat Developer Hub release notes

Release notes for Red Hat Developer Hub 1.5

Red Hat Customer Content Services

Abstract

Red Hat Developer Hub (Developer Hub) 1.5 is now generally available. Developer Hub is a fully supported, enterprise-grade productized version of upstream Backstage 1.35.0. This document contains release notes for the Red Hat Developer Hub 1.5.

Red Hat Developer Hub (Developer Hub) 1.5 is now generally available. Developer Hub is a fully supported, enterprise-grade productized version of upstream Backstage v1.35.0. You can access and download the Red Hat Developer Hub application from the Red Hat Customer Portal or from the Ecosystem Catalog.

1. New features

This section highlights new features in Red Hat Developer Hub 1.5.

1.1. Added techdocsAddons configuration for dynamic plugins

Developer Hub introduces the techdocsAddons configuration option for a dynamic plugin’s front-end configuration. This feature allows dynamic plugins to export one or more components as TechDocs add-ons, enhancing the TechDocs experience. Add-ons can be configured using props to modify their behavior, such as manipulating a TechDocs site’s Document Object Model (DOM).

For more information, see TechDocs for Red Hat Developer Hub.

1.2. Configurable global header plugin

With this update, Developer Hub introduces a new global header plugin, providing a configurable and extendable header in RHDH. You can use the default header with key RHDH components or fully customize it by enabling, disabling, or extending its functionality through the dynamic plugin system.

The key features and enhancements include:

  • Global header as a dynamic plugin

    • Enabled by default with a provided wrapper
    • Can be disabled by turning off the dynamic plugin
    • Supports customization by adding, reordering, or removing components
  • Extendable default header components

    • Search input field
    • Create button linking to templates
    • Support for internal or external links, such as support and notification icons
    • Profile and Create drop-down menus
  • Plugin extension capabilities

    • Other plugins can add custom components or links
    • Extend the CreateDropdown or ProfileDropdown menus

The global header plugin also introduces new mount points in the dynamic plugin system, offering enhanced flexibility in positioning, styling, and extending the header, enabling a fully customizable experience in RHDH.

For more information about global header, see Configuring the global header in Red Hat Developer Hub.

1.3. Support for loading authentication providers from dynamic plugins

Red Hat Developer Hub 1.5 introduces support for loading authentication providers or modules from dynamic plugins, enabling greater flexibility and customization. The key improvements include:

  • Environment variable control:

    • A new ENABLE_AUTH_PROVIDER_MODULE_OVERRIDE environment variable determines whether the backend installs the default authentication provider module.
    • When the new environment variable is enabled, dynamic plugins can be used to supply custom authentication providers.
  • Custom sign-in page support:

    • A new signInPage configuration allows front-end dynamic plugins to provide a custom SignInPage component.

      Example configuration

      dynamicPlugins:
       frontend:
         my-plugin-package:
           signInPage:
             importName: CustomSignInPage

    • The exported CustomSignInPage will be mapped to components.SignInPage during front-end initialization.
  • Authentication provider settings:

    • A new providerSettings configuration field allows front-end dynamic plugins to define authentication provider settings for display in the Authentication Providers tab on the Settings page.

      Example configuration

      dynamicPlugins:
       frontend:
         my-plugin-package:
           providerSettings:
      - title: Github Two
      description: Sign in with GitHub Org Two
      provider: core.auth.github-two

    • Each providerSettings entry creates a corresponding row in the Authentication Providers tab. The provider field must match the string used in createApiRef when defining the API reference:

      Example configuration

      export const ghTwoAuthApiRef: ApiRef<
       OAuthApi & ProfileInfoApi & BackstageIdentityApi & SessionApi
      > = createApiRef({
       id: 'core.auth.github-two', // <--- this string
      })

For more information, see Authentication in Red Hat Developer Hub.

1.4. Floating action button support for plugins

RHDH now supports adding plugins or external links as floating actions on Red Hat Developer Hub. This feature allows you to configure commonly used plugins as floating buttons, providing quick access and improving navigation by centralizing essential plugins on a single page.

For more information, see Configuring a floating action button in Red Hat Developer Hub.

1.5. Support for high availability in OpenShift Container Platform

Red Hat Developer Hub now supports high availability setups in OpenShift Container Platform. This enhancement allows the deployment to scale beyond a single replica, ensuring the application remains operational and accessible even in the event of failures or disruptions.

For more information, see Configuring high availability in Red Hat Developer Hub.

1.6. Support for top visited and recently visited cards on the customizable home page

With RHDH 1.5, two new cards are available for the customizable home page:

  • Top Visited Pages: Displays the most frequently visited pages.
  • Recently Visited Pages: Displays the latest pages accessed.

These cards track visited pages for each user within their browser and can be configured in the dynamic home page as follows:

Example configuration

- mountPoint: home.page/cards
 importName: TopVisitedCard
 config:
   layouts:
     xl: { w: 6, h: 4 }
     lg: { w: 6, h: 4 }
     md: { w: 6, h: 4 }
     sm: { w: 6, h: 4 }
     xs: { w: 6, h: 4 }
     xxs: { w: 6, h: 4 }


- mountPoint: home.page/cards
 importName: RecentlyVisitedCard
 config:
   layouts:
     xl: { w: 6, h: 4, x: 6 }
     lg: { w: 6, h: 4, x: 6 }
     md: { w: 6, h: 4, x: 6 }
     sm: { w: 6, h: 4, x: 6 }
     xs: { w: 6, h: 4, x: 6 }
     xxs: { w: 6, h: 4, x: 6 }

The new cards enhance the user experience by providing quick access to frequently used and recently viewed content.

1.7. Improved rate limit handling for GitHub organization entity provider

The GitHub organization entity provider now manages both primary and secondary GitHub rate limits. It automatically pauses operations when these limits are reached, ensuring greater reliability, especially when ingesting large GitHub organizations.

1.8. New configuration option for improved catalog performance

A new catalog.disableRelationsCompatibility configuration option has been introduced. Enabling this option enhances catalog performance and reduces memory usage. However, it may impact consumers that depend on the target field in relation objects.

1.9. New Scaffolder permission for front-end template management

The scaffolder.template.management permission has been introduced to restrict access to front-end template management features, ensuring better control over template modifications. For more information, see Permission policies reference.

1.10. Support for multi-replica RHDH with persistent volume for dynamic plugins cache

Previously, running multi-replica RHDH with a persistent volume for the dynamic plugins cache was not possible due to potential write conflicts. RHDH 1.5 mitigates that risk, allowing for better scalability and stability.

1.11. Configurable PVC mounting for containers

Previously, the default Persistent Volume Claim (PVC) could only be mounted to the Backstage container. With this update, you can now configure which container(s) the PVC must be mounted to, providing greater flexibility in storage management.

1.12. Improved status conditions for Backstage custom resources

This update enhances the status conditions in the Backstage custom resource(s) managed by the Developer Hub Operator, providing clearer insights into application availability.

A new DeployInProgress reason has been introduced under the Deployed condition. It appears when the application is still starting up and not fully available. The Deployed reason now only reflects when the Developer Hub application is fully up and running with the desired number of replicas, improving visibility during deployment. For example:

Example status conditions

Status:
  Conditions:
    Last Transition Time: 2025-03-10T17:09:22Z
    Message: Deployment status: Available: Deployment does not have minimum availability. Progressing: ReplicaSet "backstage-bs1-674476fd67" is progressing.
    Reason: DeployInProgress
    Status: False
    Type: Deployed

...
Status:
  Conditions:
    Last Transition Time: 2025-03-10T17:14:43Z
    Message:
    Reason: Deployed
    Status: True
    Type: Deployed

1.13. Enhanced secret configuration for YAML files

The RHDH Operator now introduces the ability to configure multiple secrets within a single YAML file, similar to PVCs. Additionally, it allows annotations to specify:

  • The mount path for each secret
  • The specific containers where the secret must be mounted

This enhancement provides greater flexibility in managing secrets across different containers.

1.14. Enhanced title customization options for the home page plugin

The home page plugin now provides more ways to customize and personalize the title. If your user catalog entity includes a displayName, the title can dynamically display your first name or display name for a more personalized experience.

1.15. Automatic platform detection for Developer Hub Operator configuration

In this update, the Developer Hub Operator has been enhanced to automatically detect the platform it is running on (such as EKS, AKS, or GKE) and apply the necessary patches to the fsGroup field in the security contexts of the containers.

This enhancement removes the need for manual updates to the Operator default configuration, simplifying the installation process and eliminating some post-installation steps.

1.16. Enhanced air-gapped installation script for Developer Hub Operator

The installation script for the Developer Hub Operator has been improved to support all supported platforms. Additionally, it now works seamlessly in both partially disconnected and fully disconnected environments, making the setup process more versatile and accessible.

For more information, see Installing Red Hat Developer Hub in an air-gapped environment with the Operator.

1.17. Enhanced role creation with bulk selection for users, groups, plugins, and permissions

This release introduces significant enhancements to the RBAC plugin, allowing administrators to select multiple users, groups, plugins, and their associated permissions at once when creating a role. Previously, this process was done individually, which could be time-consuming. Now, administrators can quickly select multiple items in a single action, simplifying and speeding up role and permission configuration.

Additionally, resource-based permissions now display more intuitive names, showing associated CRUD actions rather than just resource types, which improves visibility and usability.

These updates reduce manual effort, increase efficiency, and enhance the overall user experience when managing access control.

For more information, see Authorization document.

2. Breaking changes

This section lists breaking changes in Red Hat Developer Hub 1.5.

2.1. The scopes parameter is now required for GitLab project deploy token creation

The scopes parameter is now mandatory for the gitlab:projectDeployToken:create action. A valid value, such as ['read_repository'], must be provided.

Additional resources

2.2. The dynamicPlugins.cache.volumeClaimSpec field is removed from the Helm Chart, dynamic plugin storage is now ephemeral

The dynamicPlugins.cache.volumeClaimSpec field has been removed from values.yaml, making all dynamic plugin storage ephemeral by default. Instead of the Helm chart managing persistent volume claim (PVC) creation, you must now manually configure ephemeral volume claims under extraVolumes.

This change also resolves issues with running multi-replica RHDH deployments, as using a PVC for the Dynamic Plugins cache previously led to potential write conflicts.

Additional resources

3. Deprecated functionalities

This section lists deprecated functionalities in Red Hat Developer Hub 1.5.

3.1. Deprecation of podman and ImageStreams approach for Helm chart mirroring on OpenShift Container Platform

The previous method using podman and ImageStreams for Helm chart mirroring has been deprecated. You are now required to transition to oc-mirror for Helm chart and related container image mirroring on OpenShift Container Platform. This change enables support for fully disconnected and partially disconnected environments, ensuring a Red Hat-supported airgapping process.

Additional resources

3.2. Removal of useRedisSets option from Redis backend cache

The useRedisSets option in the Redis backend cache was previously enabled by default. With this update, the option has been removed and is no longer effective. If it remains in the configuration, a warning will appear in the application logs.

Required action
  • To avoid warnings, remove the useRedisSets option from the backend.cache section in your app-config.yaml file.

Additional resources

3.3. Deprecation of ArgoCD front-end plugin from RoadieHQ

The ArgoCD front-end plugin from RoadieHQ has been deprecated and will be removed in a future release. Consider transitioning to the ArgoCD plugin from Red Hat for continued support and enhancements.

Additional resources

3.4. Change in sign-in resolver configuration location

Previously, configuring the sign-in resolver to bypass user provisioning in the Developer Hub software catalog required setting dangerouslyAllowSignInWithoutUserInCatalog: true at the root of the app-config.yaml file.

In this release, this configuration has been deprecated at the root level and moved to the resolver configuration section. It now applies specifically to that resolver. For more details, see Authentication in Red Hat Developer Hub.

Additional resources

3.5. Deprecation of legacy dynamic plugin configurations and export options

Due to ongoing improvements in dynamic plugin functionality, the following features are deprecated and will be removed in a future release:

  • apiFactories configuration: Dynamic plugins must now define API factories directly within their plugin using the createPlugin API for better integration and maintainability.
  • export-dynamic-plugin --embed-as-code and --no-embed-as-dependencies: These options, which inline each dependency as code, have been deprecated because plugins exported this way cannot properly access the database. The --embed-as-dependencies option, now the default for package export-dynamic-plugin, replaces this behavior.

Additional resources

3.6. Red Hat Build of Keycloak v24 is deprecated as an authentication provider

Red Hat Build of Keycloak (RHBK) v24 is deprecated as an authentication provider. You can continue to use RHBK v24 until the end of maintenance support. For details, see Red Hat Build of Keycloak Life Cycle and Support Policies. As an alternative, migrate to Red Hat Build of Keycloak v26.

Additional resources

3.7. Removal of Red Hat Single-Sign On 7.6 as an authentication provider

Red Hat Single-Sign On 7.6 was deprecated as an authentication provider in RHDH version 1.4 and has been removed in Red Hat Developer Hub 1.5.

Additional resources

4. Technology Preview

This section lists Technology Preview features in Red Hat Developer Hub 1.5.

Important

Technology Preview features provide early access to upcoming product innovations, enabling you to test functionality and provide feedback during the development process. However, these features are not fully supported under Red Hat Subscription Level Agreements, may not be functionally complete, and are not intended for production use. As Red Hat considers making future iterations of Technology Preview features generally available, we will attempt to resolve any issues that customers experience when using these features. See: Technology Preview support scope.

4.1. Extensions for Red Hat and community plugins

The new Extensions feature enables you to browse available Red Hat and community plugins. The initial version displays all plugins and includes filtering options. Future updates will introduce additional features, such as installation directly from the front-end.

For more information about Extensions, see Extensions in Red Hat Developer Hub.

Additional resources

4.2. New dynamic plugin for Kubernetes scaffolder actions

Developer Hub introduces the @backstage-community/plugin-scaffolder-backend-module-kubernetes plugin as a dynamic plugin, enabling Backstage template actions for Kubernetes. Currently, it includes the create-namespace action. The plugin for Kubernetes scaffolder actions is disabled by default.

For more information, see Kubernetes custom actions in Red Hat Developer Hub.

Additional resources

5. Developer Preview

This section lists Developer Preview features in Red Hat Developer Hub 1.5.

Important

Developer Preview features are not supported by Red Hat in any way and are not functionally complete or production-ready. Do not use Developer Preview features for production or business-critical workloads. Developer Preview features provide early access to functionality in advance of possible inclusion in a Red Hat product offering. Customers can use these features to test functionality and provide feedback during the development process. Developer Preview features might not have any documentation, are subject to change or removal at any time, and have received limited testing. Red Hat might provide ways to submit feedback on Developer Preview features without an associated SLA.

For more information about the support scope of Red Hat Developer Preview features, see Developer Preview Support Scope.

5.1. Adoptions Insights in Red Hat Developer Hub

The Adoption Insights plugin is now available as a Developer Preview feature in Red Hat Developer Hub, providing key metrics and trends to help you understand Developer Hub usage.

Currently, the Adoption Insights plugin cannot be used alongside the built-in plugin-analytics-provider-segment plugin. While a fix is in progress, you can enable Adoption Insights by first disabling the plugin-analytics-provider-segment plugin. To disable the plugin-analytics-provider-segment plugin, add the following configuration to the dynamic-plugins.yaml file or your configuration ConfigMap:

Example configuration in dynamic-plugins.yaml file

plugins:
  - package: ./dynamic-plugins/dist/backstage-community-plugin-analytics-provider-segment
    disabled: true

After disabling the plugin-analytics-provider-segment plugin, you can configure the Adoption Insights plugin using the Adoption Insights in Red Hat Developer Hub documentation.

Additional resources

6. Fixed issues

This section lists issues fixed in Red Hat Developer Hub 1.5.

6.1. Fixed issues in 1.5.0

6.1.1. Entity tab reordering now works as expected

You can now reorder entity tabs by specifying a priority value in the configuration. Tabs with higher priority values appear first, while default tabs can be hidden by assigning a negative priority value.

Additional resources

6.1.2. Report issue feature and oversized icon in TechDocs

Previously, the Report a documentation issue feature in TechDocs was not functional. Additionally, selecting text in a TechDoc displayed an oversized icon instead of the intended tooltip button.

This issue has been fixed, ensuring that users can now select content and report issues correctly using the tooltip button.

Additional resources

6.1.3. Keycloak access token lifespan and refresh performance

When using RHBK as an OIDC provider, the default access token lifespan was set to five minutes, causing frequent refresh token requests as the token neared expiration. This resulted in performance issues due to the frequent token refreshes.

To resolve this, you can increase the access token lifespan on the Keycloak server by adjusting the Access Token Lifespan setting under Configure → Realm Settings to a value greater than five minutes. This adjustment prevents unnecessary refresh token calls and improves performance.

Additional resources

6.1.4. Improved OCI artifact handling and prevented unintended deletion

This update introduces a new pullPolicy configuration to enhance support for floating tags in OCI artifacts. The pullPolicy setting provides more consistent behavior across platforms handling image containers and offers two options:

  • Always: Compares the image digest in the remote registry and downloads the artifact if it has changed, even if the plugin was previously downloaded.
  • IfNotPresent: Downloads the artifact only if it is not already present in the dynamic-plugins-root folder, without checking image digests.

The pullPolicy setting is also applied to the NPM downloading method, though Always will download the remote artifact without a digest check. While the existing forceDownload option remains functional, pullPolicy takes precedence, and forceDownload might be deprecated in a future release.

Additionally, this update fixes an issue where OCI artifacts were unintentionally deleted during the clean up phase if only the URL was modified.

Additional resources

6.1.5. Corrected enabled status display for external plugins

Previously, plugins installed from external sources were incorrectly displayed with a No in the Enabled column on the Plugins page. This update fixes the UI logic to ensure that externally installed plugins now correctly appear with a Yes in the Enabled column as expected.

Additional resources

6.1.6. Dynamic plugins PVC now ephemeral by default to prevent upgrade issues

In Developer Hub Helm Chart version 1.4.2+, it was possible to configure the storage class and access mode for the dynamic plugins persistent volume claim (PVC) using the dynamicPlugins.cache.volumeClaimSpec field in the Helm values file.

In version 1.5, this behavior has been reverted, making the dynamic plugins root PVC ephemeral by default. This change addresses issues encountered when upgrading the Helm Chart or running multiple replicas of Developer Hub.

You can still customize the ephemeral volume claim’s storage class and access mode using the upstream.backstage.extraVolumes field, as shown in the following example:

Example configuration

upstream:
  backstage:
    extraVolumes:
      - name: dynamic-plugins-root
        ephemeral:
          volumeClaimTemplate:
            spec:
              accessModes:
                # TODO: Change the access mode below
                - ReadWriteOnce
              resources:
                requests:
                  storage: 5Gi
              # TODO: Add your storage class below
              storageClassName: "<my-custom-storage-class>"

      - name: dynamic-plugins
        configMap:
          defaultMode: 420
          name: '{{ printf "%s-dynamic-plugins" .Release.Name }}'
          optional: true

      - name: dynamic-plugins-npmrc
        secret:
          defaultMode: 420
          optional: true
          secretName: '{{ printf "%s-dynamic-plugins-npmrc" .Release.Name }}'

      - name: dynamic-plugins-registry-auth
        secret:
          defaultMode: 416
          optional: true
          secretName: '{{ printf "%s-dynamic-plugins-registry-auth" .Release.Name }}'

      - name: npmcacache
        emptyDir: {}

      - name: temp
        emptyDir: {}

However, ensure that all other volumes declared in the default Helm Chart are also included.

Additional resources

6.1.7. Support for multiple replicas across cluster nodes

Previously, the Developer Hub Helm Chart did not support running multiple replicas on different cluster nodes due to the automatic creation of a dynamic plugins root persistent volume claim (PVC). This issue has been resolved by reverting the PVC creation and switching to an ephemeral volume by default, allowing multiple replicas to function properly.

Additional resources

6.1.8. Configurable image and disable option for test-connection pod

In previous versions of the Developer Hub Helm Chart, the image for the test-connection pod could not be configured, which posed challenges for air-gapped environments. The test-connection pod is created when running helm test to validate a deployed release.

This issue has been resolved by introducing configuration options to specify the image and allowing the test-connection pod to be disabled entirely. The following fields are now available in the Helm Chart:

Example configuration fields in Helm Chart

# -- Test pod parameters
test:
  # -- Whether to enable the test-connection pod used for testing the Release using `helm test`.
  enabled: true

  image:
    # -- Test connection pod image registry
    registry: quay.io

    # -- Test connection pod image repository. Note that the image needs to have both the `sh` and `curl` binaries in it.
    repository: curl/curl

    # -- Test connection pod image tag. Note that the image needs to have both the `sh` and `curl` binaries in it.
    tag: latest

Additional resources

6.1.9. MODULE_NOT_FOUND error in GitLab org catalog and Notification backend plugin

Previously, the GitLab org catalog backend plugin and Notification backend plugin failed to load when configured, displaying a MODULE_NOT_FOUND error. This issue has been fixed by embedding the missing dependencies within the GitLab org catalog backend dynamic plugin, ensuring proper functionality.

Additional resources

6.1.10. Monorepo detection in package-dynamic-plugins CLI command

The janus-idp CLI command package-dynamic-plugins is designed to work with both monorepos and single plugin projects. This update resolves a bug in the tool’s monorepo detection, which previously caused the tool to fail with the error TypeError: Cannot read properties of undefined (reading 'packages') when run in a single plugin project.

Additional resources

6.1.11. Improved dependency resolution for embedded packages in CLI

Previously, the CLI examined the dependencies of embedded packages during the export process by calling require from the monorepo root. This could lead to incorrect dependency resolution, especially when wrapping an existing plugin.

With this update, the CLI now calls require from the embedded package’s parent directory, ensuring that the most relevant dependencies are correctly identified and used.

Additional resources

6.1.12. Improved CLI handling for dynamic plugin export

Previously, the CLI required each dynamic plugin project to define an export-dynamic script for the package-dynamic-plugin command to successfully export the plugin.

With this update, defining an export-dynamic script is no longer necessary. The package-dynamic-plugin command now automatically attempts to run the export-dynamic-plugin command with default arguments, simplifying the export process.

Additional resources

6.1.13. Improved startup performance for RBAC backend plugin

Previously, the startup process would slow down when handling a large number of CSV entries due to roles and permission policies being added individually. In this release, roles and policies are now added in bulk, improving the startup speed of the RBAC backend plugin.

Additional resources

6.1.14. RBAC performance for large user and group counts

Previously, organizations with a large number of users and groups experienced slower response times due to RBAC permission evaluations. This update includes performance improvements to help mitigate those slowdowns.

Additional resources

6.1.15. Expanded support for conditional aliases

Previously, conditional aliases were only functional for the catalog conditional rule of IS_ENTITY_OWNER. With this update, aliases now apply to all rules, improving flexibility and functionality.

Additional resources

6.1.16. Rolling update issue with PVCs

Previously, upgrading an existing Developer Hub Helm release using rolling updates was blocked due to the automatic creation of a dynamic plugins root persistent volume claim (PVC) with a hardcoded ReadWriteOnce access mode. This prevented new replicas from being scheduled on different nodes.

This issue is now resolved by reverting the PVC creation and using an ephemeral volume by default, enabling rolling updates and allowing multiple replicas to function as expected.

Additional resources

6.1.17. Air-gapped installation script for ROSA clusters

Previously, the installation script for the Operator failed to run on Red Hat OpenShift Service on AWS (ROSA) clusters in air-gapped environments. This issue has now been resolved, ensuring the script functions correctly on ROSA.

Additional resources

7. Fixed security issues

You can view the security issues fixed in Red Hat Developer Hub 1.5 at Red Hat Security Updates.

8. Known issues

This section lists known issues in Red Hat Developer Hub 1.5.

8.1. Add button is misaligned on Bulk Import page

On the Bulk Import page, the Add button may occasionally appear in the top-left corner instead of its intended position in the bottom-right corner. Despite the misalignment, the button remains fully functional.

Additional resources

8.2. Topology plugin permission is not displayed in the RBAC front-end UI

Permissions associated only with front-end plugins do not appear in the UI because they require a backend plugin to expose the permission framework's well-known endpoint. As a workaround, you can apply these permissions by using a CSV file or directly calling the REST API of the RBAC backend plugin. Affected plugins include Topology (topology.view.read), Tekton (tekton.view.read), ArgoCD (argocd.view.read), and Quay (quay.view.read).

Additional resources

Legal Notice

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.