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
    --- title: Backstage tech docs assessment notes tags: backstage --- # Overview This document contains notes about the CNCF Backstage documentation. These are working notes, taken as I reviewed the existing Backstage documentation and website. They are not intended to be a polished report of any kind. The ultimate goal of this work is to deliver an assessment of the Backstage documentation as described in the [CNCF assessment guidelines](https://github.com/cncf/techdocs/tree/main/assessments). When complete, the assessment will be included in GitHub as a separate document with the other CNCF tech doc assessments (in that same GitHub directory). The assessed Backstage documentation includes: - The Backstage website - The technical documentation - The GitHub repo The assessment does not evaluate the [Spotify Backstage website](https://backstage.spotify.com/), which is a page for commercial Backstage plugins offered by Spotify. # General Comments This section discusses topics that concern the documentation as a whole. These include documentation quality metrics, information architecture, and analyses of documentation users and objectives. ## Documentation Quality One way of assessig the overall documentation is evaluating documentation quality metrics, including: - Completeness - what's missing? - Clarity - is information understandable and interpretable? - Findability - is anything hidden, mislabeled, or otherwise obscured? - Effectiveness - does the documentation enable the user to fulfill their goals? ## Information Architecture 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 Backstage as an organizational contributor (coder, DevOp, tech writer) to catalog , create, or document software. 2. Administer a Backstage instance ("app" in Backstage nomenclature), including installation, deployment, basic configuration, and software upgrades. 3. Customize a Backstage app, including installing plugins and advanced changes to configuration files. 4. Extend a Backstage app, including writing plugins and modifying existing plugins. 5. Modify or extend the Backstage platform. This complexity necessitates clear definitions of roles so that use cases can be documented, indexed, found, and used. The five levels described above suggest that documentation should be organized under at least five roles: 1. Using Backstage for software development: end user. 2. Installing and maintaining a Backstage app for an organization: IT sysop/admin. 3. Modify a Backstage app: Backstage admin. 4. Extend a Backstage app: DevOp. 5. Extend the Backstage platform: project contributor. Some of these roles might be combined; for example, the administrator responsible for maintaining the Backstage app (2) could very well be responsible for extending and configuring it for new projects (3). Nonetheless, the roles have distinct tasks that should be documented in separate guides. ## Users and Objectives User roles should be defined in conjunction with objectives. Ideally, techncal objectives (what does the software do?) should be derived from business objectives (what is the software for?). Technical objectives differ depending on role. # Existing Website and Documentation This is a survey of the existing documentation. It includes the [product website](https://backstage.io), including the technical documentation proper (located under the [Docs](https://backstage.io/docs/overview/what-is-backstage) menu item on the website), and the associated [GitHub repos](https://github.com/backstage). ## Landing Page (Not the docs landing page, but the project landing page) - Clean design, consistent color palette and style. - Briefly sells "Why Backstage?" - Organized by product/component – Software Catalog, Software Templates, Backstage TechDocs, Backstage Search Platform, Backstage Kubernetes, plugins ### Software Catalog ### Software Templates ### Backstage TechDocs ### Backstage Search Platform ### Backstage Kubernetes Link is to a blog post. This is a core feature; it should be documented in the main documentation website. The blog post is from January 2021. ### Plugins Link button says "Contribute". This confuses learning about plugins with jumping in as a code contributor. ## Menu The banner menu. Contents: [GitHub](#Github) | [Docs](#Docs) | [Plugins](#Plugins) | [Blog](#Blog) | [Releases](#Releases) | [Demos](#Demos) | [Community](#Community) ### GitHub This menu item links to: https://github.com/backstage/backstage #### Issues Links to the Backstage platform GitHub page. Arguably should lead to an index of all the GitHub repos under https://github.com/backstage. This is a relatively minor issue with pros and cons to every alternative. #### Recommendations Alternatives: - Create a landing page that is a curated index of Backstage repos. Pros: ease of use; findability. Cons: high maintenance. - Link to the https://github.com/backstage page. Pros: overview of all Backstage repos; no separate maintenance needed. Cons: clutter. Many of the repos are specialized and irrelvant to a general audience. - Leave as-is. Pros: direct link to what is probably the target for most users. Cons: leaves no way to know about or access the other repos. ### Docs Links to ["What is Backstage?"](https://backstage.io/docs/overview/what-is-backstage/) in the technical documentation overview. See [Documentation Sub-site](#Documentation-Sub-site). ### Plugins Links to the ["Plugin Marketplace"](https://backstage.io/plugins). These link to their corresponding docs in the technical documentation. The plugin "Explore" buttons link to the plugin's home or code repo pages. #### Issues Not sure the core features need to be on this page; it's not where I'd look for them. The plugins are listed in tile format. This takes a lot of room; there are well over a hundred plugins. #### Recommendations Consider a list format instead of tiles, or at least make it an option. Tiling is more appropriate for a few featured items, not an entire catalog. ### Blog Links to an active #### Issues Comments are turned off for the blog posts. #### Recommendations Write a short intro to the blog, explaining why comments are disallowed and who the bloggers are. Provide a link to a community where open discussion takes place. ### Releases Release notes. Links directly to the most recent release notes. #### Issues Direct link provides no context: no explanation of release strategy or cadence, no description of release note format. #### Recommendations Insert a Release Notes landing page that address the above issues. Also suggest a link to an explanation of semantic versioning. Also consider prepending a link to this context material to every version's release notes. ### Demos Links to a number (8) of demo videos. #### Issues The first demo's intro blurb also contains an overall intro to the demos, with links to other demos. #### Recommendations Separate the demo introduction and meta-info from the first demo blurb. Put it before the demos. ### Community Lists Backstage community resources by category: - Official community platforms for the Backstage OSS community. - "Official Backstage Initiatives". - "Community Initiatives", two community resources hosted by Roadie.io (that duplicate "Official" resources). - "Trainings and Certifications", containing one resource, a Linux Foundation course (labeled "Open Mic Meetup"; cut-paste error?). - "Commercial Partners" #### Issues Not sure I'd consider all of these "community". The "Community Initiatives" section is problematic: - It's unlabeled commercial partner content - Its offerings are duplicates of "Official" content from the previous section #### Recommendations Move the "Communities Initiatives" items under Roadie.io in "Commercial Partners". ## Footer The footer content needs to be reorganized. It's divided into unconventional categories (and redundant with the TOC menu) and seems to be based on guesswork about what site visitors might want to see. Look at (almost) any commercial or OSS software footer for better choices. ### Docs "Designing for Backstage" is ambiguous. Use the word "contributor" to avoid this. ### Community ### More 3 of 4 are Spotify links. Just label it "Spotify" and put "Github" under "Community". ### Tag "Made with :heart: at Spotify". Acknowledgement that the product was developed at Spotify is fine, but this is confusing: - Is this saying that the page was made at Spotify, or the product? This is often where site generator software or a website development service drops a brand mention (I don't like that practice either, but that's another issue). - This detracts from the benefit of Backstage being an OSS project. - There is no mention of CNCF. There should be. (Linux Foundation is acknowledged in the copyright notice.) # Documentation Sub-site Intro on landing page: What is Backstage? and Benefits (good: benefits listed for user roles). ## Overview ### Architecture Overview #### Issues Backstage is represented in the documentation as consisting of a few core features (software catalog, tech docs, templates) and a library of plugins (Kubernetes, CI, etc.) Core components are implemented as plugins. The architecture overview says that the UI ties the plugins together. #### Recommendation It might be helpful to describe this architecture even more explicitly. Is there a procedure for promoting a plugin to core component status (as the Kubernetes plugin seems to be in process right now)? If so, document this procedure, both as an explanatory description in the user doc and a how-to in the contributor doc. Add to [Release and Versioning Policy](#Release-and-Versioning-Policy). ### Roadmap Might be better moved to the release notes. ### Vision Should be at or near the top of the Overview. ### The Spotify Story This belongs on the website somewhere, but not in the tech docs. ### Strategies for Adopting Probably belongs as part of a larger Best Practices section. In general it seems like a lot of the material in the Overview mixes together information relevant to users and contributors (Strategies for Adopting, Release and Versioning Policy, Trust Model, Support and Chat Room). Another argument for making to doc user-centric. ### Release and Versioning Policy ### Trust Model The Trust Model could be the basis for a contributor user analysis (which should be in the contributor documentation, separate from the user documentation). A separate analysis is also needed for users and properly belongs here in the user documentation. ## Getting Started Add an intro that outlines users and use cases. For an organization, the docs recommend having a group to administer Backstage, so administrator is one distinct user. Setup and config instructions should be geared to that user. ### Getting Started Rename to "Installing" Begins with a claim that most users will want a standalone installation. Explain first what user types exist and which ones would want a standalone installation. ### Getting Started, Configuring Backstage Three consecutive headings with the same name are two too many. Rename to "Configuring". Registering an Existing Component: Using the Backstage repo as an example is needlessly confusing. Backstage should develop a dedicated example repo that does nothing but provide a dummy component to add. ### Create an App Again here, user analysis would help. [Elsewhere](https://backstage.io/docs/overview/architecture-overview) "App" is defined as an instance or installation of Backstage. This should be reiterated here. ### Keeping Backstage Updated Should be part of the admin guide. ### Key Concepts These are component technologies. Should be listed in the admin guide as dependencies. ### Contributors This should be its own guide. Put all the contributor information in one place. (Any information needed by both contributors and users can be referenced from the Contributor documentation. In general, don't duplicate information, especially reference information.) ### Getting Involved Should be part of Contributors Guide. ### Backstage Project Structure Should be part of contributors Guide. See notes on GitHub repos under [Menu](#Menu). ## Local Development This implies remote or distributed development. There needs to be an explanation of the distinction, again with an explanation that explains users and use cases for each. This seems to be contributor documentation, but it's not entirely clear. Might be admin? Get clarification. This is from the tech docs > Core Features > [Software Catalog](https://backstage.io/docs/features/software-catalog/): > ... the Software Catalog enables two main use-cases: > > 1. Helping teams manage and maintain the software they own. Teams get a uniform view of all their software; services, libraries, websites, ML models — you name it, Backstage knows all about it. > 2. Makes all the software in your company, and who owns it, discoverable. No more orphan software hiding in the dark corners of your software ecosystem. ### Debugging Backstage Logging levels. This should be in the Contributor info and in the Troubleshooting section for instances. ## Core Features ### Software Catalog A lot of good information here. Most of it belongs in an architecture overview and in reference materials (YAML file format, e.g.). #### How It Works Lists use cases. These should be in overview. #### Extending the Model "The Backstage catalog entity data model is based on the Kubernetes objects format, and borrows a lot of its semantics as well." You buried the lede! This should be at the front of the model information. #### Creating the Catalog Graph "The Software Catalog in Backstage is intended to capture human mental models using entities and their relationships rather than an exhaustive inventory of all possible things." More good conceptual information! ## Integrations ## Plugins ## Configuration ## Auth and Identity ## Permissions ## Deployment ## Designing for Backstage Who is "we", the Backstage Design Team? Is this a Spotify unit? CNCF? Need an explanation: who are the entities described in this section? Again, this is about defining the stakeholders so that the documentation can be targeted. Or in the case of contributors, define roles to allocate responsibilities. "External" and "internal" refer to Spotify? Includes "How to Contribute" -- again, needs to be reorganized so that the user and contributor material isn't intermixed. A product used to manage software projects is confusing enough without throwing its own development on top without warning! ## API Reference ## Tutorials ## Architecture Decision Records ## FAQ ## Experimental Backend System ## Accessibility # Features The main website landing page has sections for the core features. Not sure this is the best way to organize the first page potential users will see. Setting that aside for the moment, though, below are the features. ## Software Catalog "Learn More About the Software Catalog > More" button https://backstage.io/docs/features/software-catalog/ ### Getting Started (section) Assumes you've done [**Getting Started with Backstage**](#Getting-Started-With_Backstage) and have the server installed already. (OK, to be fair, it says "If you've followed ...". But still blindsided.) # Demo Server It's not technically in the scope of the doc assessment, but the [demo server](https://demo.backstage.io/docs?filters%5Buser%5D=all) has a serious documentation issue: The demo page does not properly demonstrate the [TechDocs](https://backstage.io/docs/features/techdocs/) feature. Rather than include integrated project documentation for one or more code projects, the only use of the TechDocs feature on the demo server is a link to the Backstage documentation site. There are numerous issues with this: 1. It demos only a small part (basic display) of the Backstage TechDocs core feature. 2. It fails to demonstrate integration of Backstage TechDocs with other plugins, especially the Software Catalog. 3. It is self-referential and therefore unnecessarily confusing (in the same way using Backstage as an example in [Getting Started](#Getting-Started1) is self-referential and confusing). 4. According to the Backstage TechDocs feature [press release](https://backstage.io/blog/2020/09/08/announcing-tech-docs/), TechDocs is "... the most used plugin at Spotify by far". Its profile on the demo server belies this prominence. 5. It speaks negatively about the importance of documentation to the Backstage development team. # Glossary The glossary is in a separate document [here](https://hackmd.io/uBc4tu8NSvycMRfFGL6cAg). ## Existing Backstage Glossaries These are the only glossaries I could find on the site. They are inadequate and in any case the project should have an omnibus glossary as part of the documentation. https://backstage.io/docs/overview/glossary/ Contains only the definitions of the user profiles. https://backstage.io/docs/auth/glossary/ Auth and identity Glossary. 9 definitions, most to do with OAuth. https://backstage.io/docs/local-dev/cli-overview/#glossary CLI glossary. 5 definitions having to do with packaging. https://backstage.io/docs/overview/architecture-overview/#terminology Architecture overview terminology 3 definitions: Core, App, Plugins ## Key Concepts https://backstage.io/docs/getting-started/concepts Not really "concepts", but component technologies: CHANGELOG, Docker, React, YAML, etc. # Website and Doc Infrastructure The website and documentation source is in the `backstage/backstage` GitHub repository. The website and documentation are rendered using the *Docusaurus* static site generator. The structure of the doc in the source repo is not obvious. Here's a selective listing of the directory hierarchy: ``` backstage/backstage # main repo | docs # the documentation site: /docs | | ... # contains subdirecories for doc sections | microsite # website directory - contains various Docusaurus files | | docusaurus.config.js # main Docusaurus config file | | blog # blog entries: /blog | | build # the compiled doc site (# cd microsite; yarn build) | | data | | | on-demand # tiles for past community session videos | | | plugins # the plugin tiles on the plugins page: /plugins | | src # source for the website pages | | | components # code for website components | | | pages # the website - most of the pages except for the documentation: /community, /demos, etc. ``` # Next Steps (9/1/2023) - Complete the Website portion of the Backstage doc assessment. - Get an appropriate stakeholder coalition together to identify the user roles for Backstage. - Same coalition can support idenification of use cases (work can probably be done by a tech writer). - Outline a new documentation structure based on the user roles (tech writer). -

    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