Contributing to Cyrus
Cyrus is an open source project licensed under the MIT license.
Every contribution is welcome and appreciated, regardless of its scale or importance.
We value correctness, clarity, and long-term maintainability over speed or volume of contributions.
What Counts as a Contribution?
Contributions include, but are not limited to:
- Documentation improvements
- Compiler code improvements
- Bug fixes
- Performance work
- Tooling (VSCode extension, Emacs plugin, language servers, etc.)
- Website improvements
- Issue triage and discussion participation
AI-Generated Code Policy
Cyrus has a strict but pragmatic policy regarding AI-assisted contributions.
Compiler (STRICT RULE)
AI-generated or AI-authored code is NOT allowed in the compiler codebase.
This includes:
- core compiler logic
- parser / lexer
- type system
- optimizer
- codegen / backend
- runtime / standard library
If a pull request is found to contain AI-generated compiler code:
It will be closed immediately without merging.
We do this because the compiler is a correctness-critical system where:
- subtle logical errors are unacceptable
- authorship must be traceable
- long-term maintainability depends on human reasoning
Tools & Ecosystem (ALLOWED)
AI-assisted contributions are allowed in:
- VSCode extension
- Emacs plugin
- language tooling
- website
- documentation
- examples and tutorials
However, contributors are still responsible for correctness, licensing, and originality.
Before Filing an Issue
Please check if a similar issue already exists to avoid duplicates.
Filing an Issue
When you encounter a problem or have a suggestion, please include:
1. Clear Title
A short and descriptive summary of the issue.
2. Problem Description
Include:
- Expected behavior
- Actual behavior
- Steps to reproduce
- Environment details (OS, version, configuration)
3. Supporting Information
If relevant:
- logs
- screenshots
- minimal reproduction cases
4. Labels
Use appropriate labels such as:
- bug
- enhancement
- question
Pull Request Requirements
All submitted PRs must follow these rules:
1. Review Requirement (STRICT)
A PR must be approved by:
- the project creator, OR
- at least two independent maintainers
No single-review merges for non-trivial changes.
2. CI / Tests (MANDATORY)
All tests must pass before review or merge.
- failing CI = PR is not eligible for merge
- partial fixes must be clearly marked as WIP
3. Breaking Changes Policy
Breaking changes must be discussed before implementation.
Acceptable discussion channels:
- GitHub Issues
- Community discussions
- Maintainer coordination channels
Do not submit breaking changes without prior agreement.
Submitting a Draft PR
Draft PRs are strongly encouraged for early feedback.
Steps:
-
Create a branch from
initial-compiler -
Implement your changes incrementally
-
Push to your fork
-
Open a Pull Request as Draft
-
Clearly describe:
- what problem you are solving
- your design approach
- any trade-offs or uncertainties
Draft PRs are the preferred way to propose non-trivial changes.
Reviewing & Iteration
Once your PR is in review:
- respond to feedback constructively
- make small, focused commits
- avoid mixing unrelated changes
- ensure CI remains green at all times
When ready:
- mark PR as “Ready for review”
- wait for final approval
AI Misuse in PRs (IMPORTANT ENFORCEMENT)
If a PR targeting the compiler codebase is found to contain AI-generated or AI-assisted code:
- it will be closed immediately
- maintainers are not required to provide detailed review feedback
- repeated violations may lead to contribution restrictions
This rule exists to protect the integrity of Cyrus as a systems-level compiler project.
Code Quality Expectations
We expect contributions to:
- be minimal and purposeful
- avoid unnecessary abstraction
- match existing code style
- prioritize correctness over cleverness
- remain understandable to future maintainers
Submitting a Final PR
Before marking a PR ready:
- ensure all CI checks pass
- update documentation if needed
- verify no unrelated changes are included
- ensure commit messages are meaningful
Respectful Collaboration
We maintain a professional and constructive environment.
All contributors are expected to:
- communicate clearly
- respect differing technical opinions
- avoid personal arguments
- focus on technical merit

