CNCF Tech Docs
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Write
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Help
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Write
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # Backstage Docs Assessment Prepared by: Dave Welsch ([@dwelsch-esi](https://github.com/cncf/techdocs/assessments/0008-backstage.md))<br> Date: 2023-09-01 ## Introduction This document assesses the quality and completeness of the [Backstage](https://backstage.io) project's documentation and website. This document: - Measures existing documentation quality against the CNCF’s standards - Provides examples of great documentation as a reference - Recommends a program of key improvements with the largest return on investment - Provides guidance to making the recommended improvements actionable TBD ## How this document works The assessment is divided into three sections: - **Project documentation:** for end users of the project, aimed at people who intend to use it - **Contributor documentation:** for new and existing contributors to the project - **Website:** for branding, website structure, and maintainability Each section begins with a rating based on a rubric with appropriate [criteria](criteria.md) for the section. ## Project documentation | Criteria | 1 | 2 | 3 | 4 | 5 | | --- | --- | --- | --- | --- | --- | | Information architecture | | :heavy_check_mark: | | | | | New user content | | | | :heavy_check_mark: | | | Content maintainability | | | :heavy_check_mark: | | | | Content creation processes | | | :heavy_check_mark: | | | | Inclusive language | | | | :heavy_check_mark: | | Scale: - 1 = (Is not present or requires significant work) - 3 = (Is present, but needs work) - 5 = (Is executed extremely well or no improvement required) ### Comments Backstage is a platform for organizing and managing software projects. This complicates the documentation, because it can be difficult to distinguish among several levels of involvement with Backstage: 1. Use of Backstage as an organizational contributor (coder, DevOp, tech writer) to catalog, create, or document software. 2. Administation of a Backstage instance ("app" in Backstage nomenclature), including installation, deployment, software upgrades, configuration, and customization using plugins. 3. Extending a Backstage app, including writing plugins and modifying existing plugins. 4. Modification or extension of the Backstage platform. This complexity necessitates clear definitions of roles so that use cases can be documented, indexed, found, and used. The four levels described above suggest that documentation should be organized under at least four roles: 1. Using Backstage for software development: end user. 2. Installing and maintaining a Backstage app for an organization: Backstage admin. 3. Extending a Backstage app: DevOp or internal tooling developer. 4. Extending the Backstage platform: contributing developer. The main issues with the Backstage documentation are: 1. Lack of organization around user roles, and 2. Lack of instructional content that defines tasks for each role and provides explicit instructions to accomplish these tasks. The [Overview](https://backstage.io/docs/overview/what-is-backstage) contains valuable high-level conceptual information, including a list of [benefits](https://backstage.io/docs/overview/what-is-backstage#benefits) to particular user roles (engineering managers, developers, platform engineers). This is a good demonstration of awareness of user roles that needs to be extended throughout the documentation. There are installation and configuration instructions in [Getting Started](https://backstage.io/docs/getting-started/). However: 1. The instructions describe a local installation. 2. The user documentation, for the most part, lacks procedural information. The following sections contain brief assessments of each element of the Project Documentation rubric. #### Information architecture **Conceptual content** is abundant throughout the Backstage documentation. This is good, because using Backstage effectively requires a thorough understanding of its information model. The documentation seems **feature complete**. All software features are documented. **Instructional content** is a weakness of the Backstage docs: tasks required of each role are missing, as are instructions for completing these roles. Instructional material for at least the most common use cases (**"happy path"**) should support learning (tutorials) as well as doing (procedures). **Escalation** options (FAQs, Troubleshooting docs) exists for most Backstage functionality. As well, the contributor community provides robust support (GitHub issues and discussion channels). **Reference information** exists, including for **APIs**, but is scattered throughout the documentation. It's not clear that the documentation is completely **up to date**, although [release notes](https://backstage.io/docs/releases/v1.17.0) exist and are easily findable. Examples: * https://prometheus.io/docs/introduction/overview/ * https://kubernetes.io/docs/home/ #### New user content **New user** content is present and findable ("**signposted"**), including **installation** instructions for all applicable **OSes**. However, the [Getting Started](https://backstage.io/docs/getting-started/) instructions don't distinguish between administrator and developer end-user roles. [Deployment](https://backstage.io/docs/deployment/) describes various scenarios for administrators, but doesn't provide end-to-end instructions. There is no clear workflow **path** after installation. There is **example content** available, including tutorials for a variety of tasks and a very nice [demo server](https://demo.backstage.io/catalog?filters%5Bkind%5D=component&filters%5Buser%5D=owned). Examples: * https://falco.org/docs/getting-started/ * https://prometheus.io/docs/introduction/first_steps/ #### Content maintainability & site mechanics The documentation is **searchable**. There does not seem to be a **localization** framework. There doesn't currently seem to be any kind of localization effort. There does not seem to be any mechanism for **versioning** documentation content. Examples: * https://kubernetes.io/docs/contribute/ #### Content creation processes The procedures for duplicating the documentation locally and for contributing documentation are [documented](https://github.com/backstage/backstage/tree/master/microsite) but are [but not easily findable](https://backstage.io/docs/getting-started/getting-involved#write-documentation-or-improve-the-website). These procedures are presumably included in any updates to (and subsequent **release** of) the project code (since the doc is in the same GitHub repo). **Reviewers and approvers** are presumably the Backstage OSS community at large. It would be nice if this situation were made clear explicitly. The website does not have a clear individual **owner or maintainer**. Examples: * https://github.com/nats-io/nats-site/blob/master/MAINTAINERS.md (clearly documented maintainers) * https://thanos.io/tip/contributing/how-to-contribute-to-docs.md/ #### Inclusive language I found no content that uses non-recommended words as documented by the [Inclusive Naming Initiative](https://inclusivenaming.org) website. The website makes occasional use of words like "simple" and "easy", but avoids explicitly ableist language. ### Recommendations The following sections contain recommendations for improvements to the Backstage project documentation. These recommendations are for broad improvements that would greatly increase documentation effectiveness. Further collaboration between technical writers and project leadership is needed to analyze the recommendations into actionable, estimable work efforts. #### Clarify user roles and objectives Any systemic improvement to the Backstage documentation hinges on clearly defining and documenting user roles. This is a first step in defining any documentation set, but nature of Backstage makes it especially important here. The example roles given in the [comments](#Comments) can be used as a starting point for discussion, but should not be adopted without extensive analysis. The roles need to be defined by product experts, not by my hot take. Discussion participants should include technical writers and all types of users. It should specifically include both Backstage product experts and Backstage OSS project managers because there appears to be no bright line between running a large Backstage instance and contributing to the Backstage codebase. #### Develop instructional documentation Most of the Backstage documentation seems to have evolved from architecture and design documentation. This makes it very rich in conceptual material and reference documentation, but weak in user-oriented instructional documentation. "Instructional documentation" is a broad category that includes such traditional documentation artifacts as tutorials; getting started guides; procedural recipes or "cookbooks"; runbooks; and how-to guides. For every user role: **Define use cases**: Define the common use cases for each role. Some typical examples: *Administrator*: Installation; deployment; configuration; maintenance; upgrades; extension (plugins); disaster recovery. *User (developer)*: Development environment setup; Adding an existing element; creating a new element; creating a template; viewing projects; searching; creating documentation; CI/CD; deploying; reverting a deployment. **Write procedures**: For each use case, develop instructional content, including: "happy path" procedures that can be followed by anyone familiar with the product generally; examples; troubleshooting guides; and for new users, tutorials. #### Reorganize the documentation site Right now different types of documentation (conceptual/architectural; instructional; reference) for different user roles are intermixed throughout the documentation site. **Organize by role and task** The site should be reorganized based on an overarching principle of grouping together documentation needed by a particular user role for a particular set of tasks. This sounds daunting, but it's the schema behind a traditional developer documentation suite, which can be used as a model. For an example of such a doc suite, see [this blog post](https://expertsupport.com/library/the-ideal-documentation-suite-for-software-developers/). Or [this one](https://expertsupport.com/library/quick-and-easy-document-specifications/) on how to think about a doc specification. **Provide adequate navigation signals** Reorganizing the site will make the documentation more usable. Not to be overlooked is the companion task of making the documentation *findable*. This involves creating adequate tables of contents (TOCs), indexes, and a glossary to help navigate the site. Much of this is automated by the static site generator (currently *Docusaurus*), but it's the writer's responsibility to assure that these navigation aids are adequate. ## Contributor documentation | Criteria | 1 | 2 | 3 | 4 | 5 | | --- | --- | --- | --- | --- | --- | | Communication methods documented | | | | :heavy_check_mark: | | | Beginner friendly issue backlog | | | | :heavy_check_mark: | | | “New contributor” getting started content | | | :heavy_check_mark: | | | | Project governance documentation | | | | | :heavy_check_mark: | Scale: - 1 = (Is not present or requires significant work) - 3 = (Is present, but needs work) - 5 = (Is executed extremely well or no improvement required) ### Comments A unique problem with Backstage is that user and contributor roles exist on a spectrum; plugins designed or modified to serve a particular organization can be contributed to the Backstage project, or can originate there in anticipation of a particular organization's need. As a result, documentation for project contributors is intermingled, and easily confused, with instructions for admin users trying to expand functionality by modifying or adding code, especially plugins. #### Communication methods documented Communication channels are clearly documented on the [Community](https://backstage.io/community) page of the website, including **message channels**, **newsletters** and **adoption meetings**. There is some minor conflation of commercially sponsored content on the community page. The **[GitHub](https://github.com/backstage/backstage) repository** is directly linked from the main menu. There are 22 related repositories listed on the [Backstage project page](https://github.com/backstage). A little digging is required to suss out the purpose of some of these projects. Examples: https://kubernetes.io/community/ #### Beginner friendly issue backlog The backlog is robustly **triaged** and documented. A **"good first issue"** label is available and prominently recommended. Issues are **well documented** with complete descriptions. There are quite a few **stale backlog items** open in the backlog list. Many, if not a majority, of these seem to be plugin requests. #### New contributor getting started content The Backstage OSS **community** is visible and accessible on a [community page](https://backstage.io/community) reached via a top-level menu item on the website. There is an active [Discussions](https://github.com/backstage/backstage/discussions) board in the GitHub repo. **[Contributor guidelines](https://github.com/backstage/backstage/CONTRIBUTING.md)** are provided. **Help** is available in any of the discussion groups and through a [community page](https://github.com/backstage/community) on GitHub. Help resources are not linked from the Getting Started documentation. Examples: * https://github.com/helm/community * https://github.com/backstage/community #### Project governance documentation Goverance is clearly documented in [GOVERNANCE.md](https://github.com/backstage/backstage/blob/master/GOVERNANCE.md) Examples: * https://github.com/kubernetes/steering ### Recommendations As an open source project, Backstage looks healthy and well run. The only recommendation here is to disentagle the contributor documentation from the product documentation, as described in the [Information architecture recommendations](#Recommendations). ## Website | Criteria | 1 | 2 | 3 | 4 | 5 | | --- | --- | --- | --- | --- | --- | | Single-source for all files | | | :heavy_check_mark: | | | | Meets min website req. (for maturity level) | | :heavy_check_mark: | | | | | Branding and design | | | | :heavy_check_mark: | | | Case studies/social proof | | | :heavy_check_mark: | | | | Maintenance planning | | :heavy_check_mark: | | | | | A11y plan & implementation | | | | :heavy_check_mark: | | | Mobile-first plan & impl. | | | :heavy_check_mark: | | | | HTTPS access & HTTP redirect | | | | | | | Google Analytics 4 for production only | | | | | | | Indexing allowed for production server only | | | | | | | Intra-site / local search | | | | | | | Account custodians are documented | | :heavy_check_mark: | | | | Scale: - 1 = (Is not present or requires significant work) - 3 = (Is present, but needs work) - 5 = (Is executed extremely well or no improvement required) ### Comments #### Single-source requirement The source files for the technical documentation reside in a single directory of the Backstage GitHub repo. There is no separate **website repo**. It's not immediately clear whether this includes the entire website or just the **Docs** section. TBD The strategy for **generating the docs** is documented but obscure. Again, it's not clear if this is for the **Documentation* section only. TBD #### Minimal website requirements Listed and acknowledged below are the (cumulative) _minimal_ website requirements for projects based on their [maturity level][]: sandbox, incubating, graduated and archived. | Maturity | Requirement | Met? | | --- | --- | --- | | Sandbox | Majority of [Website guidelines](../docs/website-guidelines-checklist.md) satisfied | :heavy_check_mark: | | Sandbox | [Docs assessment][] [submitting a request][service desk] completed. | :heavy_check_mark: | | Incubating | All [Website guidelines][] satisfied | | | Incubating | Request docs (re-)assessment through CNCF service desk | :heavy_check_mark: | | Incubating | **Project doc**: stakeholders (roles) identified and doc needs documented | | | Incubating | **Project doc**: Hosted directly | :heavy_check_mark: | | Incubating | Comprehensive, addressing most stakeholder needs | | | Graduated | [Docs assessment][]: all assessment follow-through actions are complete | | | Graduated | **Project documentation** fully addresses needs of key stakeholders | | | Archived | The website repo is in an [archived state][] | | | Archived | Archived status of the project is obvious to site visitors | | | Archived | Link to successor project website and/or migration documentation (if it exists) | | [archived state]: https://docs.github.com/en/repositories/archiving-a-github-repository/archiving-repositories [docs assessment]: /assessments/howto.md [maturity level]: https://github.com/cncf/toc/tree/main/process#ii-stages---definitions--expectations [service desk]: https://servicedesk.cncf.io [single-source requirement]: #single-source-requirement [website guidelines]: /howto/website-guidelines-checklist.md #### Usability, accessibility and devices The website is **usable from mobile**. Doc pages **are readable**. Most navigation features are **accessible from mobile**. Backstage is probably not a good candidate for a **[mobile-first] design**. [mobile-first]: https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Responsive/Mobile_first [Accessibility][] has not yet been assessed. TBD [accessibility]: https://developer.mozilla.org/en-US/docs/Web/Accessibility #### Branding The Backstage **brand** is easily recognizable through the logo and color scheme. The scheme is **used consistently** across the website and docs. The website **typography** is easy to read. Examples: * https://helm.sh/ #### Case studies/social proof **Case studies** and **testimonials** are not prominent and are not readily findable from the website. There is no **logo wall** of participating organizations. The project has an **active blog**,**Community discussions** are available on the website. Examples: * https://www.fluentd.org/testimonials (user testimonials) * https://goharbor.io/ (logo wall) * https://blog.rook.io/ (blog) #### SEO, Analytics and site-local search TBD SEO helps users find your project and it's documentation, and analytics helps you monitor site traffic and diagnose issues like page 404s. Intra-site search, while optional, can offer your readers a site-focused search results. We evaluate on the following: * Analytics: - Is analytics enabled for the production server? - Is analytics disabled for all other deploys? - If your project used Google Analytics, have you migrated to GA4? - Can Page-not-found (404) reports easily be generated from you site analytics? Provide a sample of the site's current top-10 404s. * Is site indexing supported for the production server, while disabled for website previews and builds for non-default branches? * Is local intra-site search available from the website? * Are the current custodian(s) of the following accounts clearly documented: analytics, Google Search Console, site-search (such as Google CSE or Algolia) #### Maintenance planning The **website tooling** (Docusaurus static site build) is well supported. Cultivation of website maintainers from within the community is unknown. TBD As far as I know, **site build times** are reasonable and site maintainers have sufficient **permissions**. TBD Examples: * http://kubernetes.io #### Other The website is served via **HTTPS**. I don't know if **HTTP** access redirects. TBD ### Recommendations TBD ## Recommendations The top documentation concerns for this project are: - Defining stakeholder roles and disentangling amibuous roles. - Completing instructional documentation for all stakeholder roles, including project contributors. - Organizing and "signposting" documentation by role and task so that stakeholders can find documentation that supports their roles' activities. (Analysis to actionable tasks and issues TBD)

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully