socktop-webterm/docs/CONTRIBUTING.md

345 lines
6.8 KiB
Markdown

# Contributing to socktop Documentation
Thank you for your interest in improving the socktop documentation!
## Quick Start
1. **Install documentation tools:**
```bash
./setup-docs.sh
```
2. **Make your changes** to the relevant `.md` files in `src/`
3. **Test locally:**
```bash
mdbook serve
```
Open http://localhost:3000 to preview
4. **Submit a pull request** with your changes
## Documentation Structure
```
docs/src/
├── SUMMARY.md # Table of contents (edit when adding pages)
├── introduction.md # Project overview
├── installation/ # Installation guides
├── usage/ # Usage documentation
├── security/ # Security guides
└── advanced/ # Advanced topics
```
## Writing Guidelines
### Style Guide
- **Be clear and concise** - Users want answers, not prose
- **Use active voice** - "Run the command" not "The command should be run"
- **Include examples** - Show, don't just tell
- **Test your code** - Verify all commands and code examples work
- **Link related content** - Help users discover related topics
### Markdown Formatting
Use standard Markdown with these conventions:
#### Code Blocks
Always specify the language:
~~~markdown
```bash
cargo install socktop
```
```rust
use socktop_connector::*;
```
```toml
[profiles.server]
url = "ws://localhost:3000"
```
~~~
#### Command Examples
Show both the command and expected output:
```bash
# Check version
socktop --version
# Output: socktop 1.50.2
```
#### Admonitions
Use clear callouts for important information:
```markdown
**Note:** This requires root permissions.
**Warning:** This will delete all data.
**Tip:** Use Ctrl+C to exit.
```
#### Links
Use descriptive link text:
```markdown
✅ Good: See [Agent Service Setup](../installation/agent-service.md)
❌ Bad: Click [here](../installation/agent-service.md)
```
### Page Structure
Each page should follow this template:
```markdown
# Page Title
Brief introduction explaining what this page covers.
## Section 1
Content...
### Subsection 1.1
More specific content...
## Section 2
More content...
## Next Steps
- [Related Topic 1](./related-topic-1.md)
- [Related Topic 2](./related-topic-2.md)
<!-- TODO: Add more documentation -->
<!-- TODO: Add specific improvements needed -->
```
## Adding New Pages
1. **Create the file** in the appropriate directory:
```bash
touch src/installation/new-guide.md
```
2. **Add to SUMMARY.md** in the correct section:
```markdown
# Installation
- [Quick Start](./installation/quick-start.md)
- [New Guide](./installation/new-guide.md) # Add here
```
3. **Write the content** following the guidelines above
4. **Test the build:**
```bash
mdbook build
mdbook serve
```
5. **Check for broken links:**
- Navigate to your new page
- Click all internal links
- Verify they work correctly
## Updating Existing Pages
1. **Edit the `.md` file** directly
2. **Maintain consistency:**
- Keep the same writing style
- Don't remove useful examples
- Update version numbers if needed
3. **Update related pages** if your changes affect them
4. **Test thoroughly:**
```bash
mdbook serve
```
## TODO Comments
Use TODO comments to mark areas needing work:
```markdown
<!-- TODO: Add more documentation -->
<!-- TODO: Add screenshots -->
<!-- TODO: Add video demonstration -->
<!-- TODO: Expand with more examples -->
```
These help identify areas for future improvement.
## Screenshots and Images
When adding images:
1. **Create an `images/` directory** in the relevant section:
```bash
mkdir -p src/installation/images
```
2. **Use descriptive filenames:**
```
✅ Good: installation-apt-repository.png
❌ Bad: screenshot1.png
```
3. **Reference in Markdown:**
```markdown
![APT Repository Setup](./images/installation-apt-repository.png)
```
4. **Optimize images:**
- Use PNG for screenshots
- Use JPG for photos
- Compress to reduce file size
- Maximum width: 1200px
## Code Examples
### Shell Scripts
```bash
#!/bin/bash
# Always include a description comment
# Use descriptive variable names
SERVER_URL="ws://localhost:3000"
# Show error handling
if ! command -v socktop &> /dev/null; then
echo "Error: socktop not installed"
exit 1
fi
# Clear, commented steps
socktop "$SERVER_URL"
```
### Rust Code
```rust
// Include necessary imports
use socktop_connector::*;
// Add comments for complex logic
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Connect to agent
let mut connector = connect_to_socktop_agent("ws://localhost:3000/ws").await?;
// Request metrics
match connector.request(AgentRequest::Metrics).await {
Ok(AgentResponse::Metrics(m)) => {
println!("CPU: {:.1}%", m.cpu_total);
}
Err(e) => eprintln!("Error: {}", e),
_ => unreachable!(),
}
Ok(())
}
```
### Configuration Files
Always show complete, working examples:
```toml
# ~/.config/socktop/profiles.toml
[profiles.production]
url = "wss://prod.example.com:3000"
token = "your-token-here"
ca_cert = "/etc/ssl/certs/ca.pem"
verify_tls = true
```
## Testing Your Changes
### Local Preview
```bash
# Start development server
mdbook serve
# Open in browser
# Navigate to your changed pages
# Verify formatting and links
```
### Build Test
```bash
# Clean build
rm -rf book/
mdbook build
# Check for warnings
# Fix any broken links or errors
```
### Cross-Reference Check
- Click all internal links
- Verify they point to correct pages
- Check that anchor links work
- Test external links
## Submitting Changes
1. **Commit with clear messages:**
```bash
git add docs/src/installation/new-guide.md
git commit -m "docs: Add new installation guide for Docker"
```
2. **Push to your fork:**
```bash
git push origin docs/docker-install
```
3. **Create pull request:**
- Describe what you added/changed
- Explain why it's needed
- Link to any related issues
## Documentation Priorities
Focus on these high-impact areas:
1. **Missing content** marked with TODO comments
2. **User-reported confusion** from issues/discussions
3. **New features** that need documentation
4. **Common questions** that arise frequently
5. **Error scenarios** and troubleshooting
## Getting Help
- **Questions?** Open a discussion on GitHub
- **Found a bug in docs?** Open an issue with the "documentation" label
- **Want to discuss major changes?** Start with an issue before writing
## Recognition
All documentation contributors will be acknowledged in:
- Git history
- Contributors list
- Release notes (for significant contributions)
## Thank You!
Good documentation is crucial for project success. Your contributions help users get started faster and use socktop more effectively. Thank you for helping improve the documentation! 🎉