[meta] Documentation restructure
The documentation hierarchy can be vastly improved by providing:
- A standard way to store images (partially implemented, but we can do better)
- Better layout and organization of directories (also related https://gitlab.com/gitlab-org/gitlab-ee/issues/145). The current documentation tree structure can be seen in the snippet: https://gitlab.com/gitlab-org/gitlab-ce/snippets/13320. A mock documentation tree structure with the new hierarchy: https://gitlab.com/gitlab-org/gitlab-ce/snippets/15004
Changed paths
Track down changed paths as they happen along with their MR (relative to doc/
):
-
logs/logs.md
toadministration/logs.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4622 -
ci/api/
toapi/ci/
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4567 -
hooks/custom_hooks.md
toadministration/custom_hooks.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/5088 -
permissions/permissions.md
touser/permisisons.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/5210 -
workflow/protected_branches.md
touser/project/protected_branches.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/5269 -
markdown/markdown.md
touser/markdown.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4372 followed by https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/5635 -
ci/build_artifacts/README.md
split touser/project/builds/artifacts.md
andadministration/build_artifacts.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/5662 -
workflow/web_editor.md
touser/project/repository/web_editor.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4865 -
workflow/merge_requests.md
touser/project/merge_requests.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6202 -
workflow/revert_changes.md
touser/project/merge_requests/revert_changes.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6202 -
workflow/cherry_pick_changes.md
touser/project/merge_requests/cherry_pick_changes.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6202 -
workflow/wip_merge_requests.md
touser/project/merge_requests/work_in_progress_merge_requests.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6202 -
workflow/merge_when_build_succeeds.md
touser/project/merge_requests/merge_when_build_succeeds.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6202 -
workflow/authorization_for_merge_requests.md
touser/project/merge_requests/authorization_for_merge_requests.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6202 -
workflow/merge_request_approvals.md
touser/project/merge_requests/merge_request_approvals.md
https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/716 - (EE)
license/README.md
touser/admin_area/license.md
https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/730 -
customization/issue_closing.md
split intoadminstration/issue_closing_pattern.md
anduser/project/issues/automatic_issue_closing.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6466 -
container_registry/README.md
touser/project/container_registry.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6516 -
incoming_email/README.md
toadministration/reply_by_email.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6517 -
incoming_email/postfix.md
toadministration/reply_by_email_postfix_setup.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6517 -
monitoring/health_check.md
touser/admin_area/monitoring/health_check.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6807 -
monitoring/performance/gitlab_configuration.md
toadministration/monitoring/performance/gitlab_configuration.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6518 -
monitoring/performance/grafana_configuration.md
toadministration/monitoring/performance/grafana_configuration.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6518 -
monitoring/performance/influxdb_configuration.md
toadministration/monitoring/performance/influxdb_configuration.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6518 -
monitoring/performance/influxdb_schema.md
toadministration/monitoring/performance/influxdb_schema.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6518 -
monitoring/performance/introduction.md
toadministration/monitoring/performance/introduction.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6518 -
operations/README.md
toadministration/operations.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6519 -
operations/cleaning_up_redis_sessions.md
toadministration/operations/cleaning_up_redis_sessions.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6519 -
operations/moving_repositories.md
toadministration/operations/sidekiq_memory_killer.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6519 -
operations/sidekiq_memory_killer.md
toadministration/operations/sidekiq_memory_killer.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6519 -
operations/unicorn.md
toadministration/operations/unicorn.md
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6519
Changes
This section is documented in the doc styleguide http://docs.gitlab.com/ce/development/doc_styleguide.html#location-and-naming-of-documents
After a call with Drew, we decided it would be best to have as few top level
directories as possible (dirs right under doc/
).
With that in mind, we decided to use the following names and hierarchy:
Directory | What belongs here |
---|---|
user | User related stuff. Anything that can be done within the GitLab UI goes here including admin/ |
administration | Stuff that require access to the server where GitLab is installed |
api | API stuff |
development | Stuff related to the development of GitLab. Any styleguides should go here. |
legal | Legal stuff about GitLab |
install | Probably the most visited directory, since installation.md is there. Ideally this should go under administration/ , but it's best to leave it as-is in order to avoid confusion (still debated though) |
update | Same with doc/install/ . Should be under doc/administration/ , but this is a well known location, better leave as-is, at least for now. |
General rules:
- The correct naming and location of a new document, is a combination of the relative URL of the document in question and the GitLab Map design that is used for UX purposes (source, image).
- When creating a new document and it has more than one word in its name,
make sure to use underscores instead of spaces or dashes (
-
). For example, a proper naming would beimport_projects_from_github.md
. The same rule applies to images. - There are four main directories,
user
,administration
,api
anddevelopment
. - The
doc/user/
directory has five main subdirectories:project/
,group/
,profile/
,dashboard/
andadmin_area/
.-
doc/user/project/
should contain all project related documentation. -
doc/user/group/
should contain all group related documentation. -
doc/user/profile/
should contain all profile related documentation. Every page you would navigate under/profile
should have its own document, i.e.account.md
,applications.md
,emails.md
, etc. -
doc/user/dashboard/
should contain all dashboard related documentation. -
doc/user/admin_area/
should contain all admin related documentation describing what can be achieved by accessing GitLab's admin interface (not to be confused withdoc/administration
where server access is required).- Every category under
/admin/application_settings
should have its own document located atdoc/user/admin_area/settings/
. For example, the Visibility and Access Controls category should have a document located atdoc/user/admin_area/settings/visibility_and_access_controls.md
.
- Every category under
-
Next steps
- Create guidelines where to store documentation for new features https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/5641/diffs
-
Create
user/
which will have two big categories:projects/
andgroups/
where we put project and group related documentation respectively. -
Gradually move
workflow/*
underuser/
. Some documents inworkflow/
belong toadministration/
likeworkflow/lfs/lfs_administration.md
(guideline MR https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4624) -
Merge
doc/ci
to the rest of the docs https://gitlab.com/gitlab-org/gitlab-ce/issues/20168 -
Move
security
underadministration
. -
Move
integration
underadministration
.
Questions
- What happens if a feature is in both projects and groups?
Advantages
- Clear hierarchy. Right now workflow is getting a big pile of everything.
- We will be able to have meaningful URLs like
doc.gitlab.com/user/projects/merge_requests.html
. With this you immediately know that you are navigating a user related documentation concerning projects that is about merge requests. Another example:doc.gitlab.com/administration/incoming_email/postfix.html
. You immediately know that it's related to administration stuff and is about the incoming email feature and especially postfix. - Ability to check of missing docs. Since the path of docs will following a pattern, we will be able to know what is missing. Not the most accurate way to test this, but useful for a big percentage.
Disadvantages
Links pointing straight to the repo will break. Nothing will break, we will keep
the existing docs for as long as we can, and we will just change their contents just pointing
to the new locations (https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4624)
In docs.gitlab.com we will use redirects https://gitlab.com/gitlab-com/doc-gitlab-com/issues/64
We will eventually migrate the doc website to GitLab Pages, so this should be avoided.
I think it's worth it if we want to establish a default documentation hierarchy. We can make use of the social media to notify people about this and plan ahead.
My main concern is the This will probably won't change.install/
dir which according to the plan should be
moved under administration/
. The installation guide is probably the most
viewed document.
I strongly believe that we should make the move, the earlier the better. We can
keep the docs under install/
and modify them to point to the new location.
Then in next major GitLab version or in 6+ months we can ditch the install/
dir altogether.