Contributing to Lucent
Thank you for your interest in contributing to Lucent! We welcome contributions from the community and appreciate your help in making this library better.
Getting Started
- Fork the repository on GitHub
- Clone your fork locally
- Create a new branch for your feature or bug fix
- Make your changes
- Push to your fork and submit a pull request
Development Setup
Prerequisites
- .NET 9.0 SDK or later
- Visual Studio 2022, JetBrains Rider, or VS Code
- Git
Building the Project
dotnet restore
dotnet build
Running Tests
dotnet test
Contribution Guidelines
Code Style
- Follow standard C# coding conventions
- Use meaningful variable and method names
- Include XML documentation for public APIs
- Maintain consistency with the existing codebase
Pull Request Process
- Ensure your code builds without warnings
- Add or update tests for your changes
- Update documentation if necessary
- Ensure all tests pass
- Submit your pull request against the
masterbranch
Pull Request Description
Please include:
- A clear description of what your change does
- Why this change is needed
- Any breaking changes
- Steps to test your changes
Types of Contributions
Bug Reports
When filing a bug report, please include:
- A clear description of the issue
- Steps to reproduce the problem
- Expected vs actual behavior
- Environment details (.NET version, OS, etc.)
- Sample code that demonstrates the issue
Feature Requests
For feature requests, please:
- Explain the use case and why it's needed
- Describe the proposed solution
- Consider if it aligns with the library's philosophy of minimal abstraction
- Discuss potential alternatives
Code Contributions
We welcome:
- Bug fixes
- Performance improvements
- Documentation improvements
- New features that align with the library's goals
We generally do not accept:
- Features that add heavy abstraction layers
- Breaking changes without significant justification
- Code that significantly increases complexity
Philosophy Alignment
Remember that Lucent aims to provide minimal abstraction over Lucene.NET while offering idiomatic .NET integration. Contributions should:
- Maintain direct access to underlying Lucene.NET types
- Avoid unnecessary wrapper classes
- Focus on dependency injection and configuration improvements
- Preserve the performance characteristics of Lucene.NET
Code of Conduct
Please be respectful and constructive in all interactions. We aim to create a welcoming environment for all contributors.
Questions?
If you have questions about contributing, feel free to:
- Open an issue for discussion
- Start a discussion in the repository
- Reach out to the maintainers
Thank you for contributing to Lucent!