Create 0008-backstage.md (#189)

* Create 0008-backstage.md

Added Backstage doc assessment.

Signed-off-by: dwelsch-esi <116022979+dwelsch-esi@users.noreply.github.com>

* Tested documentation build procedure. Updated assessment with findings.

Signed-off-by: dwelsch-esi <116022979+dwelsch-esi@users.noreply.github.com>

* Update Backstage assessment website info

Added information about site mapping based on Docusaurus plugin documentation.

Signed-off-by: dwelsch-esi <116022979+dwelsch-esi@users.noreply.github.com>

* updated the website section with appropriate info

Signed-off-by: thisisobate <obasiuche62@gmail.com>

* Update accessibility section

Signed-off-by: thisisobate <obasiuche62@gmail.com>

* Completed website assessment and recommendations.

Updates and edits to complete the website assessment per @thisisobate.
Other minor edits.

Signed-off-by: dwelsch-esi <116022979+dwelsch-esi@users.noreply.github.com>

* Responses to Backstage doc assessment comments

Responses to initial review comments on the Backstage documentation assesment (0008-backstage.md).

Signed-off-by: dwelsch-esi <116022979+dwelsch-esi@users.noreply.github.com>

* Create user-roles.md

Add a short document to define user roles (personas) for the purpose of organizing task-based documentation.

Signed-off-by: dwelsch-esi <116022979+dwelsch-esi@users.noreply.github.com>

* Move 0008-backstage.md to assessments/0008-backstage

Move to project-specific subdirectory.

Signed-off-by: dwelsch-esi <116022979+dwelsch-esi@users.noreply.github.com>

* Add survey of existing doc pages

Add CSV file: survey of existing Backstage doc web pages. 

Signed-off-by: dwelsch-esi <116022979+dwelsch-esi@users.noreply.github.com>

* Add backstage insights summary doc

Add Backstage Insights summary document describing findings from Spotify's survey about Backstage adoption.

Signed-off-by: dwelsch-esi <116022979+dwelsch-esi@users.noreply.github.com>

* In progress: User roles, recommendations.

* In progress - writing implementation suggestions.

* In progress. Writing implementation recs.

* In progress. Writing Implementation section.

* In progress - fixed external references

Signed-off-by: dwelsch-esi <116022979+dwelsch-esi@users.noreply.github.com>

* Update website action items

Update website recommendation breakdown.

Signed-off-by: dwelsch-esi <116022979+dwelsch-esi@users.noreply.github.com>

* Final changes before merging PR.
  - Separate analysis and implementation.
  - Clean up references.
  - Revise intro material.

* Changes prior to PR merge
  - Separate analysis and implementation
  - Fix references
  - revise intro

* Changes prior to PR merge
  - Separate analysis and implementation
  - Fix references
  - revise intro

* adding README to backstage assessment

Signed-off-by: Nate W <natew@cncf.io>

---------

Signed-off-by: dwelsch-esi <116022979+dwelsch-esi@users.noreply.github.com>
Signed-off-by: thisisobate <obasiuche62@gmail.com>
Signed-off-by: Nate W <natew@cncf.io>
Co-authored-by: thisisobate <obasiuche62@gmail.com>
Co-authored-by: Nate W <natew@cncf.io>
This commit is contained in:
dwelsch-esi 2023-11-02 13:49:32 -07:00 committed by GitHub
parent 78ef77a70f
commit 6dc3441e63
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 1038 additions and 0 deletions

View File

@ -0,0 +1,10 @@
---
title: Backstage TechDocs Analysis
tags: backstage
---
- [Backstage Analysis](backstage-analysis.md)
- [Backstage Implementation](backstage-implementation.md)
- [User Roles](user-roles.md)
- [Backstage Insights Summary](backstage-insights-summary.md)
- [Backstage Docs Survey](backstage-doc-survey.csv)

View File

@ -0,0 +1,498 @@
---
title: Backstage Documentation Analysis
tags: backstage
---
Prepared by: Dave Welsch ([@dwelsch-esi][dwelsch-esi-github])<br>
Date: 2023-09-01
Most recent update: 11/02/2023
# Introduction
This document analyzes the effectiveness and completeness of the [Backstage][backstage-io] open source software (OSS) project's documentation and website. It is funded by the CNCF Foundation as part of its overall effort to incubate, grow, and graduate open source cloud native software projects.
According to CNCF best practices guidelines, effective documentation is a prerequisite for program graduation. The documentation analysis is the first step of a CNCF process aimed at assisting projects with their documentation efforts.
## Purpose
This document was written to analyze the current state of Backstage documentation. It aims to provide project leaders with an informed understanding of their project documentation and to outline an actionable plan for improvement.
This document:
- Analyzes the current Backstage technical documentation and website
- Compares existing documentation against the CNCFs standards
- Recommends a program of key improvements with the largest return on investment
## Scope of analysis
The documentation discussed here includes the entire contents of the website (which contains the technical docs, as well as documentation for contributors and users on the Backstage GitHub repository. The analysis does not include Spotify's Backstage website at https://backstage.spotify.com/.
The Backstage website and documentation are written in Markdown and are compiled using the Docusaurus static site generator. The site's code is stored on the Backstage GitHub repo.
**In scope:**
- Website: https://backstage.io
- Documentation: https://backstage.io/docs
- Contributor documentation:
- https://github.com/backstage/backstage/README.md
- https://github.com/backstage/backstage/CONTRIBUTING.md
- Website configuration (Docusaurus): https://github.com/backstage/backstage/microsite
- Website content: https://github.com/backstage/backstage/docs
**Out of scope:**
- Backstage plugins: https://backstage.spotify.com/
## How this document is organized
This document is divided into three sections that represent three major areas of concern:
- **Project documentation:** concerns documentation for users of the Backstage software, aimed at people who intend to use it
- **Contributor documentation:** concerns documentation for new and existing contributors to the Backstage OSS project
- **Website:** concerns the mechanics of publishing the documentation; includes branding, website structure, and maintainability
Each section begins with summary ratings based on a rubric with appropriate [criteria][cncf-doc-criteria] for the section, then proceeds to:
- **Comments**: observations about the existing documentation, with a focus on how it does or does not help Backstage users achieve their goals.
- **Recommendations**: suggested changes that would improve the effectiveness of the documentation.
An accompanying document, [backstage-implementation.md][implementation-doc], attempts to break the recommendations down into concrete actions that can be implemented by project contributors. Its focus is on drilling down to specific, achievable work that can be completed in constrained blocks of time. Ultimately, the implementation items should be tracked as a series of Github [issues][backstage-issues].
## How to use this document
Readers interested only in actionable improvements should skip this document and read [backstage-implementation.md][implementation-doc].
Readers interested in the current state of the documentation and the reasoning behind the recommendations should read this document or the section pertaining to their area of concern:
- [Project documentation][proj-doc]
- [Contributor documentation][contributor-doc]
- [Website and documentation infrrastructure][website]
### Recommendations, requirements, and best practices
Notwithstanding the fact that this analysis measures documentation against CNCF project maturity standards, in most cases there is more than one way to do things. Few recommendations here are meant to be prescriptive. Rather, recommendations are based on documentation best practices as understood by the reviewers. The recommended implementations represent the reviewers' experience with how apply those best practices. In other words, borrowing terminology from the lexicon of [RFCs][rfc-keywords], the changes described here should be understood as "recommended" or "should" at the strongest, and "optional" or "may" in many cases. Any "must" or "required" actions are clearly denoted as such, and pertain to legal requirements such as copyright and licensing issues.
# Project documentation
| Criteria | 1 | 2 | 3 | 4 | 5 |
| --- | --- | --- | --- | --- | --- |
| Information architecture | | ✔︎ | | | |
| New user content | | | | ✔︎ | |
| Content maintainability | | | ✔︎ | | |
| Content creation processes | | | ✔︎ | | |
| Inclusive language | | | | ✔︎ | |
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: project documentation
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. Administration 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.
### Overall Issues
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.
For example, the [Overview][backstage-io-overview] contains valuable high-level conceptual information, including a list of [benefits][backstage-io-overview-benefits] to particular user roles (engineering managers, developers, platform engineers). This demonstrates awareness of user roles that needs to be extended throughout the documentation.
There are installation and configuration instructions in [Getting Started][backstage-doc-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 analyses 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. In many cases, tasks required of each role are missing, as are instructions for completing these tasks. Instructional material for the most common use cases (**"happy path"**) should support learning (tutorials) as well as doing (procedures). Where instructional content exists, it is often:
- Not aimed at a defined user,
- Not clearly identified as instructional content, or
- Intermingled or confused with reference information (for example, many configuration "how-tos" are in the form of a list of YAML properties).
**Escalation** options (FAQs, Troubleshooting docs) exist for most Backstage functionality. As well, the contributor community provides robust support (GitHub [issues][backstage-issues] and discussion channels).
**Reference information** exists, including for **APIs**, but is scattered throughout the documentation.
**Organizing individual pages**: A [survey of the existing documentation][doc-survey] suggests a general issue with many individual pages: trying to include too much information on one page. Often a task is mixed with reference information or with more conceptual information than is necessary to support the task. Effective documentation focuses on one type of information per page, especially when presenting instructional content: the page should present only what information is necessary to do the task, and nothing else. Examples of information that should be on a different (but linked) page: Explanations of the task's purpose; command references (except the exact commands needed to complete the task); and examples, such as config file entries (again, except as necessary).
It's not clear that the documentation is completely **up to date**, although [release notes][backstage-doc-rn] 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][backstage-doc-getting-started] instructions don't distinguish between administrator and developer end-user roles. [Deployment][backstage-doc-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][backstage-demo].
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://github.com/kubernetes/website
### Content creation processes
The procedures for duplicating the documentation locally and for contributing documentation are [documented][backstage-microsite] but are [not easily findable][backstage-doc-contrib].
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][inclusive-naming] website.
The website makes occasional use of words like "simple" and "easy", but avoids explicitly ableist language.
## Recommendations: project documentation
The following sections contain recommendations for improvements to the Backstage project documentation. These recommendations are for broad improvements that would greatly increase documentation effectiveness. For details, see [Implementation][implementation]
### 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 the nature of Backstage makes it especially important here.
The example roles given in the [comments][proj-doc-comments] have been carried over to the [Implementation][implementation] section. Contributors with a greater understanding of how Backstage is used should feel free to modify this list if it serves the needs of the project, keeping in mind that the purpose of the user roles is to organize the task-based documentation.
### 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][esi-doc-suite]. Or [this one][esi-doc-spec] on how to think about a doc specification. [This survey of the existing Backstage doc pages][doc-survey] suggests where each page might fit if the doc were reorganized in this manner.
**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 | | | | ✔︎ | |
| Beginner friendly issue backlog | | | | ✔︎ | |
| “New contributor” getting started content | | | ✔︎ | | |
| Project governance documentation | | | | | ✔︎ |
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: contributor documentation
A unique feature of 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][backstage-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][backstage-backstage] repository** is directly linked from the main menu. There are 22 related repositories listed on the [Backstage project page][backstage-github-project]. 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, perhaps 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][backstage-community] reached via a top-level menu item on the website. There is an active [Discussions][backstage-discussion] board in the GitHub repo.
**[Contributor guidelines][backstage-contrib]** are provided.
**Help** is available in any of the discussion groups and through a [community page][backstage-github-community] on GitHub. Help resources are not linked from the Getting Started documentation.
Backstage is listed in the [Clotributor][clotributor] tool.
Examples:
* https://github.com/helm/community
* https://github.com/backstage/community
### Project governance documentation
Governance is clearly documented in [GOVERNANCE.md][backstage-governance].
Examples:
* https://github.com/kubernetes/steering
## Recommendations: contributor documentation
As an open source project, Backstage looks healthy and well run.
The only recommendation here is to disentangle the contributor documentation from the product documentation, as described in the [Information architecture recommendations][info-arch-recommend].
# Website
| Criteria | 1 | 2 | 3 | 4 | 5 |
| --- | --- | --- | --- | --- | --- |
| Single source for all files | | | ✔︎ | | |
| Meets min website req. (for maturity level) | | ✔︎ | | | |
| Branding and design | | | | ✔︎ | |
| Case studies/social proof | | | ✔︎ | | |
| SEO, Analytics, and site-local search | | | | | ✔︎ |
| Maintenance planning | | | ✔︎ | | |
| A11y plan & implementation | | | | ✔︎ | |
| Mobile-first plan & impl. | | | ✔︎ | | |
| HTTPS access & HTTP redirect | | | | | ✔︎ |
| Google Analytics 4 for production only | | | | | ✔︎ |
| Indexing allowed for production server only | | | | | ✔︎ |
| Intra-site / local search | | | | | ✔︎ |
| Account custodians are documented | ✔︎ | | | | |
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: website
### Single-source requirement
The source files for the website and technical documentation reside in two separate directories of the Backstage GitHub repo, built as a single unit by *Docusaurus*. There is no separate **website repo**.
The strategy for **generating the docs** is documented but obscure.
### Minimal website requirements
Listed and acknowledged below are the (cumulative) _minimal_ website requirements for projects based on their [maturity level][cncf-maturity-stages]: sandbox, incubating, graduated and archived.
| Maturity | Requirement | Met? |
| --- | --- | --- |
| Sandbox | Majority of [Website guidelines][cncf-website-guidelines] satisfied | yes |
| Sandbox | [Docs analysis][cncf-docs-howto] [submitting a request][cncf-servicedesk] completed. | yes |
| Incubating | All [Website guidelines][cncf-doc-criteria] satisfied | no |
| Incubating | Request docs (re-)analysis through CNCF [service desk][cncf-servicedesk] | yes |
| Incubating | **Project doc**: stakeholders (roles) identified and doc needs documented | no |
| Incubating | **Project doc**: Hosted directly | yes |
| Incubating | **Project doc**: Comprehensive, addressing most stakeholder needs | no |
| Graduated | [Docs analysis][cncf-docs-howto]: all analysis follow-through actions are complete | no |
| Graduated | **Project doc** fully addresses needs of key stakeholders | no |
| Archived | The website repo is in an [archived state][github-archiving] | n/a |
| Archived | Archived status of the project is obvious to site visitors | n/a |
| Archived | Link to successor project website and/or migration documentation (if it exists) | n/a |
### Branding and design
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
**Analytics**
- **Analytics** is enabled for the production server using **GA4**.
- Analytics is **disabled for all other deploys**.
- **Page-not-found (404) reports** are easily generated from the site.
**Site indexing**
**Indexing** is supported for the **production server**. Indexing is **disabled for previews** and **non-default builds** automatically with `plugin-sitemap`.
**Search**
Local intra-site **search** is available from the website.
**Custodians**
The current **custodian(s)** of the following accounts are **not** 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 inadequate.
I tested the instructions for using `yarn` to build the website. The **site build time** was under 30 seconds for a local build on a Mac M1. Maintainers have sufficient **permissions** to download and build the doc. Checking in the doc requires a PR and approval from a project maintainer.
Examples:
* http://kubernetes.io
### Usability, accessibility and devices
Backstage.io is partially conformant with [WCAG 2.1 level AA][wcag-understanding] with respect to **accessibility**.
## Recommendations: website
### Single-source repo
The documentation is isolated from the code by virtue of being in its own directories; however, its location and build instructions are hard to find. Write explicit instructions for contributing to documentation. Make these instructions prominent in the contributor guidelines. Emphasize the importance of keeping the documentation directories separate from code.
An even better plan would be to extract the Docusaurus configurations and website documentation to their own repository. The Backstage project already has many repositories. Creating one more for documentation would make the project organization cleaner and make it easier to contribute to the project documentation.
### Minimum website requirements for maturity level
To meet the maturity level standards for a graduated project, the following aspects should be updated as described in [Project documentation][proj-doc]:
- Identify the project and product stakeholder roles.
- Analyze stakeholder needs.
- Update and reorganize the documentation with respect to user orientation and task-based support of use cases.
### Case studies/social proof
Implement a **logo wall** of participating organizations, with links to testimonials and/or case studies.
### SEO, Analytics and site-local search
Add documentation and website custodians to the project maintainer lists in `OWNERS.md` and wherever else project maintainers are documented.
### Maintenance planning
Add a prominent call for website and documentation maintainers in the project introduction alongside the call for code maintainers.
### Accessibility
Improve compliance in these areas:
- **Images** should have alternative text.
- **Links** should have discernible text.
<!--- References --->
[backstage-backstage]: https://github.com/backstage/backstage
[backstage-community]: https://backstage.io/community
[backstage-contrib]: https://github.com/backstage/backstage/CONTRIBUTING.md
[backstage-demo]: https://demo.backstage.io/catalog?filters%5Bkind%5D=component&filters%5Buser%5D=owned
[backstage-discussion]: https://github.com/backstage/backstage/discussions
[backstage-doc-contrib]: https://backstage.io/docs/getting-started/getting-involved#write-documentation-or-improve-the-website
[backstage-doc-deployment]: https://backstage.io/docs/deployment/
[backstage-doc-getting-started]: https://backstage.io/docs/getting-started/
[backstage-doc-rn]: https://backstage.io/docs/releases/v1.17.0
[backstage-github-community]: https://github.com/backstage/community
[backstage-github-project]: https://github.com/backstage
[backstage-governance]: https://github.com/backstage/backstage/blob/master/GOVERNANCE.md
[backstage-insights-summary]: ./backstage-insights-summary.md
[backstage-issues]: https://github.com/backstage/backstage/issues
[backstage-io-overview-benefits]: https://backstage.io/docs/overview/what-is-backstage#benefits
[backstage-io-overview]: https://backstage.io/docs/overview/what-is-backstage
[backstage-io]: https://backstage.io
[backstage-microsite]: https://github.com/backstage/backstage/tree/master/microsite
[clotributor]: https://clotributor.dev/
[cncf-doc-criteria]: criteria.md
[cncf-doc-criteria]: https://github.com/cncf/techdocs/blob/main/assessments/criteria.md
[cncf-docs-howto]: https://github.com/cncf/techdocs/blob/main/assessments/howto.md
[cncf-maturity-stages]: https://github.com/cncf/toc/tree/main/process#ii-stages---definitions--expectations
[cncf-servicedesk]: https://servicedesk.cncf.io
[cncf-website-guidelines]: ../../docs/website-guidelines-checklist.md
[dwelsch-esi-github]: https://github.com/dwelsch-esi/
[esi-doc-spec]: https://expertsupport.com/library/quick-and-easy-document-specifications/
[esi-doc-suite]: https://expertsupport.com/library/the-ideal-documentation-suite-for-software-developers/
[github-archiving]: https://docs.github.com/en/repositories/archiving-a-github-repository/archiving-repositories
[implementation-doc]: ./backstage-implementation.md
[inclusive-naming]: https://inclusivenaming.org
[rfc-keywords]: https://www.rfc-editor.org/rfc/rfc2119
[wcag-understanding]: https://www.w3.org/WAI/WCAG21/Understanding/
<!--- internal refs --->
[contrib-doc-rec]: #recommendations-contributor-documentation
[contributor-doc]: #contributor-documentation
[doc-survey]: ./Backstage%20doc%20survey.csv
[implementation]: #implementation
[info-arch-recommend]: #recommendations
[proj-doc-comments]: #comments-project-documentation
[proj-doc-rec]: #recommendations-project-documentation
[proj-doc]: #project-documentation
[user-roles]: #user-roles
[website-rec]: #recommendations-website
[website]: #website

View File

@ -0,0 +1,185 @@
Title,URL,Doc Type,User Role,Use Case,Doc Suite Position,Comment
Overview,,,,,,
What is Backstage?,https://backstage.io/docs/overview/what-is-backstage,concept,adopter,decision,Technical Overview,Introductory
Architecture overview,https://backstage.io/docs/overview/architecture-overview,concept,administrator,deployment,Architecture Overview,"Substantial, in-depth view of architecture"
Roadmap,https://backstage.io/docs/overview/roadmap,concept,administrator,"deployment, maintenance",Release Notes,Should be updated frequently; move to release notes
Vision,https://backstage.io/docs/overview/vision,concept,"contributor, adopter","strategy, sales",White Paper,"Short, high-level statement of vision."
The Spotify Story,https://backstage.io/docs/overview/background,concept,"contributor, adopter","strategy, sales",White Paper,Background info. Move to website.
Strategies for adopting,https://backstage.io/docs/overview/adopting,concept,adopter,decision,Overview,"Would be useful in adoption go/no-go decisions, and in adoption/deployment/configuration."
Release and Versioning Policy,https://backstage.io/docs/overview/versioning-policy,concept,"contributor, adopter","contribute, maintenance","Release Notes, Contributor Instructions",
Backstage Threat Model,https://backstage.io/docs/overview/threat-model,concept,administrator,deployment,"Architecture Overview, Installation Guide",Required by admin to set up security posture
Support and community,https://backstage.io/docs/overview/support,reference,any,"support, decision, contrib","RN, FAQ, KB, Overviews",Should be available to any interested user from almost anywhere
Backstage Glossary,https://backstage.io/docs/overview/glossary,reference,any,any,KB,"Should be available generally, esp. to new users"
Logo assets,https://backstage.io/docs/overview/logos,reference,"contributor, adopter",contribute,,Reference info for contributing designer
Getting Started,,,,,,
Getting Started,https://backstage.io/docs/getting-started/,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",Installation instructions
Getting Started configuring Backstage,https://backstage.io/docs/getting-started/configuration,task,administrator; user,"installation, setup, config","Installation, Setup, and Config Guide; Getting Started Guide","Split: Configuring database, authentication (installation); Creating your first components (getting started)"
Create an App,https://backstage.io/docs/getting-started/create-an-app,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide","How to set up an instance. Might need two setup procedures, one for users and one for admins."
Configuring App with plugins,https://backstage.io/docs/getting-started/configure-app-with-plugins,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",Should go in a chapter of the install guide devoted to installing existing plugins
Customize the look-and-feel of your App,https://backstage.io/docs/getting-started/app-custom-theme,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",Should be a chapter of the install guide
Backstage homepage - Setup and Customization,https://backstage.io/docs/getting-started/homepage,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",
Keeping Backstage Updated,https://backstage.io/docs/getting-started/keeping-backstage-updated,task,administrator,"installation, setup, config",IS&C; RN,Upgrade procedures in admin guide; particular upgrades in release notes
Key Concepts,https://backstage.io/docs/getting-started/concepts,reference,administrator,,,This is a list of software dependencies. Needed by admin. Upgrades needed by each release in RN.
Contributors,https://backstage.io/docs/getting-started/contributors,task,contributor,contribute,Contributor setup guide,"Contributor guide can be limited to GitHub, or a separate contributor guide put on the website"
Getting Involved,https://backstage.io/docs/getting-started/getting-involved,reference,contributor,contribute,Contributor overview,This material belongs in the intro to a contributor guide
Backstage Project Structure,https://backstage.io/docs/getting-started/project-structure,reference,contributor,contribute,Contributor reference,"Structure of the GitHub repo, annotated. Reference for contributors."
Local Development,,,,,,
Overview,https://backstage.io/docs/local-dev/cli-overview,concept,administrator,deployment,Architecture Overview,"This is part of the architecture overview, a discussion of the components of the CLI"
Build System,https://backstage.io/docs/local-dev/cli-build-system,concept,administrator,deployment,Architecture Overview,Description of how the Build system works; belongs in the Architecture Overview
Commands,https://backstage.io/docs/local-dev/cli-commands,reference,administrator; user,use,API Reference,"This is a command reference for the CLI, which seems to be a tool for doing builds of components in Backstage"
Linking in Local Packages,https://backstage.io/docs/local-dev/linking-local-packages,task,user,use,Recipe,This is a technique for testing a build. Goes in a recipe book or use and testing guide.
Debugging Backstage,https://backstage.io/docs/local-dev/debugging,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",Description of how to change the logging level in Backstage.
Core Features,,,,,,
Overview,https://backstage.io/docs/features/software-catalog/,task,user,use,User Guide,Basic catalog tasks. Also a short intro to the catalog (conceptual).
The Life of an Entity,https://backstage.io/docs/features/software-catalog/life-of-an-entity,concept,administrator; user,deployment,Architecture Overview,Detailed description of data ingestion when importing an entity.
Catalog Configuration,https://backstage.io/docs/features/software-catalog/configuration,concept,administrator; user,deployment,Architecture Overview,Additional information for ingesting entities
System Model,https://backstage.io/docs/features/software-catalog/system-model,concept,user,use,User Guide,Describes the model behind various entities. Some of this could go in the Knowledge Base as well maybe.
YAML File Format,https://backstage.io/docs/features/software-catalog/descriptor-format,reference,user,use,User Guide,"Reference to entity descriptors, with examples in JSON."
Entity References,https://backstage.io/docs/features/software-catalog/references,reference,user,use,User Guide,Description of how entities reference other entities
Well-known Annotations,https://backstage.io/docs/features/software-catalog/well-known-annotations,reference,user,use,User Guide,More on entities
Well-known Relations,https://backstage.io/docs/features/software-catalog/well-known-relations,reference,user,use,User Guide,More on entities
Well-known Statuses,https://backstage.io/docs/features/software-catalog/well-known-statuses,reference,user,use,User Guide,More on entities
Extending the model,https://backstage.io/docs/features/software-catalog/extending-the-model,reference,user,use,User Guide,More on entities
External integrations,https://backstage.io/docs/features/software-catalog/external-integrations,reference,user,use,User Guide,More on entities
Catalog Customization,https://backstage.io/docs/features/software-catalog/catalog-customization,task,administrator,deployment,"Installation, Setup, and Config Guide",How to customize the entity display page. A recipe for the site admin
API,https://backstage.io/docs/features/software-catalog/software-catalog-api,reference,administrator; user,use,API Reference,The Entity API. Could be teased apart into a true reference and a set of recipes.
Creating the Catalog Graph,https://backstage.io/docs/features/software-catalog/creating-the-catalog-graph,reference,user,use,User Guide,Describes the catalog model and what is displayed in the UI
Overview,https://backstage.io/docs/features/kubernetes/,concept,user,use,Kubernetes plugin guide,Intro to the 2 Kubernetes plugins
Installation,https://backstage.io/docs/features/kubernetes/installation,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",Could go in the main install guide or in a separate k8s guide
Configuration,https://backstage.io/docs/features/kubernetes/configuration,reference,administrator,"installation, setup, config","Installation, Setup, and Config Guide","Continuation of k8s install instructions, but contains mostly descriptions of the config settings"
Kubernetes Authentication,https://backstage.io/docs/features/kubernetes/authentication,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",Describes how to authenticate k8s on various services.
Troubleshooting,https://backstage.io/docs/features/kubernetes/troubleshooting,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",What to do if k8s doesnt show up as a service entity
Proxy,https://backstage.io/docs/features/kubernetes/proxy,task,"contributor, admin","installation, setup, config","Installation, Setup, and Config Guide",How to set up a k8s proxy endpoint. Known limitation should be moved to a release note.
Overview,https://backstage.io/docs/features/software-templates/,task,administrator; user,getting started,Getting Started Guide (“Hello World”),“Disable Register Existing Component button” is an admin task that should be in the config documentation
Configuration,https://backstage.io/docs/features/software-templates/configuration,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",How to configure a template
Adding your own Templates,https://backstage.io/docs/features/software-templates/adding-templates,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",How to add a template
Writing Templates,https://backstage.io/docs/features/software-templates/writing-templates,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",The anatomy of a template and how to write one.
Input Examples,https://backstage.io/docs/features/software-templates/input-examples,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",Anatomy of template input components. Could be a mini-cookbook or a section of the config instructions for Templates
Builtin actions,https://backstage.io/docs/features/software-templates/builtin-actions,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",Describes how to migrate a fetch action from a one fetch action to another. Not clear why this is important; should give some more context.
Writing Custom Actions,https://backstage.io/docs/features/software-templates/writing-custom-actions,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",How to create a custom template action
Writing Custom Field Extensions,https://backstage.io/docs/features/software-templates/writing-custom-field-extensions,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",More on customizing templates: creating your own field types
Writing custom step layouts,https://backstage.io/docs/features/software-templates/writing-custom-step-layouts,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",Still more on customizing templates: creating your own step layouts
Authorizing parameters steps and actions,https://backstage.io/docs/features/software-templates/authorizing-parameters-steps-and-actions,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",Authorization in custom templates
Experimental: Testing out the alpha Scaffolder plugin,https://backstage.io/docs/features/software-templates/testing-scaffolder-alpha,task,administrator,"installation, setup, config",Release Notes,Information about features that are in flux or still in development should have their own documentation separate from the production system. The feature should be described in the Release Notes.
Migrating to v1beta3 templates,https://backstage.io/docs/features/software-templates/migrating-from-v1beta2-to-v1beta3,,administrator,"installation, setup, config",Release Notes,Information about features that are in flux or still in development should have their own documentation separate from the production system. The feature should be described in the Release Notes.
Overview,https://backstage.io/docs/features/search/,concept,administrator; user,use,User Guide,"Intro to the search feature, including its configurability as a plugin"
Getting Started with Search,https://backstage.io/docs/features/search/getting-started,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",Installing and configuring frontend and backend search
Search Concepts,https://backstage.io/docs/features/search/concepts,concept,administrator; user,"deployment, use",Technical Overview,Description of search system components.
Search Architecture,https://backstage.io/docs/features/search/architecture,concept,all,"decision, deployment",Architecture Overview,Description of search architecture
Search Engines,https://backstage.io/docs/features/search/search-engines,concept,administrator; user,deployment,Architecture Overview,Describes search backends available by default
How-To guides,https://backstage.io/docs/features/search/how-to-guides,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",How to deploy a custom search backend
Overview,https://backstage.io/docs/features/techdocs/,concept,all,"decision, deployment",Architecture Overview,Intro to tech docs feature
Getting Started,https://backstage.io/docs/features/techdocs/getting-started,task,administrator; user,"installation, setup, config","Installation, Setup, and Config Guide",Install and config instructions for the TechDoc frontend and backend plugins
Concepts,https://backstage.io/docs/features/techdocs/concepts,concept,administrator; user,"deployment, use","Architecture Overview, Installation Guide",Describes the TechDocs plugin component architecture.
TechDocs Addons,https://backstage.io/docs/features/techdocs/addons,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",Describes how to install and configure add-ons to the TechDocs plugin
TechDocs Architecture,https://backstage.io/docs/features/techdocs/architecture,concept,administrator; user,deployment,Architecture Overview,TechDocs architecture block diagrams.
Creating and Publishing Documentation,https://backstage.io/docs/features/techdocs/creating-and-publishing,task,user,use,User Guide,How to add existing docs or create a new doc in TechDcos
TechDocs Configuration Options,https://backstage.io/docs/features/techdocs/configuration,reference,administrator,"installation, setup, config","Installation, Setup, and Config Guide",A description in an example YAML file of the TechDocs configuration parameters. Dont know if its comprehensive or not.
Using Cloud Storage for TechDocs generated files,https://backstage.io/docs/features/techdocs/using-cloud-storage,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",How to set up TechDocs on major cloud services
Configuring CI/CD to generate and publish TechDocs sites,https://backstage.io/docs/features/techdocs/configuring-ci-cd,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",How to automate TechDocs publication in CI/CD
TechDocs CLI,https://backstage.io/docs/features/techdocs/cli,reference,administrator,"installation, setup, config","Installation, Setup, and Config Guide",Reference and how-to information on using the CLI. A bit of a catch-all; should be parceled out in more focused docs.
How-To guides,https://backstage.io/docs/features/techdocs/how-to-guides,task,administrator; user,"deployment, use",Recipe,How-tos for various TechDocs tasks. probably partly redundant with other pages.
Troubleshooting,https://backstage.io/docs/features/techdocs/troubleshooting,task,administrator; user,"deployment, use",Maintenance Guide; User Guide,How to solve several trouble scenarios
FAQ,https://backstage.io/docs/features/techdocs/faqs,concept,administrator; user,"deployment, use",KB,Info about the TechDocs plugin. Probably partly redundant with other pages.
Integrations,,,,,,
Overview,https://backstage.io/docs/integrations/,concept,administrator,"installation, setup, config","Installation, Setup, and Config Guide",Intro to integrations. Needs to be expanded. There are about a dozen listed integrations with common cloud providers and software repos. This could be its own supplement to the installation guide or a chapter or appendix. It's almost certain to be needed for any major installation.
Plugins,,,,,,
Intro to plugins,https://backstage.io/docs/plugins/,concept,administrator,deployment,Architecture Overview,"This introduction needs to be expanded (though that material might exist elsewhere). There are pointers here mostly to contributor actions. ""Contributing a plugin"" needs to be its own separate document on the GitHub site."
Existing plugins,https://backstage.io/docs/plugins/existing-plugins,reference,administrator,"installation, setup, config","Installation, Setup, and Config Guide",This is a pointer to the plugin catalog. The catalog should be an appendix to the installation and config guide.
Create a Backstage Plugin,https://backstage.io/docs/plugins/create-a-plugin,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",This is actually a brief description of how to install a plugin on an existing Backstage instance.
Plugin Development,https://backstage.io/docs/plugins/plugin-development,concept,"contributor, admin","contribute, maintenance",Contributor reference,A brief outline of how to develop a plugin. Should go in the contributor guide.
Structure of a Plugin,https://backstage.io/docs/plugins/structure-of-a-plugin,reference,"contributor, admin","contribute, maintenance",Contributor reference,Description of the structure of a plugin.
Integrate into the Software Catalog,https://backstage.io/docs/plugins/integrating-plugin-into-software-catalog,task,contributor,contribute,Contributor reference,"Describes how to add a plugin to the entities page on a Backstage instance. Described as ""advanced"" and ""experimental""."
Integrating Search into a plugin,https://backstage.io/docs/plugins/integrating-search-into-plugins,task,contributor,contribute,Contributor reference,Instructions for implementing search in a plugin.
Composability System,https://backstage.io/docs/plugins/composability,concept,contributor,contribute,Contributor reference,How plugins talk to each other using React extension. Contains some instructional code that should be separated into a procedure.
Customization (Experimental),https://backstage.io/docs/plugins/customization,task,"contributor, user","contribute, use","Contributor reference, User guide","How to customize a plugin. Instructions for both contributor (plugin developer) and a short snippet for a developer to use in an existing installation. Labeled ""experimental""."
Plugin Analytics,https://backstage.io/docs/plugins/analytics,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide","Conceptual, reference, and (mostly) task information about using a supplied analytics API to collect usage data on Backstage."
Feature Flags,https://backstage.io/docs/plugins/feature-flags,task,administrator; user,"installation, setup, config","Installation, Setup, and Config Guide","How to set features flags to define plugin behavior, both in plugin code and from the Backstage application."
Proxying,https://backstage.io/docs/plugins/proxying,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",How to set up an HTTP proxy to reach backend services from the Backstage frontend
Backend plugins,https://backstage.io/docs/plugins/backend-plugin,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",Instructions for an admin to create and configure a backend plugin. This is one of those pieces of content that spans admin and contributor.
Call Existing API,https://backstage.io/docs/plugins/call-existing-api,task,administrator; user,"installation, setup, config","Installation, Setup, and Config Guide",How to call an arbitrary API from the Backstage frontend
URL Reader,https://backstage.io/docs/plugins/url-reader,task,contributor,contribute,Contributor reference,How to use the Backstage URL reader API to securely read files from a plugin.
Testing with Jest,https://backstage.io/docs/plugins/testing,concept,contributor,contribute,Contributor reference,A description of the infrastructure (Jest) and principles to use when writing unit tests for plugins.
Publish private,https://backstage.io/docs/plugins/publish-private,,,,,"""TODO"""
Add to Marketplace,https://backstage.io/docs/plugins/add-to-marketplace,task,contributor,contribute,Contributor reference,How to add a plugin to the plugin library listed in the documentation
Observability,https://backstage.io/docs/plugins/observability,reference,contributor,contribute,Contributor reference,A brief overview of some logging mechanisms. Covered elsewhere.
Configuration,,,,,,
Static Configuration in Backstage,https://backstage.io/docs/conf/,reference,contributor,"contribute, maintenance",Contributor reference,These sections describe the static configuration files for plugins and how they're combined into the configuration for a Backstage implementation.
Reading Backstage Configuration,https://backstage.io/docs/conf/reading,reference,contributor,"contribute, maintenance",Contributor reference,These sections describe the static configuration files for plugins and how they're combined into the configuration for a Backstage implementation.
Writing Backstage Configuration Files,https://backstage.io/docs/conf/writing,reference,contributor,"contribute, maintenance",Contributor reference,These sections describe the static configuration files for plugins and how they're combined into the configuration for a Backstage implementation.
Defining Configuration for your Plugin,https://backstage.io/docs/conf/defining,reference,contributor,"contribute, maintenance",Contributor reference,These sections describe the static configuration files for plugins and how they're combined into the configuration for a Backstage implementation.
Auth and identity,,,,,,
Authentication in Backstage,https://backstage.io/docs/auth/,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide","How to configure authentication. There are at least 14 individual pages for various providers giving detailed instructions for these providers: ""https://backstage.io/docs/auth/atlassian/provider"" and so on."
Sign-in Identities and Resolvers,https://backstage.io/docs/auth/identity-resolver,reference,administrator,"installation, setup, config","Installation, Setup, and Config Guide",How to set up identities for authorization. Probably useful to plugin contributors as well.
OAuth and OpenID Connect,https://backstage.io/docs/auth/oauth,concept,"contributor, admin","contribute, maintenance","Contributor reference, User guide",Describes how tokens are used by Backstage for third-party services. Includes a sequence diagram.
OIDC provider from scratch,https://backstage.io/docs/auth/oidc,task,"contributor, admin",contribute,Contributor reference,How to use Open ID Connect (OIDC) to connect to Backstage.
Contributing New Providers,https://backstage.io/docs/auth/add-auth-provider,task,contributor,contribute,Contributor reference,How to add support for a new authentication provider. Recommended solely for contributors.
Service to Service Auth,https://backstage.io/docs/auth/service-to-service-auth,task,contributor,contribute,Contributor reference,How to set up a plugin to authenticate another service or plugin.
Troubleshooting Auth,https://backstage.io/docs/auth/troubleshooting,task,"contributor, admin",contribute,"Installation, Setup, and Config Guide",Troubleshooting various authentication problems. These span development of plugins to administration of Backstage instances.
Glossary,https://backstage.io/docs/auth/glossary,reference,all,any,,A glossary of terms for authentication.
Permissions,,,,,,
Overview,https://backstage.io/docs/permissions/overview,concept,all,deployment,Architecture Overview,"An introduction to authorization in Backstage, with a flow diagram."
Concepts,https://backstage.io/docs/permissions/concepts,reference,"contributor, admin","contribute, maintenance",Contributor reference,A glossary of authorization terms.
Getting Started,https://backstage.io/docs/permissions/getting-started,task,"contributor, admin","contribute, maintenance",Contributor reference,How to set up authorization in a Backstage plugin.
Writing a permission policy,https://backstage.io/docs/permissions/writing-a-policy,task,"contributor, admin","contribute, maintenance",Contributor reference,How to write a permission policy in a Typescript file.
Frontend Integration,https://backstage.io/docs/permissions/frontend-integration,task,"contributor, admin","contribute, maintenance",Contributor reference,An example showing what to do when frontend permission policy needs to be set.
Defining custom permission rules,https://backstage.io/docs/permissions/custom-rules,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",How to set up a custom rule outside the context of a plugin.
1. Tutorial setup,https://backstage.io/docs/permissions/plugin-authors/01-setup,task,contributor,contribute,Contributor reference,Tutorial on setting up authorization for a plugin.
2. Adding a basic permission check,https://backstage.io/docs/permissions/plugin-authors/02-adding-a-basic-permission-check,task,contributor,contribute,Contributor reference,Tutorial on setting up authorization for a plugin.
3. Adding a resource permission check,https://backstage.io/docs/permissions/plugin-authors/03-adding-a-resource-permission-check,task,contributor,contribute,Contributor reference,Tutorial on setting up authorization for a plugin.
4. Authorizing access to paginated data,https://backstage.io/docs/permissions/plugin-authors/04-authorizing-access-to-paginated-data,task,contributor,contribute,Contributor reference,Tutorial on setting up authorization for a plugin.
5. Frontend Components with Authorization,https://backstage.io/docs/permissions/plugin-authors/05-frontend-authorization,task,contributor,contribute,Contributor reference,Tutorial on setting up authorization for a plugin.
Deployment,,,,,,
Overview,https://backstage.io/docs/deployment/,concept,administrator,deployment,"Installation, Setup, and Config Guide",Introduction to deploying a Backstage instance.
Scaling,https://backstage.io/docs/deployment/scaling,concept,administrator,deployment,"Installation, Setup, and Config Guide",Brief discussion of how to scale Backstage across an org
Docker,https://backstage.io/docs/deployment/docker,task,administrator,deployment,"Installation, Setup, and Config Guide",How to deploy using Docker.
Kubernetes,https://backstage.io/docs/deployment/k8s,task,administrator,deployment,"Installation, Setup, and Config Guide",Fairly extensive instructions on how to deploy Backstage using Docker on Kubernetes
Heroku,https://backstage.io/docs/deployment/heroku,task,administrator,deployment,"Installation, Setup, and Config Guide",Deploying using Heroic
Koyeb,https://backstage.io/docs/deployment/koyeb,task,administrator,deployment,"Installation, Setup, and Config Guide",Deploying using Kobe
AWS Fargate via Flightcontrol,https://backstage.io/docs/deployment/flightcontrol,task,administrator,deployment,"Installation, Setup, and Config Guide",Deploying on AWS using Flightcontrol
Designing for Backstage,,,,,,
Design,https://backstage.io/docs/dls/design,concept,contributor,contribute,Contributor overview,Introduction to the Backstage OSS project.
Component Design Guidelines,https://backstage.io/docs/dls/component-design-guidelines,concept,contributor,contribute,Contributor reference,Visual design guidelines for components
Contributing to Storybook,https://backstage.io/docs/dls/contributing-to-storybook,task,contributor,contribute,Contributor reference,How to add a control to the Backstage Storybook catalog
Figma,https://backstage.io/docs/dls/figma,reference,contributor,contribute,Contributor reference,Link to the Figma component library for Backstage
API Reference,,,,,,
Utility APIs,https://backstage.io/docs/api/utility-apis,task,contributor,contribute,Contributor reference,Describes the infrastructure for creating and using APIs that operate between plugins.
Package Index,https://backstage.io/docs/reference/,reference,contributor,contribute,Contributor reference,A lengthy catalog of APIs
Deprecations,https://backstage.io/docs/api/deprecations,reference,all,any,,Describes deprecated elements in Backstage. Deprecations should be noted in reference material and described in release notes.
Tutorials,,,,,,
Future developer journey,https://backstage.io/docs/tutorials/journey,task,"contributor, admin",contribute,Recipe,"Extended example about a fictional developer adding a new plugin to an installation, then to the project"
Adding Custom Plugin to Existing Monorepo App,https://backstage.io/docs/tutorials/quickstart-app-plugin,task,administrator,deployment,Recipe,How to develop a plugin in an existing Backstage installation (app)
React Router 6.0 Migration,https://backstage.io/docs/tutorials/react-router-stable-migration,task,administrator,"installation, setup, config",Release Notes,"How to upgrade to a newer version of React router. A version-specific procedure that should be hidden from general admin procedures. Should have been a release-specific task, if necessary at all"
Package Role Migration,https://backstage.io/docs/tutorials/package-role-migration,task,administrator,"installation, setup, config",Release Notes,"Another transitional step that should be part of a version upgrade, not a user tutorial."
Migrating away from @backstage/core,https://backstage.io/docs/tutorials/migrating-away-from-core,task,administrator,"installation, setup, config",Release Notes,Another refactoring migration. Remove from tutorials.
Configuring Plugin Databases,https://backstage.io/docs/tutorials/configuring-plugin-databases,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide","I could see putting this in a recipe guide or a config guide, plugin-specific or otherwise. Not a tutorial."
Switching Backstage from SQLite to PostgreSQL,https://backstage.io/docs/tutorials/switching-sqlite-postgres,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",How to change the default DB from SQLite to PostgreSQL. This should be in the basic configuration guide.
Using the Backstage Proxy from Within a Plugin,https://backstage.io/docs/tutorials/using-backstage-proxy-within-plugin,task,administrator,"installation, setup, config","Installation, Setup, and Config Guide",How to access an external API using a proxy. A plugin configuration task.
Migration to Yarn 3,https://backstage.io/docs/tutorials/yarn-migration,task,administrator,deployment,Release Notes,Another release-specific migration. Remove from tutorials.
Architecture Decision Records (ADRs),,,,,,
Overview,https://backstage.io/docs/architecture-decisions/,concept,"contributor, admin",deployment,Architecture Overview,"An intro to architectural decision records (ADRs). Potentially part of an architecture overview. Could be omitted from the user doc altogether, though. Primarily of interest to contributors."
ADR001: Architecture Decision Record (ADR) log,https://backstage.io/docs/architecture-decisions/adrs-adr001,concept,contributor,contribute,Contributor reference,Meta ADR about where to store ADRs.
ADR002: Default Software Catalog File Format,https://backstage.io/docs/architecture-decisions/adrs-adr002,concept,contributor,contribute,Contributor reference,Information about a particular design decision.
ADR003: Avoid Default Exports and Prefer Named Exports,https://backstage.io/docs/architecture-decisions/adrs-adr003,concept,contributor,contribute,Contributor reference,Information about a particular design decision.
ADR004: Module Export Structure,https://backstage.io/docs/architecture-decisions/adrs-adr004,concept,contributor,contribute,Contributor reference,Information about a particular design decision.
ADR005: Catalog Core Entities,https://backstage.io/docs/architecture-decisions/adrs-adr005,concept,contributor,contribute,Contributor reference,Information about a particular design decision.
ADR006: Avoid React.FC and React.SFC,https://backstage.io/docs/architecture-decisions/adrs-adr006,concept,contributor,contribute,Contributor reference,Information about a particular design decision.
ADR007: Use MSW to mock http requests,https://backstage.io/docs/architecture-decisions/adrs-adr007,concept,contributor,contribute,Contributor reference,Information about a particular design decision.
ADR008: Default Catalog File Name,https://backstage.io/docs/architecture-decisions/adrs-adr008,concept,contributor,contribute,Contributor reference,Information about a particular design decision.
ADR009: Entity References,https://backstage.io/docs/architecture-decisions/adrs-adr009,concept,contributor,contribute,Contributor reference,Information about a particular design decision.
ADR010: Use the Luxon Date Library,https://backstage.io/docs/architecture-decisions/adrs-adr010,concept,contributor,contribute,Contributor reference,Information about a particular design decision.
ADR011: Plugin Package Structure,https://backstage.io/docs/architecture-decisions/adrs-adr011,concept,contributor,contribute,Contributor reference,Information about a particular design decision.
ADR012: Use Luxon.toLocaleString and date/time presets,https://backstage.io/docs/architecture-decisions/adrs-adr012,concept,contributor,contribute,Contributor reference,Information about a particular design decision.
ADR013: Proper use of HTTP fetching libraries,https://backstage.io/docs/architecture-decisions/adrs-adr013,concept,contributor,contribute,Contributor reference,Information about a particular design decision.
FAQ,,,,,,
FAQ,https://backstage.io/docs/FAQ,reference,all,any,KB,"This is a fairly robust FAQ. I usually recommend doing away with a FAQ on the grounds that it's a last resort for someone looking for information. Distribute its topics to where they belong in the documentation. Use a knowledge base (similar, but longer-format articles with conceptual information only) for miscellaneous, indexed, conceptual information."
Experimental Backend System,,,,,,
Introduction,https://backstage.io/docs/backend-system/,concept,"contributor, admin",deployment,Contributor reference,"Information about a refactoring of existing functionality should be kept in the developer (contributor) discussion until it is deployed, at which point it should be documented in the release notes. Mentions of timing (""this component is in alpha""; ""currently this works like this""; ""we plan to ..."") should be avoided entirely in the product regular documentation. Version-specific information should be documented at the time of release in the release notes. If the change affects functionality, the new functionality should replace the old in the documentation set starting at the new version of the doc."
Overview,https://backstage.io/docs/backend-system/architecture/index,concept,"contributor, admin",deployment,Contributor reference,"See notes on the ""Backend System"" intro, https://backstage.io/docs/backend-system/"
Services,https://backstage.io/docs/backend-system/architecture/services,concept,"contributor, admin",deployment,Contributor reference,"See notes on the ""Backend System"" intro, https://backstage.io/docs/backend-system/"
Plugins,https://backstage.io/docs/backend-system/architecture/plugins,concept,"contributor, admin",deployment,Contributor reference,"See notes on the ""Backend System"" intro, https://backstage.io/docs/backend-system/"
Extension Points,https://backstage.io/docs/backend-system/architecture/extension-points,concept,"contributor, admin",deployment,Contributor reference,"See notes on the ""Backend System"" intro, https://backstage.io/docs/backend-system/"
Modules,https://backstage.io/docs/backend-system/architecture/modules,concept,"contributor, admin",deployment,Contributor reference,"See notes on the ""Backend System"" intro, https://backstage.io/docs/backend-system/"
Naming Patterns,https://backstage.io/docs/backend-system/architecture/naming-patterns,concept,"contributor, admin",deployment,Contributor reference,"See notes on the ""Backend System"" intro, https://backstage.io/docs/backend-system/"
Accessibility,,,,,,
Backstage Accessibility,https://backstage.io/docs/accessibility/,task,contributor,contribute,Contributor reference,How to incorporate accessibility into contributed software components
1 Title URL Doc Type User Role Use Case Doc Suite Position Comment
2 Overview
3 What is Backstage? https://backstage.io/docs/overview/what-is-backstage concept adopter decision Technical Overview Introductory
4 Architecture overview https://backstage.io/docs/overview/architecture-overview concept administrator deployment Architecture Overview Substantial, in-depth view of architecture
5 Roadmap https://backstage.io/docs/overview/roadmap concept administrator deployment, maintenance Release Notes Should be updated frequently; move to release notes
6 Vision https://backstage.io/docs/overview/vision concept contributor, adopter strategy, sales White Paper Short, high-level statement of vision.
7 The Spotify Story https://backstage.io/docs/overview/background concept contributor, adopter strategy, sales White Paper Background info. Move to website.
8 Strategies for adopting https://backstage.io/docs/overview/adopting concept adopter decision Overview Would be useful in adoption go/no-go decisions, and in adoption/deployment/configuration.
9 Release and Versioning Policy https://backstage.io/docs/overview/versioning-policy concept contributor, adopter contribute, maintenance Release Notes, Contributor Instructions
10 Backstage Threat Model https://backstage.io/docs/overview/threat-model concept administrator deployment Architecture Overview, Installation Guide Required by admin to set up security posture
11 Support and community https://backstage.io/docs/overview/support reference any support, decision, contrib RN, FAQ, KB, Overviews Should be available to any interested user from almost anywhere
12 Backstage Glossary https://backstage.io/docs/overview/glossary reference any any KB Should be available generally, esp. to new users
13 Logo assets https://backstage.io/docs/overview/logos reference contributor, adopter contribute Reference info for contributing designer
14 Getting Started
15 Getting Started https://backstage.io/docs/getting-started/ task administrator installation, setup, config Installation, Setup, and Config Guide Installation instructions
16 Getting Started configuring Backstage https://backstage.io/docs/getting-started/configuration task administrator; user installation, setup, config Installation, Setup, and Config Guide; Getting Started Guide Split: Configuring database, authentication (installation); Creating your first components (getting started)
17 Create an App https://backstage.io/docs/getting-started/create-an-app task administrator installation, setup, config Installation, Setup, and Config Guide How to set up an instance. Might need two setup procedures, one for users and one for admins.
18 Configuring App with plugins https://backstage.io/docs/getting-started/configure-app-with-plugins task administrator installation, setup, config Installation, Setup, and Config Guide Should go in a chapter of the install guide devoted to installing existing plugins
19 Customize the look-and-feel of your App https://backstage.io/docs/getting-started/app-custom-theme task administrator installation, setup, config Installation, Setup, and Config Guide Should be a chapter of the install guide
20 Backstage homepage - Setup and Customization https://backstage.io/docs/getting-started/homepage task administrator installation, setup, config Installation, Setup, and Config Guide
21 Keeping Backstage Updated https://backstage.io/docs/getting-started/keeping-backstage-updated task administrator installation, setup, config IS&C; RN Upgrade procedures in admin guide; particular upgrades in release notes
22 Key Concepts https://backstage.io/docs/getting-started/concepts reference administrator This is a list of software dependencies. Needed by admin. Upgrades needed by each release in RN.
23 Contributors https://backstage.io/docs/getting-started/contributors task contributor contribute Contributor setup guide Contributor guide can be limited to GitHub, or a separate contributor guide put on the website
24 Getting Involved https://backstage.io/docs/getting-started/getting-involved reference contributor contribute Contributor overview This material belongs in the intro to a contributor guide
25 Backstage Project Structure https://backstage.io/docs/getting-started/project-structure reference contributor contribute Contributor reference Structure of the GitHub repo, annotated. Reference for contributors.
26 Local Development
27 Overview https://backstage.io/docs/local-dev/cli-overview concept administrator deployment Architecture Overview This is part of the architecture overview, a discussion of the components of the CLI
28 Build System https://backstage.io/docs/local-dev/cli-build-system concept administrator deployment Architecture Overview Description of how the Build system works; belongs in the Architecture Overview
29 Commands https://backstage.io/docs/local-dev/cli-commands reference administrator; user use API Reference This is a command reference for the CLI, which seems to be a tool for doing builds of components in Backstage
30 Linking in Local Packages https://backstage.io/docs/local-dev/linking-local-packages task user use Recipe This is a technique for testing a build. Goes in a recipe book or use and testing guide.
31 Debugging Backstage https://backstage.io/docs/local-dev/debugging task administrator installation, setup, config Installation, Setup, and Config Guide Description of how to change the logging level in Backstage.
32 Core Features
33 Overview https://backstage.io/docs/features/software-catalog/ task user use User Guide Basic catalog tasks. Also a short intro to the catalog (conceptual).
34 The Life of an Entity https://backstage.io/docs/features/software-catalog/life-of-an-entity concept administrator; user deployment Architecture Overview Detailed description of data ingestion when importing an entity.
35 Catalog Configuration https://backstage.io/docs/features/software-catalog/configuration concept administrator; user deployment Architecture Overview Additional information for ingesting entities
36 System Model https://backstage.io/docs/features/software-catalog/system-model concept user use User Guide Describes the model behind various entities. Some of this could go in the Knowledge Base as well maybe.
37 YAML File Format https://backstage.io/docs/features/software-catalog/descriptor-format reference user use User Guide Reference to entity descriptors, with examples in JSON.
38 Entity References https://backstage.io/docs/features/software-catalog/references reference user use User Guide Description of how entities reference other entities
39 Well-known Annotations https://backstage.io/docs/features/software-catalog/well-known-annotations reference user use User Guide More on entities
40 Well-known Relations https://backstage.io/docs/features/software-catalog/well-known-relations reference user use User Guide More on entities
41 Well-known Statuses https://backstage.io/docs/features/software-catalog/well-known-statuses reference user use User Guide More on entities
42 Extending the model https://backstage.io/docs/features/software-catalog/extending-the-model reference user use User Guide More on entities
43 External integrations https://backstage.io/docs/features/software-catalog/external-integrations reference user use User Guide More on entities
44 Catalog Customization https://backstage.io/docs/features/software-catalog/catalog-customization task administrator deployment Installation, Setup, and Config Guide How to customize the entity display page. A recipe for the site admin
45 API https://backstage.io/docs/features/software-catalog/software-catalog-api reference administrator; user use API Reference The Entity API. Could be teased apart into a true reference and a set of recipes.
46 Creating the Catalog Graph https://backstage.io/docs/features/software-catalog/creating-the-catalog-graph reference user use User Guide Describes the catalog model and what is displayed in the UI
47 Overview https://backstage.io/docs/features/kubernetes/ concept user use Kubernetes plugin guide Intro to the 2 Kubernetes plugins
48 Installation https://backstage.io/docs/features/kubernetes/installation task administrator installation, setup, config Installation, Setup, and Config Guide Could go in the main install guide or in a separate k8s guide
49 Configuration https://backstage.io/docs/features/kubernetes/configuration reference administrator installation, setup, config Installation, Setup, and Config Guide Continuation of k8s install instructions, but contains mostly descriptions of the config settings
50 Kubernetes Authentication https://backstage.io/docs/features/kubernetes/authentication task administrator installation, setup, config Installation, Setup, and Config Guide Describes how to authenticate k8s on various services.
51 Troubleshooting https://backstage.io/docs/features/kubernetes/troubleshooting task administrator installation, setup, config Installation, Setup, and Config Guide What to do if k8s doesn’t show up as a service entity
52 Proxy https://backstage.io/docs/features/kubernetes/proxy task contributor, admin installation, setup, config Installation, Setup, and Config Guide How to set up a k8s proxy endpoint. Known limitation should be moved to a release note.
53 Overview https://backstage.io/docs/features/software-templates/ task administrator; user getting started Getting Started Guide (“Hello World”) “Disable Register Existing Component button” is an admin task that should be in the config documentation
54 Configuration https://backstage.io/docs/features/software-templates/configuration task administrator installation, setup, config Installation, Setup, and Config Guide How to configure a template
55 Adding your own Templates https://backstage.io/docs/features/software-templates/adding-templates task administrator installation, setup, config Installation, Setup, and Config Guide How to add a template
56 Writing Templates https://backstage.io/docs/features/software-templates/writing-templates task administrator installation, setup, config Installation, Setup, and Config Guide The anatomy of a template and how to write one.
57 Input Examples https://backstage.io/docs/features/software-templates/input-examples task administrator installation, setup, config Installation, Setup, and Config Guide Anatomy of template input components. Could be a mini-cookbook or a section of the config instructions for Templates
58 Builtin actions https://backstage.io/docs/features/software-templates/builtin-actions task administrator installation, setup, config Installation, Setup, and Config Guide Describes how to migrate a fetch action from a one fetch action to another. Not clear why this is important; should give some more context.
59 Writing Custom Actions https://backstage.io/docs/features/software-templates/writing-custom-actions task administrator installation, setup, config Installation, Setup, and Config Guide How to create a custom template action
60 Writing Custom Field Extensions https://backstage.io/docs/features/software-templates/writing-custom-field-extensions task administrator installation, setup, config Installation, Setup, and Config Guide More on customizing templates: creating your own field types
61 Writing custom step layouts https://backstage.io/docs/features/software-templates/writing-custom-step-layouts task administrator installation, setup, config Installation, Setup, and Config Guide Still more on customizing templates: creating your own step layouts
62 Authorizing parameters steps and actions https://backstage.io/docs/features/software-templates/authorizing-parameters-steps-and-actions task administrator installation, setup, config Installation, Setup, and Config Guide Authorization in custom templates
63 Experimental: Testing out the alpha Scaffolder plugin https://backstage.io/docs/features/software-templates/testing-scaffolder-alpha task administrator installation, setup, config Release Notes Information about features that are in flux or still in development should have their own documentation separate from the production system. The feature should be described in the Release Notes.
64 Migrating to v1beta3 templates https://backstage.io/docs/features/software-templates/migrating-from-v1beta2-to-v1beta3 administrator installation, setup, config Release Notes Information about features that are in flux or still in development should have their own documentation separate from the production system. The feature should be described in the Release Notes.
65 Overview https://backstage.io/docs/features/search/ concept administrator; user use User Guide Intro to the search feature, including its configurability as a plugin
66 Getting Started with Search https://backstage.io/docs/features/search/getting-started task administrator installation, setup, config Installation, Setup, and Config Guide Installing and configuring frontend and backend search
67 Search Concepts https://backstage.io/docs/features/search/concepts concept administrator; user deployment, use Technical Overview Description of search system components.
68 Search Architecture https://backstage.io/docs/features/search/architecture concept all decision, deployment Architecture Overview Description of search architecture
69 Search Engines https://backstage.io/docs/features/search/search-engines concept administrator; user deployment Architecture Overview Describes search backends available by default
70 How-To guides https://backstage.io/docs/features/search/how-to-guides task administrator installation, setup, config Installation, Setup, and Config Guide How to deploy a custom search backend
71 Overview https://backstage.io/docs/features/techdocs/ concept all decision, deployment Architecture Overview Intro to tech docs feature
72 Getting Started https://backstage.io/docs/features/techdocs/getting-started task administrator; user installation, setup, config Installation, Setup, and Config Guide Install and config instructions for the TechDoc frontend and backend plugins
73 Concepts https://backstage.io/docs/features/techdocs/concepts concept administrator; user deployment, use Architecture Overview, Installation Guide Describes the TechDocs plugin component architecture.
74 TechDocs Addons https://backstage.io/docs/features/techdocs/addons task administrator installation, setup, config Installation, Setup, and Config Guide Describes how to install and configure add-ons to the TechDocs plugin
75 TechDocs Architecture https://backstage.io/docs/features/techdocs/architecture concept administrator; user deployment Architecture Overview TechDocs architecture block diagrams.
76 Creating and Publishing Documentation https://backstage.io/docs/features/techdocs/creating-and-publishing task user use User Guide How to add existing docs or create a new doc in TechDcos
77 TechDocs Configuration Options https://backstage.io/docs/features/techdocs/configuration reference administrator installation, setup, config Installation, Setup, and Config Guide A description in an example YAML file of the TechDocs configuration parameters. Don’t know if it’s comprehensive or not.
78 Using Cloud Storage for TechDocs generated files https://backstage.io/docs/features/techdocs/using-cloud-storage task administrator installation, setup, config Installation, Setup, and Config Guide How to set up TechDocs on major cloud services
79 Configuring CI/CD to generate and publish TechDocs sites https://backstage.io/docs/features/techdocs/configuring-ci-cd task administrator installation, setup, config Installation, Setup, and Config Guide How to automate TechDocs publication in CI/CD
80 TechDocs CLI https://backstage.io/docs/features/techdocs/cli reference administrator installation, setup, config Installation, Setup, and Config Guide Reference and how-to information on using the CLI. A bit of a catch-all; should be parceled out in more focused docs.
81 How-To guides https://backstage.io/docs/features/techdocs/how-to-guides task administrator; user deployment, use Recipe How-tos for various TechDocs tasks. probably partly redundant with other pages.
82 Troubleshooting https://backstage.io/docs/features/techdocs/troubleshooting task administrator; user deployment, use Maintenance Guide; User Guide How to solve several trouble scenarios
83 FAQ https://backstage.io/docs/features/techdocs/faqs concept administrator; user deployment, use KB Info about the TechDocs plugin. Probably partly redundant with other pages.
84 Integrations
85 Overview https://backstage.io/docs/integrations/ concept administrator installation, setup, config Installation, Setup, and Config Guide Intro to integrations. Needs to be expanded. There are about a dozen listed integrations with common cloud providers and software repos. This could be its own supplement to the installation guide or a chapter or appendix. It's almost certain to be needed for any major installation.
86 Plugins
87 Intro to plugins https://backstage.io/docs/plugins/ concept administrator deployment Architecture Overview This introduction needs to be expanded (though that material might exist elsewhere). There are pointers here mostly to contributor actions. "Contributing a plugin" needs to be its own separate document on the GitHub site.
88 Existing plugins https://backstage.io/docs/plugins/existing-plugins reference administrator installation, setup, config Installation, Setup, and Config Guide This is a pointer to the plugin catalog. The catalog should be an appendix to the installation and config guide.
89 Create a Backstage Plugin https://backstage.io/docs/plugins/create-a-plugin task administrator installation, setup, config Installation, Setup, and Config Guide This is actually a brief description of how to install a plugin on an existing Backstage instance.
90 Plugin Development https://backstage.io/docs/plugins/plugin-development concept contributor, admin contribute, maintenance Contributor reference A brief outline of how to develop a plugin. Should go in the contributor guide.
91 Structure of a Plugin https://backstage.io/docs/plugins/structure-of-a-plugin reference contributor, admin contribute, maintenance Contributor reference Description of the structure of a plugin.
92 Integrate into the Software Catalog https://backstage.io/docs/plugins/integrating-plugin-into-software-catalog task contributor contribute Contributor reference Describes how to add a plugin to the entities page on a Backstage instance. Described as "advanced" and "experimental".
93 Integrating Search into a plugin https://backstage.io/docs/plugins/integrating-search-into-plugins task contributor contribute Contributor reference Instructions for implementing search in a plugin.
94 Composability System https://backstage.io/docs/plugins/composability concept contributor contribute Contributor reference How plugins talk to each other using React extension. Contains some instructional code that should be separated into a procedure.
95 Customization (Experimental) https://backstage.io/docs/plugins/customization task contributor, user contribute, use Contributor reference, User guide How to customize a plugin. Instructions for both contributor (plugin developer) and a short snippet for a developer to use in an existing installation. Labeled "experimental".
96 Plugin Analytics https://backstage.io/docs/plugins/analytics task administrator installation, setup, config Installation, Setup, and Config Guide Conceptual, reference, and (mostly) task information about using a supplied analytics API to collect usage data on Backstage.
97 Feature Flags https://backstage.io/docs/plugins/feature-flags task administrator; user installation, setup, config Installation, Setup, and Config Guide How to set features flags to define plugin behavior, both in plugin code and from the Backstage application.
98 Proxying https://backstage.io/docs/plugins/proxying task administrator installation, setup, config Installation, Setup, and Config Guide How to set up an HTTP proxy to reach backend services from the Backstage frontend
99 Backend plugins https://backstage.io/docs/plugins/backend-plugin task administrator installation, setup, config Installation, Setup, and Config Guide Instructions for an admin to create and configure a backend plugin. This is one of those pieces of content that spans admin and contributor.
100 Call Existing API https://backstage.io/docs/plugins/call-existing-api task administrator; user installation, setup, config Installation, Setup, and Config Guide How to call an arbitrary API from the Backstage frontend
101 URL Reader https://backstage.io/docs/plugins/url-reader task contributor contribute Contributor reference How to use the Backstage URL reader API to securely read files from a plugin.
102 Testing with Jest https://backstage.io/docs/plugins/testing concept contributor contribute Contributor reference A description of the infrastructure (Jest) and principles to use when writing unit tests for plugins.
103 Publish private https://backstage.io/docs/plugins/publish-private "TODO"
104 Add to Marketplace https://backstage.io/docs/plugins/add-to-marketplace task contributor contribute Contributor reference How to add a plugin to the plugin library listed in the documentation
105 Observability https://backstage.io/docs/plugins/observability reference contributor contribute Contributor reference A brief overview of some logging mechanisms. Covered elsewhere.
106 Configuration
107 Static Configuration in Backstage https://backstage.io/docs/conf/ reference contributor contribute, maintenance Contributor reference These sections describe the static configuration files for plugins and how they're combined into the configuration for a Backstage implementation.
108 Reading Backstage Configuration https://backstage.io/docs/conf/reading reference contributor contribute, maintenance Contributor reference These sections describe the static configuration files for plugins and how they're combined into the configuration for a Backstage implementation.
109 Writing Backstage Configuration Files https://backstage.io/docs/conf/writing reference contributor contribute, maintenance Contributor reference These sections describe the static configuration files for plugins and how they're combined into the configuration for a Backstage implementation.
110 Defining Configuration for your Plugin https://backstage.io/docs/conf/defining reference contributor contribute, maintenance Contributor reference These sections describe the static configuration files for plugins and how they're combined into the configuration for a Backstage implementation.
111 Auth and identity
112 Authentication in Backstage https://backstage.io/docs/auth/ task administrator installation, setup, config Installation, Setup, and Config Guide How to configure authentication. There are at least 14 individual pages for various providers giving detailed instructions for these providers: "https://backstage.io/docs/auth/atlassian/provider" and so on.
113 Sign-in Identities and Resolvers https://backstage.io/docs/auth/identity-resolver reference administrator installation, setup, config Installation, Setup, and Config Guide How to set up identities for authorization. Probably useful to plugin contributors as well.
114 OAuth and OpenID Connect https://backstage.io/docs/auth/oauth concept contributor, admin contribute, maintenance Contributor reference, User guide Describes how tokens are used by Backstage for third-party services. Includes a sequence diagram.
115 OIDC provider from scratch https://backstage.io/docs/auth/oidc task contributor, admin contribute Contributor reference How to use Open ID Connect (OIDC) to connect to Backstage.
116 Contributing New Providers https://backstage.io/docs/auth/add-auth-provider task contributor contribute Contributor reference How to add support for a new authentication provider. Recommended solely for contributors.
117 Service to Service Auth https://backstage.io/docs/auth/service-to-service-auth task contributor contribute Contributor reference How to set up a plugin to authenticate another service or plugin.
118 Troubleshooting Auth https://backstage.io/docs/auth/troubleshooting task contributor, admin contribute Installation, Setup, and Config Guide Troubleshooting various authentication problems. These span development of plugins to administration of Backstage instances.
119 Glossary https://backstage.io/docs/auth/glossary reference all any A glossary of terms for authentication.
120 Permissions
121 Overview https://backstage.io/docs/permissions/overview concept all deployment Architecture Overview An introduction to authorization in Backstage, with a flow diagram.
122 Concepts https://backstage.io/docs/permissions/concepts reference contributor, admin contribute, maintenance Contributor reference A glossary of authorization terms.
123 Getting Started https://backstage.io/docs/permissions/getting-started task contributor, admin contribute, maintenance Contributor reference How to set up authorization in a Backstage plugin.
124 Writing a permission policy https://backstage.io/docs/permissions/writing-a-policy task contributor, admin contribute, maintenance Contributor reference How to write a permission policy in a Typescript file.
125 Frontend Integration https://backstage.io/docs/permissions/frontend-integration task contributor, admin contribute, maintenance Contributor reference An example showing what to do when frontend permission policy needs to be set.
126 Defining custom permission rules https://backstage.io/docs/permissions/custom-rules task administrator installation, setup, config Installation, Setup, and Config Guide How to set up a custom rule outside the context of a plugin.
127 1. Tutorial setup https://backstage.io/docs/permissions/plugin-authors/01-setup task contributor contribute Contributor reference Tutorial on setting up authorization for a plugin.
128 2. Adding a basic permission check https://backstage.io/docs/permissions/plugin-authors/02-adding-a-basic-permission-check task contributor contribute Contributor reference Tutorial on setting up authorization for a plugin.
129 3. Adding a resource permission check https://backstage.io/docs/permissions/plugin-authors/03-adding-a-resource-permission-check task contributor contribute Contributor reference Tutorial on setting up authorization for a plugin.
130 4. Authorizing access to paginated data https://backstage.io/docs/permissions/plugin-authors/04-authorizing-access-to-paginated-data task contributor contribute Contributor reference Tutorial on setting up authorization for a plugin.
131 5. Frontend Components with Authorization https://backstage.io/docs/permissions/plugin-authors/05-frontend-authorization task contributor contribute Contributor reference Tutorial on setting up authorization for a plugin.
132 Deployment
133 Overview https://backstage.io/docs/deployment/ concept administrator deployment Installation, Setup, and Config Guide Introduction to deploying a Backstage instance.
134 Scaling https://backstage.io/docs/deployment/scaling concept administrator deployment Installation, Setup, and Config Guide Brief discussion of how to scale Backstage across an org
135 Docker https://backstage.io/docs/deployment/docker task administrator deployment Installation, Setup, and Config Guide How to deploy using Docker.
136 Kubernetes https://backstage.io/docs/deployment/k8s task administrator deployment Installation, Setup, and Config Guide Fairly extensive instructions on how to deploy Backstage using Docker on Kubernetes
137 Heroku https://backstage.io/docs/deployment/heroku task administrator deployment Installation, Setup, and Config Guide Deploying using Heroic
138 Koyeb https://backstage.io/docs/deployment/koyeb task administrator deployment Installation, Setup, and Config Guide Deploying using Kobe
139 AWS Fargate via Flightcontrol https://backstage.io/docs/deployment/flightcontrol task administrator deployment Installation, Setup, and Config Guide Deploying on AWS using Flightcontrol
140 Designing for Backstage
141 Design https://backstage.io/docs/dls/design concept contributor contribute Contributor overview Introduction to the Backstage OSS project.
142 Component Design Guidelines https://backstage.io/docs/dls/component-design-guidelines concept contributor contribute Contributor reference Visual design guidelines for components
143 Contributing to Storybook https://backstage.io/docs/dls/contributing-to-storybook task contributor contribute Contributor reference How to add a control to the Backstage Storybook catalog
144 Figma https://backstage.io/docs/dls/figma reference contributor contribute Contributor reference Link to the Figma component library for Backstage
145 API Reference
146 Utility APIs https://backstage.io/docs/api/utility-apis task contributor contribute Contributor reference Describes the infrastructure for creating and using APIs that operate between plugins.
147 Package Index https://backstage.io/docs/reference/ reference contributor contribute Contributor reference A lengthy catalog of APIs
148 Deprecations https://backstage.io/docs/api/deprecations reference all any Describes deprecated elements in Backstage. Deprecations should be noted in reference material and described in release notes.
149 Tutorials
150 Future developer journey https://backstage.io/docs/tutorials/journey task contributor, admin contribute Recipe Extended example about a fictional developer adding a new plugin to an installation, then to the project
151 Adding Custom Plugin to Existing Monorepo App https://backstage.io/docs/tutorials/quickstart-app-plugin task administrator deployment Recipe How to develop a plugin in an existing Backstage installation (app)
152 React Router 6.0 Migration https://backstage.io/docs/tutorials/react-router-stable-migration task administrator installation, setup, config Release Notes How to upgrade to a newer version of React router. A version-specific procedure that should be hidden from general admin procedures. Should have been a release-specific task, if necessary at all
153 Package Role Migration https://backstage.io/docs/tutorials/package-role-migration task administrator installation, setup, config Release Notes Another transitional step that should be part of a version upgrade, not a user tutorial.
154 Migrating away from @backstage/core https://backstage.io/docs/tutorials/migrating-away-from-core task administrator installation, setup, config Release Notes Another refactoring migration. Remove from tutorials.
155 Configuring Plugin Databases https://backstage.io/docs/tutorials/configuring-plugin-databases task administrator installation, setup, config Installation, Setup, and Config Guide I could see putting this in a recipe guide or a config guide, plugin-specific or otherwise. Not a tutorial.
156 Switching Backstage from SQLite to PostgreSQL https://backstage.io/docs/tutorials/switching-sqlite-postgres task administrator installation, setup, config Installation, Setup, and Config Guide How to change the default DB from SQLite to PostgreSQL. This should be in the basic configuration guide.
157 Using the Backstage Proxy from Within a Plugin https://backstage.io/docs/tutorials/using-backstage-proxy-within-plugin task administrator installation, setup, config Installation, Setup, and Config Guide How to access an external API using a proxy. A plugin configuration task.
158 Migration to Yarn 3 https://backstage.io/docs/tutorials/yarn-migration task administrator deployment Release Notes Another release-specific migration. Remove from tutorials.
159 Architecture Decision Records (ADRs)
160 Overview https://backstage.io/docs/architecture-decisions/ concept contributor, admin deployment Architecture Overview An intro to architectural decision records (ADRs). Potentially part of an architecture overview. Could be omitted from the user doc altogether, though. Primarily of interest to contributors.
161 ADR001: Architecture Decision Record (ADR) log https://backstage.io/docs/architecture-decisions/adrs-adr001 concept contributor contribute Contributor reference Meta ADR about where to store ADRs.
162 ADR002: Default Software Catalog File Format https://backstage.io/docs/architecture-decisions/adrs-adr002 concept contributor contribute Contributor reference Information about a particular design decision.
163 ADR003: Avoid Default Exports and Prefer Named Exports https://backstage.io/docs/architecture-decisions/adrs-adr003 concept contributor contribute Contributor reference Information about a particular design decision.
164 ADR004: Module Export Structure https://backstage.io/docs/architecture-decisions/adrs-adr004 concept contributor contribute Contributor reference Information about a particular design decision.
165 ADR005: Catalog Core Entities https://backstage.io/docs/architecture-decisions/adrs-adr005 concept contributor contribute Contributor reference Information about a particular design decision.
166 ADR006: Avoid React.FC and React.SFC https://backstage.io/docs/architecture-decisions/adrs-adr006 concept contributor contribute Contributor reference Information about a particular design decision.
167 ADR007: Use MSW to mock http requests https://backstage.io/docs/architecture-decisions/adrs-adr007 concept contributor contribute Contributor reference Information about a particular design decision.
168 ADR008: Default Catalog File Name https://backstage.io/docs/architecture-decisions/adrs-adr008 concept contributor contribute Contributor reference Information about a particular design decision.
169 ADR009: Entity References https://backstage.io/docs/architecture-decisions/adrs-adr009 concept contributor contribute Contributor reference Information about a particular design decision.
170 ADR010: Use the Luxon Date Library https://backstage.io/docs/architecture-decisions/adrs-adr010 concept contributor contribute Contributor reference Information about a particular design decision.
171 ADR011: Plugin Package Structure https://backstage.io/docs/architecture-decisions/adrs-adr011 concept contributor contribute Contributor reference Information about a particular design decision.
172 ADR012: Use Luxon.toLocaleString and date/time presets https://backstage.io/docs/architecture-decisions/adrs-adr012 concept contributor contribute Contributor reference Information about a particular design decision.
173 ADR013: Proper use of HTTP fetching libraries https://backstage.io/docs/architecture-decisions/adrs-adr013 concept contributor contribute Contributor reference Information about a particular design decision.
174 FAQ
175 FAQ https://backstage.io/docs/FAQ reference all any KB This is a fairly robust FAQ. I usually recommend doing away with a FAQ on the grounds that it's a last resort for someone looking for information. Distribute its topics to where they belong in the documentation. Use a knowledge base (similar, but longer-format articles with conceptual information only) for miscellaneous, indexed, conceptual information.
176 Experimental Backend System
177 Introduction https://backstage.io/docs/backend-system/ concept contributor, admin deployment Contributor reference Information about a refactoring of existing functionality should be kept in the developer (contributor) discussion until it is deployed, at which point it should be documented in the release notes. Mentions of timing ("this component is in alpha"; "currently this works like this"; "we plan to ...") should be avoided entirely in the product regular documentation. Version-specific information should be documented at the time of release in the release notes. If the change affects functionality, the new functionality should replace the old in the documentation set starting at the new version of the doc.
178 Overview https://backstage.io/docs/backend-system/architecture/index concept contributor, admin deployment Contributor reference See notes on the "Backend System" intro, https://backstage.io/docs/backend-system/
179 Services https://backstage.io/docs/backend-system/architecture/services concept contributor, admin deployment Contributor reference See notes on the "Backend System" intro, https://backstage.io/docs/backend-system/
180 Plugins https://backstage.io/docs/backend-system/architecture/plugins concept contributor, admin deployment Contributor reference See notes on the "Backend System" intro, https://backstage.io/docs/backend-system/
181 Extension Points https://backstage.io/docs/backend-system/architecture/extension-points concept contributor, admin deployment Contributor reference See notes on the "Backend System" intro, https://backstage.io/docs/backend-system/
182 Modules https://backstage.io/docs/backend-system/architecture/modules concept contributor, admin deployment Contributor reference See notes on the "Backend System" intro, https://backstage.io/docs/backend-system/
183 Naming Patterns https://backstage.io/docs/backend-system/architecture/naming-patterns concept contributor, admin deployment Contributor reference See notes on the "Backend System" intro, https://backstage.io/docs/backend-system/
184 Accessibility
185 Backstage Accessibility https://backstage.io/docs/accessibility/ task contributor contribute Contributor reference How to incorporate accessibility into contributed software components

View File

@ -0,0 +1,238 @@
---
title: Implementing Backstage Doc Improvements
tags: backstage
---
# Introduction
This document provides actionable suggestions for improving the Backstage technical documentaiton.
For an analysis and general discussion of recommendations on Backstage technical documentation, see [backstage-analysis.md][backstage-analysis]].
## Recommendations, requirements, and best practices
Notwithstanding the fact that this analysis measures documentation against CNCF project maturity standards, in most cases there is more than one way to do things. Few recommendations here are meant to be prescriptive. Rather, recommendations are based on documentation best practices as understood by the reviewers. The recommended implementations represent the reviewers' experience with how apply those best practices. In other words, borrowing terminology from the lexicon of [RFCs][rfc-keywords], the changes described here should be understood as "recommended" or "should" at the strongest, and "optional" or "may" in many cases. Any "must" or "required" actions are clearly denoted as such, and pertain to legal requirements such as copyright and licensing issues.
The top-level documentation recommendations for this project are:
- Fill gaps in instructional documentation for all stakeholder roles, including project contributors.
- Organize and "signpost" documentation by role and task so that stakeholders can find documentation that supports their roles' activities.
# Definitions
These implementations rely on the following definitions.
## Organization
It is assumed that Backstage is adopted by a medium-to-large *organization* (*org*) made up of a number of *groups*.
## Group
A group is defined by its responsibility for one or more software *products* that are manageable in Backstage.
## Product
Products can include but are not limited to: internal and external toolkits and APIs; components; databases; and web-based and standalone applications.
A group needs 1) visibility into the org's entire corpus of products, and 2) to publicize its own software products to the org.
## Developer
Members of a group can have various functional and organizational roles, including: software engineer; dev-op; QA engineer; software architect; network engineer; engineering manager; and many others. These implementations refer to a group member generically as a *developer* (*dev*).
## Contributor
The org has ties to the Backstage open source software (OSS) project through developers who contribute to the project and who participate in discussions, newsgroups, and other community forums. These OSS participants, regardless of their employer or job function, are called *contributors*.
# User Roles
The only distinctions among Backstage users relevant to this implementation discussion are among *user roles*. User roles are defined to organize documentation recommendations. The following table summarizes the user roles that have been identified for that purpose.
| User Role | Use Cases |
| --- | --- |
| Evaluator | Someone who is trying to decide whether to adopt Backstage into an organization. |
| Administrator | An IT or DevOps professional responsible for standing up and maintaining an organization's instance of Backstage (the *Backstage app*). |
| Developer | The Backstage "end user". A developer, part of a group within an organization. Typically but not always a technical contributor, the developer uses Backstage to learn about and use software components within the org and to publish and document their group's software. |
| Integrator | A developer who modifies an org's Backstage app (typically by writing or modifying a plugin) to add functionality required by the org. This modification might or might not then be contributed back to the Backstage OSS project. |
| Contributor | A developer who supplies a work product (code or documentation, e.g.) to the Backstage open-source project, or who volunteers to participate by providing services (reviews, discussion, or committee membership, e.g.). Much of the contributor documentation is specifically for integrators who contribute plugins or code to the project. |
**A note about adoption champions**: A survey of Backstage adopters entitled "Backstage Insights" was undertaken by Spotify. The survey is summarized briefly in [this document][backstage-insights-summary]. Backstage Insights identifies another role, the *Champion*. Due to the complexity and level of commitment needed to adopt Backstage, Backstage Insights deems the champion necessary for an organization to successfully adopt Backstage. Adoption and the champion role are not addressed in the Backstage documentation and are beyond the scope of this analysis. They are important considerations, however, that should be addressed by any organization and for which further exploration and documentation would be valuable.
# Implementation: Fill gaps in 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. We recommend that the project first ensure that basic task documentation is covered, then build out tutorials, cookbooks, and more specialized documentation.
Broadly, the recommendation here is to do this:
1. For every [user role][user-roles], define the common use cases for each role.
2. 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
- for new users, tutorials
There is already some instructional content in the Backstage documentation. In many cases, it is intermingled with conceptual and reference information. A common example of this is in configuration instructions. Many configurations are embodied in YAML files, and the documentation web page for the configuration amounts to an explanation of the contents of a particular config file. In such cases, the page should be rewritten as two or three distinct pages: a step-by-step explanation (not just of the file contents, but where to put it, how to load it, and so on); a configuration reference that exhaustively lists all elements that the file can contain; and if necessary an introduction explaining what the configuration controls.
The sections below give recommendations for the most important instructional documentation improvements to Backstage for each user role.
## Evaluator
The website guidelines contain elements that are intended to help evaluators decide whether the product is suitable to their needs, such as a logo wall and case studies.
Technical documentation contains little that is actually geared toward evaluators, but a good technical overview valuable to all stakeholders is essential in evaluating the product.
## Administrator
The following artifacts need to be written and made findable for administrators.
1. A server installation and setup guide for administrators. Provide clear, step-by-step instructions for downloading and deploying Backstage to an organization.
Instructions can also be provided for installing a local, group-level, or test deployment, but these instructions should be separate and clearly labeled as non-production.
1. An Administrator Guide, with instructions on how to do such things as:
- Start and stop the Backstage server
- Install and configure Backstage plugins
- Manage the many software dependencies for Backstage and its plugins
- Maintain the Backstage database
- Upgrade and downgrade the Backstage release verison
- Troubleshoot common problems
- Tune server performance
## Developer
The following artifacts need to be written and made findable for developers.
1. A getting started guide for developers. Provide a clear work path that describes how to:
1. Downloead and install any necessary software components
1. Integrate Backstage with an existing development environment
1. A User Guide for developers. Provide clear instructions for these tasks:
- Adding an existing product to Backstage
- Creating a new product in Backstage
- Updating a product in Backstage
- Documenting a product in Backstage
- Deprecating and retiring a product from Backstage
- Searching for a component in Backstage
## Integrator
There are a dizzying array of issues with writing, modifying, and maintaining plugins in Backstage. This is not a detailed recipe for documenting those issues. For integrators, at a high level, a program should be undertaken to:
1. Organize integrator tasks from most basic and common (write a simple plugin; decide between backend and frontend plugin) to more complex (Integrate with external systems; use a proxy; implement authentication).
2. Where possible, using the exisitng documentation as a starting point, write step-by-step procedures for discrete integration tasks (starting with how to write a basic plugin).
3. Organize existing reference and conceptual information (such as API references and architecture discussions) into supporting documentation, referenced from the integration tasks.
## Contributor
For a plugin-dependent project like Backstage, it's vital that community members contribute plugins, for two reasons:
1. To expand the base functionality of Backstage by covering common use cases
2. To provide complete examples of how plugins are structured, written, and added to the project
Contributor documentation should be in Markdown files in the Backstage GitHub repo and should be limited to how to contribute software to the product. "How to write a plugin" documentation should be included in the website-based doc as described above.
# Organize and "signpost" documentation
Right now different types of documentation (conceptual/architectural; instructional; reference) for different user roles are intermixed throughout the documentation site.
Below is a proposed organization for Backspace by user role, based on a fairly typical documentation set for developer-oriented software. Using exactly this organization is not important. What is important, again, is to document use cases, broken down into tasks, by user role. The documentation should reflect the needs of each user role and be organized such that any user has a clear path to learning the software and becoming proficient as quickly as possible.
Some documents are used by more than one user role. These docs are listed first under the heading **Common**.
## Common
| Document | Description |
| --- | --- |
| Technical overview | A discussion of what the product is and what problems it solves. Ideally, the discussion starts with a summary and provides explanations of increasing depth to address to satisfy different audiences (evaluator -> developer -> contributor, e.g.). |
| Release notes | Release-specific information, including: new features; performance improvements; bugs and known issues; deprecated features; software dependency changes; and experimental or beta features. |
| Glossary | A dictionary of product-specific terms. Also commonly includes domain- and industry-specific terms that are necessary to understanding the product. |
| Knowledge base | An encyclopedic collection of related background, conceptual, and reference information that doesn't fit elsewhere in the documentation. Similar to a FAQ, but more structured, more searchable and, therefore, more useful. |
## Evaluator
| Document | Description |
| --- | --- |
| Logo wall | Not a technical document, but a *de rigeur* feature on a product website these days. The logo wall shows at a glance an instantly recognizable selection of organizations that use the product. The logos typically link to testimonials or to the organizations' own websites. |
| Case studies | Another element on a product website that is as much marketing as technical material, a case study nonetheless helps an evaluator decide whether to adopt the product. A handful of well written case studies is sufficient. |
## Administrator
| Document | Description |
| --- | --- |
| CLI reference | An indexed reference to the command-line interface. The Backstage CLI does a wide variety of tasks and is used both the administrator and by developers. |
| Installation and configuration guide | A guide to downloading, installing, and configuring an organization-wide Backstage instance ("app"). |
| Administrator guide | Contains all tasks the administrator needs to maintain the Backstage app: onboarding developers; installing plugins; starting, stopping, upgrading, and troubleshooting the app; using containers; evaluating and tuning server performance. |
## Developer
| Document | Description |
| --- | --- |
| Getting started guide | A document that usually walks a developer through setting up a development environment (for a language or API). In the case of Backstage, this is more of an integration with their existing environment. Nonetheless, this should explain how to configure all the tools the developer needs to begin using Backstage. |
| Developer guide | Contains all tasks that the developer needs to use the Backstage app under normal circumstances: adding, modifying, and searching for products; writing documentation; using templates. |
| CLI reference | An indexed reference to the command-line interface. The Backstage CLI does a wide variety of tasks and is used both the administrator and by developers. |
| Tutorials | Tasks that are good candidates for tutorials are difficult, often-used tasks that must be mastered to use the product effectively. Many of these are probably in daily use by developers. |
| Cookbooks | There might be specialized tasks required of developers by an organization that should be documented, especially if they are performed infrequently. |
## Integrator
| Document | Description |
| --- | --- |
| Technical overview | Same as the common technical overview, but an integrator will need more detail about the plugin architecture. |
| Cookbooks | The integrator will need to write plugins. This encompasses a large body of task knowledge. The best way to document these is as a collection of tasks or procedures explaining how to complete each task. Even with a comprehensive collection of task documents, some creativity is probably needed by the integrator, since every new plugin by definition is solving a new problem. |
## Contributor
| Document | Description |
| --- | --- |
| GitHub Instructions | Contributing a plugin to Backstage is essentially an exercise in creating and shepherding a pull request through the Backstage community process. This can be documented entirely in GitHub, or it can be a separate section in the Backstage documentation. Regardless, the contributing instructional material should be separate from the integration/"How to write a plugin" material. |
# Website and documentation infrastructure
## Single-source repo
Move the Backstage documentation out of the [Backstage repo][backstage-github-project] and into its own repo within the [Backstage project][backstage-backstage]. Write explicit instructions for contributing to documentation and place them in the repo README.
In the meantime, put references to the documentation contributing and build instructions alongside the project code instructions in the contributor documentation in the Backstage repo.
## Case studies/social proof
Implement a **logo wall** of participating organizations, with links to testimonials or the organizations' websites. Write or solicit a handful of representative case studies and link them from the website.
## SEO, Analytics and site-local search
Add documentation and website custodians to the project maintainer lists in `OWNERS.md` and wherever else project maintainers are documented.
## Maintenance planning
Add a prominent call for website and documentation maintainers in the project introduction alongside the call for code maintainers.
## Accessibility
Improve compliance in these areas:
- **Images** should have alternative text.
- **Links** should have discernible text.
<!--- References --->
[backstage-analysis]: ./backstage-analysis.md
[backstage-backstage]: https://github.com/backstage/backstage
[backstage-github-project]: https://github.com/backstage
[backstage-insights-summary]: ./backstage-insights-summary.md
[user-roles]: #user-roles

View File

@ -0,0 +1,76 @@
# Backstage Insights
This document briefly summarizes the research, branded "Backstage Insight," done at Spotify in 2022 to identify ways to drive adoption of Backstage.
## Why Backstage Adoption is Hard
Backstage is a complex system that must be adopted universally throughout an organization in order to reap its full benefits.
### Definition of "Adoption"
Adoption here means:
1. An organization-wide instance ("app") of Backstage must be installed, run, maintained, and actively updated with new capabilities via plugins;
2. All development groups in the organization must use Backstage to, at the least, catalog their projects. Additional benefits accrue if groups also:
1. Manage documentation in Backstage;
2. Use templates in Backstage to create new software artifacts; and
3. Automate development using Backstage, including integrating Backstage with other development support systems.
3. Backstage must be recognized throughout the organization as the "source of truth" about all software development within the organizaiton.
### Barriers to Adoption
Backstage Insights identifies three types of barriers to adoption: technical, cultural, and combination.
*Technical* barriers are the effort required for groups to adopt Backstage for software projects, including writing or adapting plugins for features unique to a particular project or group.
Backstage is a very flexible product with vast potential to adapt to variations in organizational infrastructure and workflows. The flipside is that Backstage is complex, and almost always requires significant investment of talent and resources to implement fully.
*Cultural* barriers are institutional resistance to adopting Backstage due to:
- Unwillingness to devote resources to adopting and maintaining Backstage;
- Skepticism of the value of Backstage;
- General resistance to change, which is always present in an organization.
Cultural barriers are typically more difficult to overcome than technical ones.
*Technical and Cultural* were described as barriers that exhibit a combination of technical and cultural elements.
## The Backstage Adoption Model
Backstage Insights looked for commonalities in the adoption path of a number of surveyed organizations. The following five-step model was found to be commonly, if not universally, descriptive of the adoption path of the organizations surveyed.
1. **Problem identification, definition, and alignment**: Identify the problem or problems that require a software solution like Backstage. Recruit the people necessary to pursue a solution.
2. **Finding the right solution**: The identified participants frame the problem and search for solutions. In some cases Backstage had already been identified as a likely or potential solution.
3. **Demo proof of concept**: Set up a limited demo to determine that: Backstage can solve the problem(s); Backstage fits with the organization's infrastructure; resources are available, with the right skill sets, to implement Backstage; Backstage provides value.
4. **Full proof of concept**: Build out functionality and get feedback from users. Gather more rigorous metrics regarding perceived value. This stage is characterized by some hard-to-reverse implementation decisions, so due diligence is advised.
5. **Driving full adoption**: This stage involves committing resources to full adoption. In some cases, expensive mistakes might need to be corrected, despite due diligence in step 4. Resources need to be devoted to shifting the culture to one that values and relies on Backstage.
### The Problem To Be Solved: A Note on Desired Outcomes
*Outcomes* are organizational results of adopting Backstage. Desired outcomes are ones that alleviate the problems identified in (1), above.
Backstage Insights surveyed both internal (Spotify) Backstage adopters and external organizations to determine the outcomes adopters hoped to achieve. The number one outcome for both internal and external users was to **maintain clear ownership of software**.
For external adopters, other top outcomes were consistent with *improving the maturity level of their development practices*, for example standarizing software development practices and increasing collaboration. For internal adopters, other top outcomes were goals that relied on already-mature development practices, for example improving monitoring and tracking costs. The authors hypothesized that this difference was a function of the maturity level of the Backstage implementation at the surveyed organization: already high (for Spotify, where Backstage has been used for years) or low and still developing (for other organizations).
## Necessity of a Champion
The authors of Backstage Insights were clear that implementing Backstage in an organization requires a *champion*. This champion is dedicated at least part time to evangelizing, implementing, and driving adoption of Backstage throughout the organization.
Champions varied in their job titles, skill sets, and "everyday" roles. However, some characteristics were common to all Backstage champions:
- Champions were dedicated to changing the status quo to make the professional lives of developers better throughout the organization.
- Champions believed that Backstage was the right platform for positive change.
- Champions were typically leaders (managers or technical leads) before taking on the champion role.
- Champions used a wide variety of technical, leadership, and interpersonal skills to drive the adoption of Backstage.
### Champion Job Titles
This is a list of job titles held by Backstage champions in surveyed organizations:
* DevEx Engineering Manager (2)
* Staff Engineer
* Software Architect
* QA Manager
* Technical PM
* IT Engineering Manager
* Engineering Manager
* Site Reliability Engineer

View File

@ -0,0 +1,31 @@
# Backstage User Roles for Doc
This document provides recommendations for user roles, or personas, for Backstage. The goal here is to identify a working set of distinct user roles around which to organize the Backstage documentation.
The documentation should ultimately be task-oriented, with tasks organized around users and their objectives. A process for creating this type of documentation set is under development in the CDCF Tech Doc GitHub project.
## Summary of Proposed User Roles
The following table summarizes Backstage user roles proposed by the Backstage OSS community\*. The roles assume the following:
- An organization has software objectives that cannot be met without a centralized solution, and has resolved to commit resources to solving those problems.
- The organization adopts Backstage, setting up a single, central Backstage server instance ("app").
- The organization contains many development groups. These groups can be organized in any manner, but this document assumes a flat organization of small development groups.
- "Development group" refers to any group that produces a software product manageable in Backstage, including but not limited to internal and external toolkits and APIs; components; databases; and web-based and standalone applications.
- The organization has ties to the Backstage open source software project, specifically:
- One or more engineers who contribute to the project.
- Developer users who ask questions and participate in discussions, newsgroups, and other community forums.
\*Ultimately. This document is a work in progress to be revised by consensus.
| User Role | Org Level | Description |
| --------- | --- | ----------- |
| Champion | Organization | A combination evangelist/implementer/coordinator dedicated to driving adoption of Backstage at an organization. The champion is vital to removing barriers to developer adoption by, among other things, making the developer experience a delight and by demonstrating Backstage's value. |
| Administrator | Organization | An IT or DevOps professional responsible for setting up and maintaining an organization's Backstage app. The administrator might or might not also be the Backstage champion. |
| Internal Integrator | Group or Org | An engineer within an organization who creates or modifies the org's Backstage app (typically by writing or modifying a plugin) to add functionality required by the org. This modification might or might not then be contributed back to the Backstage OSS project. |
| Group maintainer | Group | A member of a software group responsible for keeping the group's Backstage entries up to date. |
| End-user developer | Group | The "bread and butter" user of Backstage, an end-user developer is part of a group within an organization that uses Backstage to both learn about and use software components within the org and to publish and document its own software. |
| Contributor developer | Backstage OSS | A contributor to the Backstage open-source project. Many if not most contributors develop plugins to extend the functionality and integration capabilities of Backstage. |
| Integrator | Backstage OSS | A contributing developer who develops a plugin that enables Backstage to interoperate with another system. |
These roles might overlap; or, in some cases, especially in small organizations, the same person might fill two or more roles. For example, the champion might be the Backstage administrator, and/or might also be responsible for internal integration projects. Or, an integration project might fall to an end-user developer in a group that requires functionality not yet available in Backstage.