Thank you for your interest in contributing to Monstra! This document provides guidelines and information for contributors.
We welcome various types of contributions:
- 🐛 Bug Reports: Report bugs and issues
- 💡 Feature Requests: Suggest new features and improvements
- 📚 Documentation: Improve documentation and examples
- 🧪 Tests: Add or improve tests
- 🔧 Code: Submit bug fixes and new features
- 📖 Examples: Create practical usage examples
- Swift 5.5+
- Xcode 15+ (for iOS/macOS development)
- Git
-
Fork the repository
git clone https://github.com/yourusername/Monstra.git cd Monstra -
Install development tools (optional but recommended)
brew install swiftlint swiftformat
-
Build the project
swift build
-
Run tests
swift test
git checkout -b feature/your-feature-name
# or
git checkout -b bugfix/your-bug-description- Follow the existing code style and patterns
- Add tests for new functionality
- Update documentation as needed
- Ensure all tests pass
git add .
git commit -m "feat: add new feature description"Commit Message Format:
feat:for new featuresfix:for bug fixesdocs:for documentation changestest:for test additionsrefactor:for code refactoringstyle:for formatting changes
git push origin feature/your-feature-nameThen create a Pull Request on GitHub.
# Run all tests
swift test
# Run specific test suites
swift test --filter MonoTaskTests
swift test --filter MemoryCacheTests
swift test --filter PerformanceTests
# Run with verbose output
swift test --verbose- Coverage: Aim for high test coverage (80%+)
- Unit Tests: Test individual components thoroughly
- Integration Tests: Test component interactions
- Performance Tests: Ensure performance characteristics
- Edge Cases: Test boundary conditions and error scenarios
- Follow Swift API Design Guidelines
- Use meaningful variable and function names
- Add comprehensive documentation comments
- Keep functions focused and concise
- Use Swift DocC format for API documentation
- Include usage examples in comments
- Document complex algorithms and design decisions
- Keep README and documentation up to date
- Consider performance implications of changes
- Run performance tests before and after changes
- Document performance characteristics
- Avoid unnecessary allocations and computations
- Check if the issue has already been reported
- Try to reproduce the issue with the latest version
- Check if it's a known limitation
**Description**
Brief description of the issue
**Steps to Reproduce**
1. Step 1
2. Step 2
3. Step 3
**Expected Behavior**
What you expected to happen
**Actual Behavior**
What actually happened
**Environment**
- OS: [e.g., macOS 14.0, iOS 17.0]
- Swift Version: [e.g., 5.5]
- Monstra Version: [e.g., 1.0.0]
**Additional Context**
Any other relevant information**Problem Statement**
Describe the problem you're trying to solve
**Proposed Solution**
Describe your proposed solution
**Alternatives Considered**
Describe alternatives you've considered
**Additional Context**
Any other relevant information- Tests: All tests must pass
- Documentation: Update relevant documentation
- Examples: Add examples for new features
- Performance: Consider performance impact
- Backward Compatibility: Maintain API compatibility
- Code follows project style guidelines
- Tests are comprehensive and pass
- Documentation is updated
- Performance impact is considered
- Backward compatibility is maintained
- Examples are provided for new features
We use the following labels to categorize issues:
bug: Something isn't workingenhancement: New feature or requestdocumentation: Improvements or additions to documentationgood first issue: Good for newcomershelp wanted: Extra attention is neededperformance: Performance-related issuesquestion: Further information is requestedwontfix: This will not be worked on
- Performance improvements
- Additional test coverage
- Documentation improvements
- Bug fixes
- New utility functions
- Additional examples
- Performance benchmarks
- Cross-platform support
- Nice-to-have features
- Experimental implementations
- Additional convenience methods
- GitHub Discussions: Use GitHub Discussions for questions
- GitHub Issues: Use Issues for bugs and feature requests
- Pull Requests: Use PRs for code contributions
- Be respectful and inclusive
- Help others learn and contribute
- Provide constructive feedback
- Follow the project's code of conduct
Contributors will be recognized in:
- Project README
- Release notes
- GitHub contributors list
- Project documentation
By contributing to Monstra, you agree that your contributions will be licensed under the same license as the project (MIT License).
Thank you for contributing to Monstra! 🚀