Thank you for your interest in contributing to the Akash Chain SDK! This document provides guidelines and instructions for contributing to this repository.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
- direnv: For environment management
Direnv will prompt for any other missing dependency.
-
Fork the repository on GitHub
-
Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/chain-sdk.git cd chain-sdk -
Set up direnv (required for development):
# Install direnv (macOS example) brew install direnv # Install direnv (Ubuntu-based) apt install direnv # Hook direnv to your shell # For bash: echo 'eval "$(direnv hook bash)"' >> ~/.bashrc # For zsh: echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc # Allow direnv in the project directory direnv allow
-
Set up vendor dependencies:
make modvendor
If you modify any .proto files, you need to regenerate the generated code:
# Generate code for all languages
make proto-gen
# Generate code for specific language
make proto-gen-go # For Go
make proto-gen-ts # For TypeScript- Follow standard Go conventions
- Use
gofmtfor formatting - Write comprehensive tests
- Use interfaces appropriately
- Document exported functions and types
- Follow TypeScript best practices
- Use ESLint for code quality
- Write unit tests with Jest
- Use proper typing and interfaces
- Follow the Protocol Buffers Style Guide
- Update documentation when modifying
.protofiles - Regenerate all language bindings after changes
Use conventional commit format:
<type>(<scope>): <description>
[optional body]
[optional footer(s)]
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Codestyle changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
Example:
feat(node): add new query endpoint for deployment status
- Add new gRPC endpoint
- Update client libraries
- Add comprehensive tests
closes/fixes/refs #123
This repository uses semantic versioning with module-specific tagging. When tagging Go modules, use the repo-tools utility instead of creating tags manually:
# Command structure:
repo-tools bump-go <major/minor/patch/prerel> <module># Main Go module pre release
repo-tools bump-go prerel go
# CLI module pre-release
repo-tools bump-go prerel go/cli
# SDL module pre-release
repo-tools bump-go prerel go/sdlThe repo-tools utility is set up by direnv and available in your PATH after running direnv allow.
- Version bump: Use
repo-toolsto create new version tags - CI/CD: Automated release pipelines will build and publish packages
- Documentation: Update changelog and documentation as needed
All issues must be reported via the Akash Network Support Repository with the repo/chain-sdk tag.
- Documentation: Check the README.md for project overview
- Discussions: Use GitHub Discussions for questions and ideas
- Community: Join the Akash Network community channels
Thank you for contributing to the Akash Network ecosystem!