Table of Contents

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

  1. Fork the repository on GitHub
  2. Clone your fork locally
  3. Create a new branch for your feature or bug fix
  4. Make your changes
  5. 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

  1. Ensure your code builds without warnings
  2. Add or update tests for your changes
  3. Update documentation if necessary
  4. Ensure all tests pass
  5. Submit your pull request against the master branch

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!