Documentation workflow | GitLab Docs (original) (raw)

Documentation at GitLab follows a workflow. The process for creating and maintaining GitLab product documentation depends on whether the documentation is:

Documentation is requiredfor a milestone when:

Documentation is not typically required when a backend feature is added or changed.

Branch naming

The CI/CD pipeline for the main GitLab project is configured to run shorter, faster pipelines on merge requests that contain only documentation changes.

If you submit documentation-only changes to Omnibus, Charts, or Operator, to make the shorter pipeline run, you must follow these guidelines when naming your branch:

Branch name Valid example
Starting with docs/ docs/update-api-issues
Starting with docs- docs-update-api-issues
Ending in -docs 123-update-api-issues-docs

Moving content

When you move content to a new location, and edit the content in the same merge request, use separate commits.

Separate commits help the reviewer, because the MR diff for moved content does not clearly highlight edits. When you use separate commits, the reviewer can verify the location change in the first commit diff, then the content changes in subsequent commits.

For example, if you move a page, but also update the content of the page:

  1. In the first commit: Move the content to its new location and put redirects in place if required. If you can, fix broken links in this commit.
  2. In subsequent commits: Make content changes. Fix broken links if you haven’t already.
  3. In the merge request: Explain the commits in the MR description and in a comment to the reviewer.

You can add as many commits as you want, but make sure the first commit only moves the content, and does not edit it.

Documentation for a product change

Documentation is required for any new or changed feature, and is:

Developer responsibilities

Developers are the primary authors of documentation for a feature or feature enhancement. They are responsible for:

The first merge request where a feature can be tested should include the documentation, even if the feature is behind a feature flag. For more information, see the guidelines.

The author of this MR, either a frontend or backend developer, should write the documentation.

Community Contributors can ask for additional help from GitLab team members.

Because the documentation is an essential part of the product, if a ~"type::feature"issue also contains the ~documentation label, you must ship the new or updated documentation with the code of the feature.

Technical writers are happy to help, as requested and planned on an issue-by-issue basis.

For feature issues requiring documentation, follow the process below unless otherwise agreed with the product manager and technical writer:

Review

Before merging, documentation changes committed by the developer must be reviewed by:

Product manager responsibilities

Product managers are responsible for thedocumentation requirements for a feature or feature enhancement. They can also:

For issues requiring any new or updated documentation, the product manager must:

Everyone is encouraged to draft the documentation requirements in the issue. However, a product manager will:

Technical writer responsibilities

Technical writers are responsible for:

Planning

The technical writer:

Collaboration

By default, the developer will work on documentation changes independently, but the developer, product manager, or technical writer can propose a broader collaboration for any given issue.

Additionally, technical writers are available for questions at any time.

Review

Technical writers provide non-blocking reviews of all documentation changes, before or after the change is merged. Identified issues that would block or slow a change’s release are to be handled in linked, follow-up MRs.

Documentation requirements

Feature documentation requirements should be included as part of the issue for planning that feature in the Documentation section in the issue description. Issues created using theFeature Proposal templatehave this section by default.

Anyone can add these details, but the product manager who assigns the issue to a specific release milestone will ensure these details are present and finalized by the time of that milestone’s kickoff.

Developers, technical writers, and others may help further refine this plan at any time on request.

The following details should be included:

Including documentation with code

Currently, the Technical Writing team strongly encourages including documentation in the same merge request as the code that it relates to, but this isn’t strictly mandatory. It’s still common for documentation to be added in an MR separate from the feature MR.

Engineering teams may elect to adopt a workflow where it is mandatory that documentation is included in the code MR, as part of theirdefinition of done. When a team adopts this workflow, that team’s engineers must include their documentation in the same MR as their feature code, at all times.

Downsides of separate documentation MRs

A workflow that has documentation separated into its own MR has many downsides.

If the documentation merges before the feature:

If the documentation merges after the feature:

Having two separate MRs means:

Documentation quality might be lower, because:

Benefits of always including documentation with code

Including documentation with code (and doing it early in the development process) has many benefits:

Documentation with code as a workflow

To have documentation included with code as a mandatory workflow, some changes might need to happen to a team’s current workflow:

You can visualize the parallel workflow for code and documentation reviews as:

graph TD A("Feature MR Created (Engineer)") --> |Assign| B("Code Review (reviewer)") B --> |"Approve / Reassign"| C("Code Review (maintainer)") C --> |Approve| F("Merge (maintainer)") A --> D("Docs Added (Engineer)") D --> |Assign| E("Docs Review (Tech Writer)") E --> |Approve| F

For complex features split over multiple merge requests:

UI text

Planning and authoring

A product designer should consult the technical writer for their stage group when planning to add or change UI text.

The technical writer can offer an initial review of any ideas, plans, or actual text. The technical writer can be asked to draft text when provided with the context and goal of the text. The context might include where the text would appear and what information to convey, which typically answers one or more of these questions:

Consider tagging the technical writer once in a review request with a message indicating where reviews are needed. This will help manage the volume of notifications per review round.

MR Reviews

After the merge request is created, all changes and additions to text in the UI must be reviewed by the technical writer. These might include labels (buttons, menus, column headers, and UI sections) or any phrases that would be displayed in the UI, such as microcopy or error messages.

For more information about writing and reviewing UI text, see Copy That: Helping your Users Succeed with Effective Product Copy.

Release posts

The technical writer for each stage groupreviews their group’s feature blocks(release post items) authored by the product manager.

For each release, a single technical writer is also assigned as the Technical Writing Lead to perform the structural check and other duties.

Monthly documentation releases

When a new GitLab version is released, the Technical Writing team releasesversion-specific published documentation.

Documentation feedback and improvements

To make a documentation change that is not associated with a specific code change, the Technical Writing team encourages contributors to create an MR.

If you start with an issue rather than an MR, use the documentation template. For the labels you should apply, see labels.

Also include:

If an issue requires input from the development team before a technical writer can start work, it should follow the stage and group’s issue lifecycle. For an example of an issue lifecycle, see Plan stage issues.

Review and triage documentation-only backlog issues

Routine review and triage of documentation feedback and improvement issues for your groups helps us spend the time we have on actionable issues that improve the user experience.

Prerequisites

To review and triage documentation feedback and improvement issues for your groups:

  1. Once a month, on the issue triage boards for your groups, check the Open list for new issues.
  2. Apply the labels described in documentation feedback and improvements.
  3. Aim to keep the list of open, untriaged issues at <10.
  4. Share the triaged list with the group and group PM.

Hackathons

The Technical Writing team takes part in the GitLab Hackathonand sometimes hosts a documentation-only Hackathon.

Create issues for a Hackathon

We often create documentation issues for a Hackathon. These issues are typically based on results found when you run Vale against the documentation.

  1. Run Vale against the full docset. Go to the GitLab repo and run:
    find doc -name '*.md' | sort | xargs vale --minAlertLevel suggestion --output line > ../results.txt
  2. Create issues. You have a few options:
    • Use a script to create one issue for each Markdown file listed in the Vale results. This script uses the Doc cleanup issue template.
    • Create issues one at a time by using the Doc cleanup issue template.
    • Create issues in bulk by using the Issues API.

Ensure that the labels assigned to the issues match those in the Doc cleanup issue template.

To assign an issue to a community contributor:

  1. Remove the Seeking community contributions label.
  2. Assign the user by typing /assign @username in a comment, where @username is the contributor’s handle.
  3. Mention the user in a comment, telling them the issue is now assigned to them.

Try to limit each contributor to no more than three issues at a time. You can assign another issue as soon as they’ve opened an MR for one of the issues they’re already assigned.

Review Hackathon merge requests

When a community contributor opens a Hackathon merge request:

  1. View the related issue. Ensure the user who authored the MR is the same user who asked to be assigned to the issue.
    • If the user is not listed in the issue, and another user has asked to work on the issue, do not merge the MR. Ask the MR author to find an issue that has not already been assigned or point them to Contribute to GitLab development.
  2. Work to merge the merge request.
  3. When you merge, ensure you close the related issue.

Labels

The Technical Writing team uses the following labelson issues and merge requests:

The documentation merge request templateincludes some of these labels.

Available labels

Any issue or merge request a technical writer works on must include the Technical Writing label.

To further classify the type of effort, include one or more of the following labels:

Other documentation labels include vale, docs-only, and docs-channel. These labels are optional.

Type labels

All issues and merge requests must be classified into one of three work types: bug, feature, or maintenance. Add one of the following labels to an issue or merge request:

For more information, see work type classification.

The majority of documentation work uses the type::maintenance label. You must also apply one of these subtype labels to further classify the type of maintenance work:

For example, if you open a merge request to refactor a page for CTRT, apply the type::maintenance and maintenance::refactor labels. If you open a merge request to modify the metadata, apply the type::maintenance and maintenance::workflow labels.

Workflow labels

Writers can use these labelsto describe the status of their work in an issue or merge request:

The technical writer who authors content usually adds the tw::doing label, and the technical writer who does the review usually adds the tw::finished label. For content submissions from community contributors, the technical writer would add both labels as part of their review.

The workflow is:

  1. An issue or merge request is assigned to the writer for review.
  2. The writer adds the tw::doing label while actively working.
    • If the writer stops work for more than a week, they remove the tw::doing label.
    • Whenever work restarts, the writer adds the tw::doing label again.
  3. When work is complete on the issue or merge request, a technical writer (typically the reviewer) adds the tw::finished label.
  4. The issue or merge request is Closed or Merged.

The tw::finished label indicates that the writer is done with an issue or merge request they are not closing or merging. If the Technical Writing team is closing or merging, the issue or merge request status overrides the scoped tw label status. The technical writer does not have to use the tw::finished label.

If a technical writer is presented with an open issue or merge request with atw::finished label that needs more work, the writer should re-add the tw::doing scoped label.

Post-merge reviews

If not assigned to a technical writer for review prior to merging, a review must be scheduled immediately after merge by the developer or maintainer. For this, create an issue using the Doc Review description templateand link to it from the merged merge request that introduced the documentation change.

Circumstances in which a regular pre-merge technical writer review might be skipped include:

Remember:

Pages with no tech writer review

The documentation under /doc/solutions is created, maintained, copy edited, and merged by the Solutions Architect team.

AI-generated content

Community members can make AI-generated contributions to GitLab documentation, provided they follow the guidelines in our DCO or our CLA terms.

GitLab team members must follow the guidelines documented in the internal handbook.