Contribute to EZ
EZ is open source and welcomes contributions of all kinds. Whether you're fixing a typo or implementing a new stdlib module, every contribution helps.
Ways to Contribute
Report Bugs
Found something broken? Open an issue with reproduction steps.
Request Features
Have an idea? Propose new functionality or improvements.
Write Examples
Help others learn by contributing real-world code examples.
Improve Stdlib
Add functions to @math, @strings, @arrays, @maps, and more.
Fix Bugs
Pick up an open issue and submit a pull request.
Improve Docs
Clarify explanations, fix typos, or add missing documentation.
Creating Issues
Good issues help maintainers understand and fix problems quickly. Follow these guidelines when creating an issue.
Issue Title Format
All issue titles must use one of these prefixes:
| Prefix | When to Use |
|---|---|
Bug: | Something is broken or produces incorrect results |
Feature: | New functionality or enhancement |
Documentation: | Docs improvements or additions |
Tests: | Unit tests or test infrastructure |
Cleanup: | Removing dead code or organizing |
Bug Reports
Include these sections in every bug report:
- Description — 1-3 sentences describing the bug
- Severity — High, Medium, or Low with justification
- Reproduction — Minimal EZ code that reproduces the bug
- Expected Behavior — What should happen
- Actual Behavior — What actually happens
Feature Requests
Include these sections in feature requests:
- Description — What the feature does and why it's useful
- Tasks — Actionable items with checkboxes
- Proposed Syntax — Example EZ code showing usage
- Expected Behavior — How it should work
Pull Requests
Ready to contribute code? Here's how to submit a pull request.
Fork & Clone
Fork the repository and clone it locally.
Create a Branch
Create a branch with a descriptive name: fix/parser-struct-literal or feature/sets-module
Make Changes
Write your code. Follow existing patterns and style.
Test
Run existing tests and add new ones for your changes.
Submit PR
Push your branch and open a pull request with a clear description of changes.
Contributing Examples
Good examples help people learn EZ faster. When writing examples:
- Keep it focused — One concept per example
- Make it runnable — Examples should work as-is when copied
- Add comments — Explain non-obvious parts
- Show real use cases — Practical > contrived
- Test edge cases — Show how to handle errors or unusual inputs
Contributing to Stdlib
The standard library is where EZ gets its "batteries included" feel. Here's how to contribute:
Guidelines
- Check for duplicates — Make sure the function doesn't already exist
- Follow naming conventions — snake_case for functions, SCREAMING_SNAKE_CASE for constants, PascalCase for types
- Write tests — Every stdlib function needs test coverage
- Document it — Add to the docs with examples
- Keep it simple — EZ values simplicity over cleverness
Proposing New Modules
Have an idea for an entirely new stdlib module? You can propose one. Open a feature issue with:
- Module name — What would it be called? (e.g.,
@sets,@json,@fs) - Purpose — What problem does it solve?
- Proposed API — List the functions, constants, and types it would include
- Example usage — Show how it would be used in EZ code
Not every proposal will be accepted — EZ intentionally keeps a limited scope — but good ideas that fit the language's goals are welcome.
Ready to Contribute?
Check out open issues or start a discussion.