Thank you for your interest in contributing! This is a community-driven project and all contributions are welcome.
- .NET 10.0 SDK or later
- Restate Server (for end-to-end testing)
dotnet build# All tests
dotnet test
# Specific test project
dotnet test test/Restate.Sdk.Tests
dotnet test test/Restate.Sdk.Generators.Tests
# Specific test
dotnet test --filter "FullyQualifiedName~ProtocolIntegrationTests"The CI pipeline enforces consistent formatting. Check locally:
dotnet format --verify-no-changesFix formatting issues:
dotnet formatsrc/
├── Restate.Sdk/ Core SDK (context hierarchy, protocol, hosting)
├── Restate.Sdk.Generators/ Roslyn source generator (netstandard2.0)
├── Restate.Sdk.Testing/ Mock contexts for unit testing
└── Restate.Sdk.Lambda/ AWS Lambda adapter
test/
├── Restate.Sdk.Tests/ Core SDK tests
├── Restate.Sdk.Generators.Tests/ Generator tests
└── Restate.Sdk.Benchmarks/ BenchmarkDotNet microbenchmarks
samples/ Working sample applications
- Fork the repository and create a feature branch
- Make your changes with tests
- Run
dotnet build && dotnet testto verify - Run
dotnet formatto fix formatting - Submit a PR with a clear description of the change
- Follow existing code patterns and naming conventions
- Add XML doc comments for public API surface
- Use
fileaccess modifier for test-only types - Keep the public API minimal — use
internalby default - Source generator changes require
dotnet clean+ rebuild (stale artifacts)
- Use GitHub Issues for bugs and feature requests
- Include Restate server version, .NET SDK version, and reproduction steps for bugs