First off, thank you for considering contributing to Selena! It's people like you that make Selena such a great tool.
This project and everyone participating in it is governed by the Selena Code of Conduct. By participating, you are expected to uphold this code.
Before creating bug reports, please check existing issues as you might find out that you don't need to create one. When you are creating a bug report, please include as many details as possible:
- Use a clear and descriptive title
- Describe the exact steps to reproduce the problem
- Provide specific examples to demonstrate the steps
- Describe the behavior you observed and expected
- Include screenshots if applicable
- Include your environment details (OS, .NET version, etc.)
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion, please include:
- Use a clear and descriptive title
- Provide a detailed description of the proposed enhancement
- Provide specific use cases
- Explain why this enhancement would be useful
- Fork the repo and create your branch from
develop - If you've added code that should be tested, add tests
- If you've changed APIs, update the documentation
- Ensure the test suite passes
- Make sure your code follows the existing style
- Issue that pull request!
- Fork and clone the repository
git clone https://github.com/Taiizor/Selena.git
cd Selena- Create a new branch
git checkout -b feature/your-feature-name- Make your changes and test
dotnet build
dotnet test- Use meaningful variable and method names
- Follow C# coding conventions
- Add XML documentation to public APIs
- Keep methods small and focused
- Write unit tests for new functionality
- Ensure no compiler warnings
- Write unit tests for all new code
- Ensure all tests pass before submitting PR
- Include integration tests for complex scenarios
- Aim for high code coverage (>80%)
Example test structure:
[TestClass]
public class YourFeatureTests
{
[TestMethod]
public void YourMethod_WhenCondition_ShouldExpectedBehavior()
{
// Arrange
var sut = new YourClass();
// Act
var result = sut.YourMethod();
// Assert
Assert.IsNotNull(result);
}
}- 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 liberally after the first line
Example:
Add support for message compression
- Implement GZIP compression for messages over 1KB
- Add CompressionMode configuration option
- Update documentation with compression examples
Fixes #123
- Update README.md if needed
- Add XML comments to public APIs
- Update the wiki for major features
- Include examples in documentation
- Benchmark significant changes
- Avoid allocations in hot paths
- Use object pooling where appropriate
- Profile before and after changes
- Update version numbers
- Update CHANGELOG.md
- Create a release branch
- Run full test suite
- Create GitHub release
- Publish to NuGet
Feel free to contact the maintainers if you have any questions. We're here to help!
Contributors will be recognized in:
- The README.md file
- Release notes
- Project website
Thank you for contributing to Selena! 🚀