Contributing to LetItCrash

View Source

First of all, thank you for considering contributing to LetItCrash! ๐ŸŽ‰

This project embraces Elixir's "let it crash" philosophy, and your contribution can help other developers test their supervised systems better.

How to Contribute

๐Ÿ› Reporting Bugs

If you found a bug, please open an issue including:

  • Clear description of the problem
  • Steps to reproduce the bug
  • Expected behavior vs actual behavior
  • Elixir version and library version
  • Minimal code example that reproduces the problem

Example bug report template:

**Description**
Clear description of the bug.

**To Reproduce**
1. Set up a supervisor...
2. Crash the process with...
3. Run recovered?...
4. See error...

**Expected Behavior**
What should happen.

**Environment**
- Elixir: 1.17.0
- LetItCrash: 0.1.0
- OTP: 26.0

๐Ÿ’ก Feature Suggestions

Have an idea to improve the library? Open an issue with:

  • Description of the desired functionality
  • Use case that justifies the feature
  • API proposal (if applicable)
  • Usage examples of the new functionality

๐Ÿ”ง Pull Requests

  1. Fork the repository
  2. Create a branch for your feature (git checkout -b feature/my-feature)
  3. Implement your change
  4. Add tests to cover the new functionality
  5. Run the tests (mix test)
  6. Commit your changes (git commit -am 'Add my feature')
  7. Push to the branch (git push origin feature/my-feature)
  8. Open a Pull Request

๐Ÿ“‹ Pull Request Checklist

  • [ ] Tests pass (mix test)
  • [ ] Code follows Elixir style
  • [ ] Documentation updated (if necessary)
  • [ ] Tests added for new functionality
  • [ ] CHANGELOG.md updated (if applicable)

๐Ÿงช Running Tests

# Install dependencies
mix deps.get

# Run all tests
mix test

# Run specific test
mix test test/let_it_crash_test.exs:101

๐Ÿ“ Code Style Standards

  • Use 2 spaces for indentation
  • Use descriptive names for functions and variables
  • Add @doc for public functions
  • Add @spec for public functions
  • Prefer pattern matching over conditionals when possible

๐Ÿ—‚๏ธ Project Structure

let_it_crash/
โ”œโ”€โ”€ lib/
โ”‚   โ””โ”€โ”€ let_it_crash.ex          # Main module
โ”œโ”€โ”€ test/
โ”‚   โ”œโ”€โ”€ let_it_crash_test.exs    # Main tests  
โ”‚   โ””โ”€โ”€ test_helper.exs          # Test setup
โ”œโ”€โ”€ README.md                    # Main documentation
โ”œโ”€โ”€ CONTRIBUTING.md             # This file
โ”œโ”€โ”€ LICENSE                     # MIT License
โ””โ”€โ”€ mix.exs                     # Project configuration

๐ŸŽฏ Areas That Need Help

Some areas where contributions would be especially welcome:

  • Additional tests for edge cases
  • Usage examples with different types of supervisors
  • Performance improvements in PID tracking
  • CI/CD integration tooling

๐Ÿค Code of Conduct

This project follows a simple code of conduct:

  • Be respectful to other contributors
  • Be constructive in feedback and discussions
  • Be patient with beginners
  • Be inclusive and welcoming

๐Ÿ“ž Questions?

  • Open an issue with the question tag
  • Contact via GitHub (@volcov)

Thank you for helping make LetItCrash better! ๐Ÿš€