Contributing to SELF Chain
Welcome to SELF Chain! We're excited that you're interested in contributing to our open-source blockchain ecosystem. This document provides guidelines and instructions for contributing to SELF Chain.
๐ Our Open-Source Philosophyโ
SELF Chain embraces the Linux/open-source ethos. We believe in:
- Transparency: Open development process and clear communication
- Meritocracy: Contributions speak louder than titles
- Collaboration: Building together is stronger than building alone
- Security: Protecting users while enabling innovation
- Accessibility: Making blockchain technology available to everyone
๐ Table of Contentsโ
- Code of Conduct
- Getting Started
- How to Contribute
- Development Setup
- Contribution Areas
- Security Considerations
- Pull Request Process
- Community
Code of Conductโ
By participating in this project, you agree to abide by our Code of Conduct. We are committed to providing a welcoming and inclusive environment for all contributors.
Getting Startedโ
โ ๏ธ Important: SELF Chain is in active development. Please review our Project Status to understand what's currently available.
-
Join our Community
- Discord: Join SELF Community
- Follow us on Twitter/X
- Star and watch this repository
- GitHub Discussions for technical questions
-
Understand the Project
- Read our documentation
- Review the Project Status for current state
- Review the architecture overview
- Understand Proof-of-AI consensus
-
Find Your First Issue
- Look for issues labeled
good-first-issue
- Check
help-wanted
labels for areas needing assistance - Join Discord or start a GitHub Discussion before starting major work
- Note: Many components are still being developed - check feasibility first
- Look for issues labeled
How to Contributeโ
๐ Reporting Bugsโ
Before creating bug reports, please check existing issues to avoid duplicates.
To report a bug:
- Create a new issue with a clear title
- Include detailed steps to reproduce
- Provide system information (OS, Rust version, etc.)
- Add relevant logs or screenshots
- Tag the issue with
bug
label
๐ก Suggesting Featuresโ
We love new ideas! To suggest a feature:
- Create a new issue with "[Feature Request]" prefix
- Explain the problem it solves
- Describe your proposed solution
- Consider alternatives you've thought about
- Tag the issue with
enhancement
label
Note: Check our Project Status first to see if the feature is already planned
๐ Improving Documentationโ
Documentation contributions are highly valued! You can:
- Fix typos or clarify existing docs
- Add examples and tutorials
- Translate documentation
- Create diagrams or visualizations
๐ง Contributing Codeโ
-
Fork the Repository
git clone https://github.com/SELF-Technology/self-chain-public.git
cd self-chain-public
git remote add upstream https://github.com/SELF-Technology/self-chain-public.git -
Create a Feature Branch
git checkout -b feature/your-feature-name
-
Make Your Changes
- Follow Rust best practices and use
cargo fmt
andcargo clippy
- Add tests for new functionality
- Update documentation as needed
- Ensure your code builds without warnings
- Follow Rust best practices and use
-
Commit Your Changes
git add .
git commit -m "feat: add awesome feature"We use Conventional Commits.
-
Push and Create PR
git push origin feature/your-feature-name
Then create a Pull Request to the Stage branch on GitHub.
Development Setupโ
Prerequisitesโ
- Rust 1.70+ (required for core blockchain)
- Git
- Optional: Docker (for containerized development)
- Optional: Node.js 18+ (for future SDK development)
Note: The project is primarily Rust-based. SDKs in other languages are planned but not yet available.
Local Developmentโ
-
Clone and Build
git clone https://github.com/SELF-Technology/self-chain-public.git
cd self-chain-public
cargo build -
Run Tests
cargo test
-
Run a Local Node (Advanced)
# Note: Requires additional setup - see documentation
cargo run --bin self-chain-node -- --dev
Important: Many features shown in documentation are planned but not yet implemented. Check Project Status for current capabilities.
Contribution Areasโ
โ Open for Contributionsโ
These areas welcome community contributions:
-
Documentation
- Improving existing documentation clarity
- Adding code examples
- Creating architecture diagrams
- Fixing typos and errors
- Translations (once base docs are stable)
-
Core Blockchain (with guidance)
- Bug fixes in non-security-critical areas
- Performance improvements
- Test coverage improvements
- Code refactoring for clarity
-
Future Development (Planning Phase)
- SDK design proposals
- API specification feedback
- Tool requirements gathering
- Use case documentation
-
Testing & Quality
- Writing additional tests
- Benchmarking scenarios
- Bug reports with reproductions
- Code review assistance
-
Community
- Answering questions on Discord/GitHub
- Creating educational content
- Helping new contributors
- Improving onboarding docs
๐ Restricted Areasโ
For security reasons, these areas require special approval:
- Core consensus mechanisms
- Cryptographic implementations
- Security-critical validation logic
- Production deployment configurations
- Private key management
- AI model parameters
If you want to contribute to these areas, please discuss with the core team first via Discord or a GitHub issue.
Security Considerationsโ
Responsible Disclosureโ
- DO NOT open public issues for security vulnerabilities
- Email security@self.app with details
- Use PGP encryption if possible (key available on our website)
- We aim to respond within 48 hours
Security in Contributionsโ
When contributing:
- Never commit secrets, keys, or credentials
- Be cautious with dependencies
- Consider security implications of changes
- Add security tests where appropriate
Pull Request Processโ
๐ Branch Workflowโ
We use a Stage branch workflow to ensure code quality:
-
Stage Branch (
Stage
)- All community PRs should target the
Stage
branch - This is our testing and integration branch
- Requires 1 approval to merge
- All CI checks must pass
- All community PRs should target the
-
Main Branch (
main
)- Production-ready code only
- PRs from
Stage
tomain
after thorough testing - Requires 1 approval to merge
- Stricter review process
๐ PR Checklistโ
-
Before Submitting
- Target branch is set to
Stage
(notmain
) - Code follows style guidelines
- Tests pass locally
- Documentation is updated
- Commit messages follow conventions
- Branch is up-to-date with Stage
- Target branch is set to
-
PR Description
- Clearly describe what changes you made
- Link related issues
- Include screenshots for UI changes
- List any breaking changes
-
Review Process
- PRs to
Stage
require at least 1 maintainer approval - PRs to
main
require at least 1 maintainer approval - CI checks must pass
- Security scan must complete
- Documentation must be updated
- PRs to
-
After Merge
- Delete your feature branch
- Update your local repository
- Your changes will be tested in Stage before going to main
- Celebrate your contribution! ๐
Communityโ
Communication Channelsโ
- Discord: SELF Community - Real-time chat
- GitHub Discussions: Long-form technical discussions
- GitHub Issues: Bug reports and feature requests
- Twitter/X: @self_hq - Updates and announcements
- Email: devs@self.app for developer questions
Recognitionโ
We value all contributions! Contributors are:
- Recognized in pull request comments and releases
- Eligible for special Discord roles
- Part of building the future of blockchain
Getting Helpโ
- Discord: General questions and community chat
- GitHub Discussions: Technical deep-dives
- GitHub Issues: Specific bugs or feature discussions
- Documentation: docs.self.app
- Project Status: Current development state
Licenseโ
By contributing to SELF Chain, you agree that your contributions will be licensed under the MIT License.
Thank You!โ
Your contributions make SELF Chain better for everyone. Whether you're fixing a typo, adding a feature, or helping others in the community, every contribution matters.
Welcome to the SELF Chain family! ๐
"The best way to predict the future is to invent it." - Alan Kay