7.6 KiB
Contributing to nx9-dns-server
Thank you for considering contributing to nx9-dns-server! This document provides guidelines and instructions to help you contribute effectively to this project.
Table of Contents
- Code of Conduct
- Getting Started
- How to Contribute
- Pull Request Process
- Style Guidelines
- Priority Areas
- Community
- License
Code of Conduct
By participating in this project, you are expected to uphold our Code of Conduct. Please report unacceptable behavior to project maintainers.
Getting Started
Project Setup
- Fork the repository on GitHub
- Clone your fork:
git clone https://github.com/your-username/nx9-dns-server.git cd nx9-dns-server - Add the upstream remote:
git remote add upstream https://github.com/thakares/nx9-dns-server.git - Create a branch for your work:
git checkout -b feature/your-feature-name
Development Environment
Requirements
- Rust (stable, 1.70+)
- SQLite 3.x
- Cargo and standard Rust toolchain
Setup
-
Install dependencies:
# For Debian/Ubuntu sudo apt-get install build-essential pkg-config libsqlite3-dev # For Fedora/RHEL sudo dnf install gcc sqlite-devel pkgconfig # For macOS with Homebrew brew install sqlite -
Compile and run the project:
cargo build cargo run -
Run tests:
cargo test
How to Contribute
Reporting Bugs
Before submitting a bug report:
- Check the issue tracker to see if the issue has already been reported
- Make sure you're using the latest version of the software
- Perform a quick search to see if the problem has already been addressed
When submitting a bug report:
- Use the bug report template provided
- Include a clear and descriptive title
- Describe the exact steps to reproduce the issue
- Provide specific examples to demonstrate the steps
- Describe the behavior you observed and what you expected to see
- Include relevant logs, screenshots, or other materials
- Mention your environment (OS, Rust version, etc.)
Suggesting Enhancements
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion:
- Use the feature request template provided
- Include a clear and descriptive title
- Provide a detailed description of the proposed functionality
- Explain why this enhancement would be useful to most users
- List any alternatives you've considered
- Include any mockups or examples if applicable
Code Contributions
We're actively seeking contributions in these areas:
-
Web UI Development
- Frontend components and integration with backend
- UI/UX design for DNS management
-
API Service
- RESTful API implementation
- Authentication and permission handling
- Request validation
-
User Management
- Authentication systems
- Role-based access control
- User onboarding flows
-
DNSSEC Improvements
- Key rotation automation
- Signature verification tools
- DNSSEC validation utilities
-
Core DNS Improvements
- Performance optimizations
- Additional record type support
- Protocol extensions
-
Documentation and Testing
- Improving guides and examples
- Unit and integration tests
- Benchmarking tools
Pull Request Process
-
Update your fork with the latest from upstream:
git fetch upstream git merge upstream/main -
Implement your changes and commit them to your feature branch
-
Run the test suite to ensure your changes don't break existing functionality:
cargo test -
Add or update tests as needed for your new functionality
-
Update documentation including README.md if needed
-
Submit a pull request to the main repository:
- Fill out the PR template completely
- Reference any related issues (e.g., "Fixes #123")
- Include a clear description of the changes and their motivation
- Add screenshots or terminal output if relevant
-
Code review process:
- Maintainers will review your PR
- Address any requested changes or feedback
- Once approved, maintainers will merge your PR
Style Guidelines
Rust Code Style
- Follow the Rust API Guidelines
- Use
rustfmtto format your code:cargo fmt - Use
clippyto catch common mistakes and non-idiomatic code:cargo clippy - Follow the existing project style for consistency
- Use meaningful variable and function names
- Include comments for complex sections of code
- Write comprehensive documentation for public API functions
Commit Messages
- Use the present tense ("Add feature" not "Added feature")
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
- Limit the first line to 72 characters or less
- Reference issues and pull requests after the first line
- Consider using a structured format:
[Component] Short summary (up to 72 chars) More detailed explanation, if necessary. Wrap lines at around 72 characters. Explain the problem this commit is solving. Focus on why you are making this change as opposed to how. Fixes #123
Documentation
- Use proper grammatical sentences with punctuation
- Keep documentation up-to-date with code changes
- Include examples where appropriate
- Document all public API functions, structs, and traits
- Use Markdown formatting in doc comments and documentation files
Priority Areas
We are particularly interested in contributions in these areas:
-
Web UI Development:
- Creating a responsive, user-friendly interface for DNS management
- Implementing dashboard components for monitoring DNS health
- Building forms for record management with validation
-
API Service:
- Implementing RESTful endpoints for DNS record CRUD operations
- Adding authentication and authorization mechanisms
- Developing batch operations for efficient record updates
-
User Management:
- Building a role-based access control system
- Implementing secure authentication flows
- Creating administrative tools for user management
-
Documentation:
- Improving guides and examples
- Creating API documentation
- Adding diagrams and architecture documentation
-
Testing:
- Unit tests for core components
- Integration tests for end-to-end validation
- Building automated CI pipelines
Community
- Join our Discord server for discussions
- Follow the project on Twitter
- Subscribe to our mailing list for updates
License
By contributing to nx9-dns-server, you agree that your contributions will be licensed under the project's GNU General Public License v3.0 (GPLv3).
Thank you for your interest in improving nx9-dns-server! We appreciate your time and effort in contributing to this project.