Current state: "Accepted"
JIRA: Issue #439
In general, bookkeeper doesn't have very good documentation. In 4.5.0, we tried to improve the documentation as rewriting the website using markdown syntax and building with jekyll. The documentation looks much better than before. But the documentation itself is still lagging behind. There are a few major areas that requires contributions and improvements, such as `Usage` (Tutorials, Examples and such), `Deployment`, `Operations` (Administration), `Development` (Internals, code structures).
Currently the new bookkeeper website has good layout about sections, `Getting Started`, `Deployment`, `Administration`, `API`, `Security` and `Development`. This proposal will be based on current layout, adding two new sections and improving individual existing sections.
Following are list of changes proposed for each section.
- Add a page about docker deployment.
- Add a page about deploying on k8s (including Google Cloud Platform, AWS)
- .. (add other deployment methods)
reorganize the pages under `Administration` in this order:
- Pre Deployment - e.g. Hardware considerations, Configuration settings
- Post Deployment - e.g. Monitoring, Tools, Software Upgrade, Bookie decommissions, Deploy AutoRecovery.
- Add a page about best practices
- Add pages about examples or tutorials
- How to use API (ledger, advanced ledger or distributedlog apis) to develop different type of applications
There was a proposal about documenting the internal details a while ago. We were proposing using wiki pages for achieving that. It hasn't completed due to lack of efforts. I am copying that structure here as the base layout for `Development`.
- Basic Concepts
- Request Flow
- Ledger Storage
- Garbage Collection
- Metadata Management
- Replication & Consistency
- LAC Protocol
- Tail latency
- Ack quorum and Ensemble change
- Speculative reads
- Long poll reads
- Auto Recovery
- Code Structure
Fill up the details on `metrics` page
Propose to add new sections:
- Performance: We can include the basic benchmark, how to run it, what is the results and include other reliability test results such as jepsen results.
This can be done by the collaboration in the community. We can create a master ticket and divide the work into individual sections and then divide into individual pages. Anyone who is willing to contribute to this can pick up an item and help fill up with content.
The community can review and help organizing the content.