Packages

An Elixir functional implementation of a finite state machine, based on Statechart formalism. [ALPHA - API may change]

Retired package: Deprecated - Superseded by v0.1.3 with comprehensive documentation and improved API

Current section

Files

Jump to
ex_machine CONTRIBUTING.md
Raw

CONTRIBUTING.md

# Contributing to ExMachine
Thank you for your interest in contributing to ExMachine! 🎉
## Project Status
ExMachine is currently in **alpha stage**. We're actively working on stabilizing the API and welcome community feedback and contributions.
## How to Contribute
### Reporting Issues
- Use the [GitHub issue tracker](https://github.com/carlotorrese/ex_machine/issues)
- Search existing issues before creating a new one
- Use the provided issue templates for bug reports and feature requests
- Include as much detail as possible (Elixir version, OS, code examples)
### Submitting Changes
1. **Fork** the repository
2. **Create a feature branch** from `main`
```bash
git checkout -b feature/your-feature-name
```
3. **Make your changes** with clear, descriptive commits
4. **Add tests** for new functionality
5. **Run the test suite** to ensure nothing breaks
```bash
mix test
mix format --check-formatted
mix dialyzer
```
6. **Update documentation** if needed
7. **Submit a pull request** with a clear description
### Development Setup
1. Clone the repository:
```bash
git clone https://github.com/carlotorrese/ex_machine.git
cd ex_machine
```
2. Install dependencies:
```bash
mix deps.get
```
3. Run tests:
```bash
mix test
```
4. Generate documentation:
```bash
mix docs
```
### Code Style
- Follow standard Elixir formatting (`mix format`)
- Write clear, descriptive function and variable names
- Add documentation for public functions
- Include typespecs where appropriate
- Keep functions small and focused
### Testing
- All new code should include tests
- Aim for good test coverage
- Use descriptive test names
- Test both happy path and edge cases
### Documentation
- Update documentation for any API changes
- Include code examples in module docs
- Keep README.md up to date
- Add entries to CHANGELOG.md for significant changes
## Code of Conduct
This project follows the [Hex Code of Conduct](https://hex.pm/policies/codeofconduct). Please be respectful and inclusive in all interactions.
## Questions?
Feel free to open an issue for questions or discussion about the project direction, API design, or implementation details.
## License
By contributing to ExMachine, you agree that your contributions will be licensed under the MIT License.