I've been looking over the current etcd website and documentation, and feel that a refactor is warranted in order to improve them. Over the next few months, I plan to commit a significant part of my personal time to doing the below; I'm looking for the project's approval that these are all things that should get done. I also have the support of CNCF's web designer to help with this.
Objectives
To make etcd.io the primary destination for information about how to run, deploy, maintain, and scale etcd, both as a real resource and via search engines.
What's Working
The etcd documentation is automatically built based on the sources in the main development repository, so that we have regular updates when new versions are released. We have fully browesable per-version documentation that contains a lot of information about etcd code and internals.
What's Not Working
Currently etcd.io is often not the first hit when searching on common etcd tasks, such as "etcd setup", "how can I scale etcd", or "etcd troubleshooting". Instead, various random other pages are, some associated with our project (such as the CNCF blog) and some not (Rancher.com or Portworx pages). Importantly, because the most findable sources are not part of the official etcd documentation, the information on them is often out of date.
Part of the reason for this is that the existing documentation is not very browseable, and is structured in a way to give it poor SEO. It is also difficult for beginning users to find what they need. This is something that we can fix.
Improvement Plan
Short Term
Home Page Improvements
Add the following static pages to the website, linked off a section on the home page:
- Documentation TOC - page with an annotated TOC for the documentation and direct links to important pages.
- Download Etcd - page with links to sources, packages, and containers for getting Etcd and installing it (cross-link to 3,4)
- Getting Started with Etcdctl - page with simple instructions on how to install and get started with Etcdctl, including authentication to existing clusters.
- Getting Started with Etcd - page with simple, 80% solution, instructions on installing Etcd on a Linux server.
- Troubleshooting Etcd - page with lots of links to things like how to analyze errors, how to file a bug, etc. Add links to relevant blog posts as they get written.
Each of these static pages will live in the website repo rather than docs; as much as possible they will be somewhat version-agnostic. All basics will be covered on the static page, with links off of them only for more in-depth review or unusual circumstances (e.g. "etcdctl kerberos authentication").
Documentation Content
Replace TOC for documentation navigation with one that makes more logical sense from a "user journey" point of view. This will be the same TOC displayed on the static page. At a top level, this would mean replacing the existing sections with the following:
- Getting Started (some of which links back to static pages, or copies of those pages)
- Administration (Operations Guide + Upgrading + Platforms + some other pages which are operational, like Metrics)
- Developer Guide (Developer guide + Learning Etcd)
- Contributor Guide (Currently would include Reporting Bugs and Issue Triage, but more content later)
- Additional Information (FAQ + Benchmarking + some other pages)
Each section will be reworked so that it follows some kind of logical order, for example from installation, to growing the cluster, to upgrading. Note that this may require adding additional required header information into existing documentation files.
We also need to fix multi-version navigation. That is, switching "versions" of the documentation should automatically navigate to that page in the selected version of the docs, if that page exists. If this is challenging to do with the documentation toolchain we have, re-evaluate whether we want to keep versioned documentation.
Blog
Encourage weekly blog posts of unique content, mostly alternating how-to articles and release updates (patches, etc.). The new content here will drive some traffic as well as supply material for future documentation.
Cleanup
Fix 404s: we have a lot of lost pages. These need to get replaced with redirects.
Shorten redirect chains (not sure how many of these we have)
Add a Documentation tag to both the Etcd and Website repos so that we can start tracking docs issues.
Ongoing/Long Term
Blog Transfer
As we accumulate extra "How To" information into our blog, this content will be reworked in order to create a "Solutions" section for the documentation. This will be like the Tasks section in the Kubernetes documentation. Such solution-oriented documentation tends to attract links from developer sites. To the extent possible, to support this, we will develop and maintain a "blogs wanted" list of solutions for which we'd like a blog post.
Documentation Content
Add a review checklist of documentation pages to be reviewed with each version release. This helps prevent staleness and inaccuracy. Or, if we don't have time to review them, at least we have a TODO list for contributors.
Build out the contributor section, encompassing the information in Contributing.md, and add information specifically about contributing to the documentation.
Create and build out a Solutions section per the above.
Documentation Contributors
Launch a long-term campaign to attract documentation-only contributors in order to reduce burden on the primary maintainers. Such a campaign would include:
- Clear documentation on how to contribute to the docs.
- Ensuring that documentation patches get reviewed and applied (or rejected).
- A path to documentation contribution seniority/authority, so that doc contributors can review doc contributions.
- Doc sprint events at Kubecon and/or WriteTheDocs