Skip to content

Commit 738ae7e

Browse files
committed
docs: add Development category with testing, limitations, building, and contributing guides
Add four new documentation pages under the Development category: - Testing: test infrastructure, categories, CI/CD pipeline, how to write tests - Known Limitations: consolidated limitations from all feature docs - Building from Source: prerequisites, feature flags, WASM, cross-compilation - Contributing: development rules, coding standards, PR workflow Update CONTRIBUTING.md with accurate tooling (cargo nextest, clippy flags). Clean up .gitignore entries.
1 parent 0dfd199 commit 738ae7e

7 files changed

Lines changed: 779 additions & 134 deletions

File tree

.gitignore

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,10 @@ cobertura.xml
3333
tarpaulin-report.html
3434

3535
# Local development
36-
.claude/settings.local.json
37-
CLAUDE.md
3836
TODO.md
3937
*.disabled
4038
deny.toml
4139

4240
# Documentation build artifacts
4341
docs/_site/
4442
docs/.jekyll-cache/
45-
git_history_backup.log

CONTRIBUTING.md

Lines changed: 45 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,62 @@
11
# Contributing to Stoolap
22

3-
Thank you for your interest in contributing to Stoolap! This document provides guidelines and information about the contribution process.
3+
Thank you for your interest in contributing to Stoolap! For the full contributing guide, see our [documentation](https://stoolap.github.io/stoolap/docs/development/contributing/).
44

5-
## Code of Conduct
5+
## Quick Start
66

7-
By participating in this project, you agree to uphold our Code of Conduct (to be added).
7+
```bash
8+
# Fork and clone
9+
git clone https://github.com/YOUR-USERNAME/stoolap.git
10+
cd stoolap
11+
12+
# Build
13+
cargo build
14+
15+
# Run tests
16+
cargo nextest run
817

9-
## License Information
18+
# Lint (must pass with zero warnings)
19+
cargo clippy --all-targets --all-features -- -D warnings
1020

11-
Stoolap is licensed under the [Apache License, Version 2.0](LICENSE). By contributing to Stoolap, you agree that your contributions will be licensed under the same license.
21+
# Format
22+
cargo fmt
23+
```
1224

13-
### What this means for contributors
25+
## Development Rules
1426

15-
1. **Contribution Licensing**: All contributions you submit will be under the Apache License 2.0. If you submit code that is not your original work, please identify its source and confirm it's compatible with the Apache License 2.0.
27+
- **No TODOs**: Never write `// TODO`, `unimplemented!()`, or `todo!()`
28+
- **Performance first**: Minimize allocations, avoid unnecessary `.clone()` and `.format()`
29+
- **Test everything**: `cargo nextest run` must pass before submitting
30+
- **Zero warnings**: `cargo clippy --all-targets --all-features -- -D warnings`
31+
- **Format code**: Always run `cargo fmt`
1632

17-
2. **Contributor License Agreement (CLA)**: We currently do not require a formal CLA, but by submitting a contribution, you are agreeing that your work will be licensed under the project's Apache License 2.0.
33+
## Testing
1834

19-
3. **Patent Rights**: The Apache License 2.0 includes an express grant of patent rights from contributors to users. Be aware of this when contributing patented intellectual property.
35+
```bash
36+
# Run all tests (debug mode, never use --release)
37+
cargo nextest run
2038

21-
4. **Attribution Requirements**: You must retain all copyright, patent, trademark, and attribution notices from the source form of the work in any derivative works you distribute.
39+
# Run a specific test file (faster, compiles only that target)
40+
cargo nextest run --test my_feature_test
41+
```
42+
43+
**Important**: Use `cargo nextest run --test <name>` instead of keyword filtering. The `--test` flag compiles only the specified test binary, which is significantly faster.
44+
45+
## Pull Request Process
46+
47+
1. Ensure all tests pass
48+
2. Ensure clippy passes with zero warnings
49+
3. Ensure code is formatted (`cargo fmt`)
50+
4. Write clear commit messages
51+
5. Open a pull request against `main`
52+
53+
## License
54+
55+
Stoolap is licensed under the [Apache License, Version 2.0](LICENSE). By contributing, you agree that your contributions will be licensed under the same license.
2256

2357
### License Headers
2458

25-
All source files in the project should include a license header:
59+
All `.rs` source files must include the Apache 2.0 header:
2660

2761
```rust
2862
// Copyright 2025 Stoolap Contributors
@@ -39,123 +73,3 @@ All source files in the project should include a license header:
3973
// See the License for the specific language governing permissions and
4074
// limitations under the License.
4175
```
42-
43-
When creating new files, please include this header.
44-
45-
## Development Process
46-
47-
### Setting Up Your Development Environment
48-
49-
1. Fork the repository on GitHub
50-
2. Clone your fork locally:
51-
```bash
52-
git clone https://github.com/YOUR-USERNAME/stoolap.git
53-
cd stoolap
54-
```
55-
3. Add the upstream repository as a remote:
56-
```bash
57-
git remote add upstream https://github.com/stoolap/stoolap.git
58-
```
59-
4. Create a new branch for your feature or bugfix:
60-
```bash
61-
git checkout -b feature-or-bugfix-name
62-
```
63-
64-
### Building
65-
66-
```bash
67-
# Debug build
68-
cargo build
69-
70-
# Release build
71-
cargo build --release
72-
73-
# Build with CLI features
74-
cargo build --release --features cli
75-
```
76-
77-
### Testing
78-
79-
Before submitting your changes, please run the tests:
80-
81-
```bash
82-
# Run all tests
83-
cargo test
84-
85-
# Run library tests only
86-
cargo test --lib
87-
88-
# Run specific test
89-
cargo test test_name
90-
91-
# Run tests with output
92-
cargo test -- --nocapture
93-
```
94-
95-
### Linting
96-
97-
Ensure your code passes clippy without warnings:
98-
99-
```bash
100-
# Check library code
101-
cargo clippy --lib
102-
103-
# Check all code
104-
cargo clippy --all-targets
105-
```
106-
107-
### Formatting
108-
109-
Format your code with rustfmt:
110-
111-
```bash
112-
cargo fmt
113-
```
114-
115-
### Submitting Changes
116-
117-
1. Commit your changes using clear commit messages that explain the problem you're solving and your approach
118-
2. Push your branch to your fork
119-
3. Open a pull request against the main repository's `main` branch
120-
121-
### Pull Request Process
122-
123-
1. Update the README.md or documentation with details of your changes, if applicable
124-
2. Ensure all tests pass (`cargo test`)
125-
3. Ensure clippy passes (`cargo clippy --lib`)
126-
4. Your PR will be reviewed by maintainers, who may request changes
127-
5. Once approved, your PR will be merged
128-
129-
## Coding Standards
130-
131-
- Follow Rust standard conventions and idioms
132-
- Use `cargo fmt` for formatting
133-
- Run `cargo clippy` and fix all warnings
134-
- Keep functions small and focused
135-
- Document public APIs with doc comments (`///`)
136-
- Write tests for new functionality
137-
- Avoid `unsafe` code unless absolutely necessary (and document why)
138-
- Avoid `unwrap()` in library code - use proper error handling
139-
- No `todo!()` or `unimplemented!()` in committed code
140-
141-
## Project Structure
142-
143-
```
144-
src/
145-
├── api/ # Public Database API
146-
├── core/ # Core types (Value, Row, Schema, Error)
147-
├── executor/ # Query execution engine
148-
├── functions/ # Built-in functions (scalar, aggregate, window)
149-
├── optimizer/ # Cost-based query optimizer
150-
├── parser/ # SQL parser (lexer, AST, parser)
151-
├── storage/ # Storage engine and MVCC
152-
└── bin/ # CLI binary
153-
```
154-
155-
## Additional Resources
156-
157-
- [The Rust Book](https://doc.rust-lang.org/book/)
158-
- [Rust API Guidelines](https://rust-lang.github.io/api-guidelines/)
159-
- [Apache License 2.0 Explained](https://tldrlegal.com/license/apache-license-2.0-(apache-2.0))
160-
161-
Thank you for contributing to Stoolap!

docs/_data/doc_categories.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@
66
- name: "Functions"
77
- name: "SQL Features"
88
- name: "Performance"
9+
- name: "Development"

0 commit comments

Comments
 (0)