Skip to content

Commit 88f49dc

Browse files
authored
[website] Add "Contribute Documentation" for community usage (#694)
1 parent ce277f8 commit 88f49dc

File tree

1 file changed

+148
-1
lines changed

1 file changed

+148
-1
lines changed

website/community/how-to-contribute/contribute-docs.md

Lines changed: 148 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,152 @@ sidebar_position: 1
2121

2222
# Contribute Documentation
2323

24-
TODO
24+
The Fluss website serves as the primary interface between the project and its community, with several key purposes:
2525

26+
* Introducing Fluss as a streaming storage solution for real-time analytics
27+
* Providing technical documentation for users and developers
28+
* Facilitating downloads and deployment guidance
29+
* Fostering community engagement and contributions
30+
* Showcasing Fluss features, use cases, and roadmap
31+
32+
This website is built with Docusaurus, a modern static website generator optimized for documentation. For advanced features and tools, visit the [official Docusaurus documentation](https://docusaurus.io/).
33+
34+
This guide will walk you through the process of contributing to the Fluss documentation, from setting up your environment to submitting your changes.
35+
36+
## Build Documentation
37+
38+
### Fork and Clone
39+
Fork the [Fluss repository](https://github.com/alibaba/fluss)
40+
41+
``` bash
42+
git clone https://github.com/<your-username>/fluss.git
43+
cd fluss
44+
```
45+
46+
### Create a Branch
47+
```bash
48+
git checkout -b feature-branch-name
49+
```
50+
51+
### Install Dependencies
52+
```bash
53+
cd website
54+
npm install
55+
```
56+
57+
### Directory Structure
58+
The Fluss documentation is organized as follows:
59+
```
60+
fluss/website/
61+
├── docs/ # Main documentation (current version)
62+
│ ├── intro.md
63+
│ ├── concepts/
64+
│ ├── quickstart/
65+
│ └── ...
66+
├── blog/ # Release and feature blogs (not versioned)
67+
├── community/ # Community content (not versioned)
68+
├── static/ # Static assets
69+
│ └── img/ # Images for documentation
70+
├── versioned_docs/ # Previous versions of documentation
71+
│ ├── version-0.6/
72+
│ └── version-0.5/
73+
├── versioned_sidebars/ # Sidebar configurations for different versions
74+
├── src/ # Source files for the website
75+
│ └── plugins/ # Custom plugins including version replacement
76+
├── build_versioned_docs.sh # Script for building versioned docs
77+
├── docusaurus.config.ts # Main configuration for Docusaurus website
78+
├── sidebars.ts # Sidebar configuration
79+
└── package.json # Node.js dependencies and scripts
80+
```
81+
82+
### Validation (including versioned docs)
83+
- Edit or create Markdown files in the appropriate directories
84+
- Generate versioned docs (simulates what CI does)
85+
```bash
86+
./build_versioned_docs.sh
87+
```
88+
- Then build the complete site which checks broken links
89+
``` bash
90+
npm run build -- --no-minify
91+
```
92+
93+
### Preview Changes
94+
- Start the local development server to preview changes
95+
```bash
96+
npm run start
97+
```
98+
- View your changes at [http://localhost:3000/fluss-docs/](http://localhost:3000/fluss-docs/)
99+
100+
## Versioned Documentation
101+
- Only content in `website/docs/* `is versioned
102+
- Each version corresponds to a branch (e.g., release-0.5, release-0.6)
103+
- Fixes for `website/docs/*` documentation related to old versions should be backported to their corresponding release-x.y branches
104+
- The main branch contains the latest (unreleased) documentation
105+
- Other pages (community, roadmap) are only maintained in the main branch
106+
107+
### Updating Existing Versions
108+
- Checkout the corresponding release branch
109+
``` bash
110+
git checkout release-0.5
111+
```
112+
- Make changes to files in `website/docs/`
113+
- Create a pull request to that specific release branch
114+
115+
### Version Expressions
116+
Fluss documentation uses placeholder variables that are automatically replaced during the build process. Note that these variables are only available for documentation under `website/docs/*`.
117+
- `$FLUSS_VERSION$`: Expands to the full version (e.g., "0.6.0")
118+
- `$FLUSS_VERSION_SHORT$`: Expands to the short version (e.g., "0.6")
119+
120+
For example, to link to a specific version of Fluss binary:
121+
122+
```bash
123+
tar -xzf fluss-$FLUSS_VERSION$-bin.tgz
124+
```
125+
126+
The above code block will be rendered as follows for 0.6 version:
127+
128+
```bash
129+
tar -xzf fluss-0.6.0-bin.tgz
130+
```
131+
132+
## Documentation Linking
133+
134+
### Do's
135+
- Use file paths with .md extensions
136+
``` markdown
137+
[Table Design](table-design/overview.md)
138+
```
139+
140+
- Use paths relative to the docs/ directory
141+
``` markdown
142+
[Flink Engine](engine-flink/getting-started.md)
143+
```
144+
145+
146+
### Don'ts
147+
- Use absolute links like `/docs/` or `/blog/`
148+
- Use URLs without file extensions
149+
150+
### Link Validation
151+
- Pull request CI checks for broken links using `.github/workflows/docs-check.yaml`
152+
- Fix any broken links identified in the CI build
153+
- Test locally with `npm run build` in the website directory
154+
155+
## Submitting Your Contribution
156+
1. Commit your changes with a descriptive message:
157+
```bash
158+
git add .
159+
git commit -m "[docs]: add/update documentation for feature..."
160+
```
161+
2. Push to your fork:
162+
```bash
163+
git push origin feature-branch-name
164+
```
165+
3. Create a pull request on GitHub from your branch to the appropriate branch
166+
- For latest docs: target the main branch
167+
- For version-specific changes: target the specific release-x.y branch
168+
169+
## Deployment Process
170+
- The `.github/workflows/docs-deploy.yaml` workflow automatically deploys documentation
171+
- Triggers when changes are pushed to `website/*` in any `release-*` branches or `main`
172+
- Runs `build_versioned_docs.sh` to collect versioned docs from all release branches

0 commit comments

Comments
 (0)