Thank you for your interest in contributing to Waterflow! This document provides guidelines and instructions for contributing.
- Code of Conduct
- Getting Started
- Branch Strategy
- Commit Message Guidelines
- Pull Request Process
- Development Workflow
- Coding Standards
This project adheres to a Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to security@websoft9.com.
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/Waterflow.git - Add upstream remote:
git remote add upstream https://github.com/Websoft9/Waterflow.git - Create a new branch for your work (see Branch Strategy)
We follow the Git Flow branching model:
main- Production-ready code. Only accepts merges fromrelease/*andhotfix/*branchesdevelop- Integration branch for features. Default branch for development
- Naming:
feat/<feature-name>orfeature/<feature-name> - Branch from:
develop - Merge back to:
develop - Example:
feat/yaml-parser,feat/workflow-engine
- Naming:
fix/<bug-name>orbugfix/<bug-name> - Branch from:
develop - Merge back to:
develop - Example:
fix/config-parsing,fix/memory-leak
- Naming:
hotfix/<version>orhotfix/<issue> - Branch from:
main - Merge back to:
mainANDdevelop - Example:
hotfix/1.2.1,hotfix/critical-security-fix
- Naming:
release/<version> - Branch from:
develop - Merge back to:
mainANDdevelop - Example:
release/1.3.0
- Use lowercase letters
- Use hyphens to separate words
- Be descriptive but concise
- Include issue number when applicable:
feat/123-add-authentication
We follow the Conventional Commits specification.
<type>(<scope>): <description>
- feat - New feature
- fix - Bug fix
- docs - Documentation changes
- style - Code style (formatting, etc.)
- refactor - Code refactoring
- perf - Performance improvements
- test - Test changes
- build - Build system changes
- ci - CI configuration changes
- chore - Other changes
feat(parser): add YAML validation
fix(api): resolve null pointer error
docs: update README installation steps
-
Create a PR from your feature branch to
develop(ormainfor hotfixes) -
Fill out the PR template with all required information
-
Ensure CI passes:
- All tests pass
- Code passes linting
- No new warnings
- Coverage doesn't decrease
-
Request review from at least one maintainer
-
Address feedback by pushing new commits to your branch
-
Squash commits if requested (maintainers may squash on merge)
-
PR title must follow commit message convention:
feat(scope): add new feature fix(scope): resolve bug
PRs will be automatically labeled based on:
- Size:
size/xs,size/s,size/m,size/l,size/xl - Type:
type/feature,type/bug,type/documentation, etc. - Area:
area/ci,area/tests,area/documentation, etc.
# Update your local repository
git checkout develop
git pull upstream develop
# Create feature branch
git checkout -b feat/my-new-feature
# Make changes
# ...
# Commit following commit guidelines
git commit -m "feat(scope): add new feature"# Regularly sync with upstream
git fetch upstream
git rebase upstream/develop# Push to your fork
git push origin feat/my-new-feature
# Create PR through GitHub UI# Update local develop
git checkout develop
git pull upstream develop
# Delete feature branch
git branch -d feat/my-new-feature
git push origin --delete feat/my-new-feature- Follow Effective Go
- Use
gofmtfor formatting - Use
golangci-lintfor linting - Write meaningful comments for exported functions
- Keep functions small and focused
- Write table-driven tests
- Write unit tests for new features
- Maintain or improve code coverage
- Use meaningful test names:
TestFunctionName_Scenario_ExpectedBehavior - Mock external dependencies
- Update README.md if adding user-facing features
- Add inline documentation for complex logic
- Update API documentation if changing interfaces
- Include examples where helpful
Feel free to:
- Open a Discussion
- Ask in an Issue
- Contact the maintainers
Thank you for contributing to Waterflow! 🚀