Thank you for your interest in contributing to SharpCoreDB! We welcome contributions from the community.
By participating in this project, you agree to abide by our code of conduct. Please be respectful and constructive in your interactions.
If you find a bug, please create an issue on GitHub with:
- A clear title and description
- Steps to reproduce the issue
- Expected vs actual behavior
- Your environment (OS, .NET version, etc.)
- Any relevant code snippets or error messages
Feature suggestions are welcome! Please create an issue with:
- A clear description of the feature
- Use cases and benefits
- Any implementation ideas you have
- Fork the repository and create a new branch from
master - Make your changes following our coding standards
- Add tests for new functionality
- Update documentation if needed
- Ensure all tests pass by running
dotnet test - Submit a pull request with a clear description
feature/your-feature-namefor new featuresfix/issue-descriptionfor bug fixesdocs/descriptionfor documentation updates
- .NET 10 SDK or later
- Git
- A code editor (Visual Studio 2026, VS Code, or Rider)
# Clone your fork
git clone https://github.com/YOUR-USERNAME/SharpCoreDB.git
cd SharpCoreDB
# Add upstream remote
git remote add upstream https://github.com/MPCoreDeveloper/SharpCoreDB.git
# Restore dependencies
dotnet restore
# Build the solution
dotnet build
# Run tests
dotnet test
# Run benchmarks (optional)
cd tests/SharpCoreDB.Benchmarks
dotnet run -c ReleaseSharpCoreDB/
├── src/ # Source code
│ ├── SharpCoreDB/ # Core library
│ ├── SharpCoreDB.Extensions/ # Extension methods
│ ├── SharpCoreDB.Data.Provider/# ADO.NET provider
│ ├── SharpCoreDB.EntityFrameworkCore/ # EF Core provider
│ └── SharpCoreDB.Serilog.Sinks/# Serilog sink
├── tests/ # Tests
│ ├── SharpCoreDB.Tests/ # Unit tests
│ ├── SharpCoreDB.Benchmarks/ # Performance benchmarks
│ └── SharpCoreDB.Profiling/ # Profiling tools
└── tools/ # Tools and utilities
├── SharpCoreDB.Demo/ # Demo application
├── SharpCoreDB.Viewer/ # Database viewer
└── SharpCoreDB.DebugBenchmark/ # Debug benchmarking
- Follow the existing code style
- Use meaningful variable and method names
- Add XML documentation comments for public APIs
- Keep methods focused and concise
- Write unit tests for new functionality
- Use C# 14 features where appropriate
- Follow .NET naming conventions
- Use
varfor local variables when type is obvious - Place braces on new lines (Allman style)
- Use
_camelCasefor private fields (optional, follow existing pattern)
- SharpCoreDB is performance-focused. Consider:
- Memory allocations (use
Span<T>andstackallocwhere appropriate) - SIMD optimizations for data-parallel operations
- Async/await for I/O operations
- Benchmark critical paths
- Memory allocations (use
- Write unit tests for all new functionality
- Aim for high code coverage
- Test edge cases and error conditions
- Use descriptive test names:
MethodName_StateUnderTest_ExpectedBehavior
Example:
[Fact]
public void Insert_WithValidData_ReturnsSuccess()
{
// Arrange
var db = CreateTestDatabase();
// Act
var result = db.Insert("users", new { id = 1, name = "Test" });
// Assert
Assert.True(result.Success);
}Write clear commit messages:
- Use present tense ("Add feature" not "Added feature")
- First line: brief summary (50 chars or less)
- Add details in the body if needed
- Reference issues: "Fixes #123" or "Relates to #456"
Example:
Add SIMD optimization for SUM aggregation
Implement AVX2 and SSE2 vectorized paths for integer
summation, providing 8x-16x speedup over scalar code.
Fixes #123
- Update README.md for significant features
- Add XML documentation for public APIs
- Update CHANGELOG.md for all changes
- Consider adding examples for new features
Releases are managed by maintainers:
- Update CHANGELOG.md
- Update version in project files
- Create a Git tag
- Publish to NuGet
Feel free to:
- Open an issue for questions
- Join discussions in existing issues
- Contact the maintainers
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to SharpCoreDB! 🚀