This document provides guidelines and instructions for internal contributors to DesignAlgorithmsKit.
Note: This project is currently internal-only. External contributions are not accepted at this time.
This project adheres to a Code of Conduct that all contributors are expected to follow. Please read CODE_OF_CONDUCT.md before contributing.
If you find a bug, please:
- Open an issue with a clear, descriptive title
- Include steps to reproduce the issue
- Describe expected vs actual behavior
- Provide Swift version and platform information
- Include code samples if applicable
Enhancement suggestions are welcome! Please open an issue with:
- A clear description of the enhancement
- Use cases and examples
- Potential implementation approach (if you have one)
-
Create a new branch from
maingit checkout -b feat/your-feature-name
-
Follow the coding standards:
- Follow Apple's Swift API Design Guidelines
- Write clear, self-documenting code
- Add comments for complex logic
- Keep functions focused and small
-
Write tests:
- All new features must include unit tests
- Aim for high code coverage
- Tests should be clear and well-organized
-
Update documentation:
- Update README.md if adding new features
- Add DocC documentation comments for public APIs
- Update CHANGELOG.md under
[Unreleased]
-
Commit your changes:
- Use Conventional Commits format
- Examples:
feat(patterns): Add Observer pattern implementationfix(merkle): Fix proof verification logicdocs(readme): Update installation instructionstest(bloom): Add edge case tests
-
Push and create a Pull Request:
git push -u origin feat/your-feature-name
- Create a PR with a clear title and description
- Reference any related issues
- Ensure all CI checks pass
- Request review from team members
-
Clone the repository:
git clone https://github.com/rickhohler/DesignAlgorithmsKit.git cd DesignAlgorithmsKit -
Build the package:
swift build
-
Run tests:
swift test -
Run tests with coverage:
swift test --enable-code-coverage
When adding new design patterns:
- Follow the existing pattern structure
- Use protocols for extensibility
- Ensure thread safety (use NSLock or Actor)
- Add comprehensive unit tests
- Document with DocC comments
- Update README.md with usage examples
When adding new algorithms:
- Provide clear documentation
- Include complexity analysis (time/space)
- Add unit tests with edge cases
- Consider performance optimizations
- Update README.md with usage examples
- Ensure your code follows the project's style guidelines
- Make sure all tests pass locally
- Update documentation as needed
- Add your changes to CHANGELOG.md
- Request review from maintainers
- Address any feedback promptly
For internal contributors, feel free to:
- Open an issue for questions or discussions
- Reach out directly to the maintainers
- Discuss in team channels
Thank you for contributing to DesignAlgorithmsKit! 🎉