π Thank you for your interest in contributing to SharpFsm! Whether you want to report a bug, propose a feature, improve documentation, or contribute code, your help is appreciated.
SharpFsm is a lightweight, extensible C# state machine library supporting generic FSMs, Moore and Mealy machines, transition validation, side effects, audit tracking, fluent builders, and more.
-
Clone the repo:
git clone https://github.com/iwannabebot/SharpFsm.git cd SharpFsm -
Build and test the solution:
dotnet build dotnet test -
Restore tool dependencies (if any):
dotnet restore
All PRs must pass tests.
- Add new unit tests for any new features or bug fixes.
- Use clear, descriptive names for test methods.
- Follow ArrangeβActβAssert convention for readability.
Run tests locally:
dotnet test- Use Issues with the "bug" label.
- Include steps to reproduce, expected behavior, and screenshots or stack traces when applicable.
- Open an Issue with the "enhancement" label.
- Explain why the feature matters and how it might be used.
-
Fork the repository.
-
Create a feature branch:
git checkout -b feature/my-awesome-feature
-
Follow the coding conventions (C#, PascalCase, xml-docs for public APIs).
-
Include or update unit tests.
-
Run tests and ensure they pass.
-
Open a pull request:
- Describe what and why clearly.
- Reference related issues if applicable (
Closes #42).
-
Be responsive to feedback in code reviews.
- Prefer clarity over cleverness.
- Public APIs must have XML documentation.
- Use
varonly when the type is obvious. - Avoid premature optimization.
- Respect
.editorconfigand.gitattributesif present.
- Feature branches:
feature/<name> - Bugfix branches:
bugfix/<name> - Test branches:
test/<name>
Commit messages:
- Use imperative tone:
"Add state transition audit support"(β ), not"Added"or"Adding"(β).
By contributing, you agree that your contributions will be licensed under the MIT License.
Open an Issue, start a discussion, or reach out via GitHub if you're stuck or unsure where to start.