Thank you for your interest in contributing to Kumeo! This document provides guidelines and instructions for contributing to this project.
- Code of Conduct
- How Can I Contribute?
- Development Environment Setup
- Coding Standards
- Commit Guidelines
- Pull Request Process
- Testing
- Documentation
This project and everyone participating in it is governed by the Kumeo Code of Conduct. By participating, you are expected to uphold this code.
Bugs are tracked as GitHub issues. Before creating bug reports, please check the existing issues to see if the problem has already been reported.
When you create a bug report, include as many details as possible:
- A clear and descriptive title
- Steps to reproduce the behavior
- Expected behavior
- Actual behavior
- Versions of relevant software (OS, Rust version, etc.)
- Screenshots if applicable
Enhancement suggestions are also tracked as GitHub issues. When creating an enhancement suggestion, include:
- A clear and descriptive title
- Detailed explanation of the proposed feature
- Expected behavior
- Why this enhancement would be useful to most Kumeo users
- Fill in the required template
- Follow the coding standards
- Include appropriate tests
- Update documentation as needed
- Rust (stable channel, 1.60.0 or later)
- Cargo (comes with Rust)
- Node.js (v16.0.0 or later) and npm for UI development
- Kubernetes cluster (for testing deployment)
- NATS server (for testing event messaging)
- Fork the repository on GitHub
- Clone your fork locally
git clone https://github.com/YOUR-USERNAME/kumeo.git
cd kumeo- Add the upstream repository
git remote add upstream https://github.com/raestrada/kumeo.git- Install development dependencies
rustup install stable
cargo install --locked mdbook # For documentation
npm install -g svelte-language-server # For UI development- Build the project
cd compiler && cargo build
cd ../runtime && cargo build- Follow the Rust API Guidelines
- Use
cargo fmtto format your code - Run
cargo clippyto catch common mistakes - Document public APIs with rustdoc
- Follow the JavaScript Standard Style
- Use ESLint and Prettier for formatting
- Document components and functions
- Follow the examples in the documentation
- Be consistent with naming conventions
- Include comments for complex workflows
We follow the Conventional Commits specification:
feat: A new featurefix: A bug fixdocs: Documentation changesstyle: Changes that do not affect the meaning of the coderefactor: Code changes that neither fix a bug nor add a featureperf: Performance improvementstest: Adding or fixing testschore: Changes to the build process or auxiliary tools
Example: feat(compiler): add support for custom agent types
- Update the README.md or documentation with details of changes if appropriate
- Update the example/.kumeo files if needed
- Ensure all tests pass
- Get approval from at least one maintainer
- If you don't have permission to merge, a maintainer will merge the PR for you
Ensure all unit tests pass before submitting a PR:
cargo test --allFor changes to the compiler or runtime:
cd compiler && cargo test --features integration
cd ../runtime && cargo test --features integrationFor significant changes, run the end-to-end tests:
./scripts/run_e2e_tests.sh- Update the documentation when adding or changing features
- Documentation is written in Markdown
- Use
mdbookto build and preview the documentation:
cd docs && mdbook build
mdbook serveThank you for contributing to Kumeo!