Thank you for your interest in contributing!
FluentAAS is an open-source C# library designed to provide a fluent, modular API for building, validating, and serializing Asset Administration Shell (AAS) models. Contributions of all kinds are welcome — code, bug reports, documentation, tests, and ideas.
Please take a moment to understand the project structure and responsibilities of each module:
FluentAas.Core— Immutable AAS meta-model typesFluentAas.Builder— Fluent DSL for creating modelsFluentAas.Validation— Validation rules & reportingFluentAas.IO— JSON/XML serialization utilities
(See architecture overview for details.)
This helps ensure contributions follow the intended modular design. :contentReference[oaicite:1]{index=1}
git clone https://github.com/<yourname>/FluentAAS.git
cd FluentAASgit checkout -b feature/my-improvementUse clear branch names such as:
feature/...fix/...docs/...test/...
Prefer many small, focused PRs over one large one. A good PR should do one thing well.
Examples:
- Add a builder method
- Add a validation rule
- Improve documentation
- Add integration tests
Contributions must include tests when reasonable:
- Unit tests for isolated logic
- Integration tests when interacting with multiple modules
- Shouldly is the standard assertion library
- Use xUnit as the test framework
When adding features to Builder, Validation, or IO modules, always include:
- Input → expected output tests
- Round-trip serialization tests if applicable
Tests should run via:
dotnet testFollow clean, modern C# conventions:
- Use meaningful names
- Keep classes and methods small
- Follow SOLID and DRY where it makes sense (don’t over-engineer)
- Avoid introducing new external dependencies without discussion
- All public types must include XML documentation comments
- Keep builders fluent and chainable
- Core models should remain immutable
- Validation must be deterministic and rule-based
A PR is likely to be accepted if it:
- Follows the architecture boundaries (Core, Builder, Validation, IO)
- Includes meaningful tests
- Does not break public APIs without discussion
- Is clear, focused, and easy to review
- Includes documentation updates if adding features
Please include:
- A clear description of the problem
- Steps to reproduce
- Relevant code snippets
- Expected vs. actual behavior
- Version information
Bug reports with failing test cases are especially appreciated.
Improving docs is a valuable contribution:
- API documentation
- Usage examples
- Tutorials
- Architecture illustrations
- Clarifying builder workflows
If in doubt, open a PR — unclear documentation is a common pain point, and improvements are always welcome.
Before working on a larger feature, please open a GitHub Discussion or Issue to align on:
- API design
- Architecture fit
- Naming conventions
- Expected behavior
This prevents spending time on something that may not fit long-term goals.
Be respectful, constructive, and supportive. We aim for a welcoming environment for developers of all backgrounds and experience levels.
- Run all tests
- Ensure code is formatted (
dotnet formatrecommended) - Update documentation where needed
- Push your branch
- Open a Pull Request with a clear description
Thank you for helping make FluentAAS a better library!