|
1 | 1 | # Contributing to Shimmy |
2 | 2 |
|
3 | | -Thank you for your interest in Shimmy! ��� |
| 3 | +Thanks for your interest in contributing to Shimmy! |
4 | 4 |
|
5 | | -## Open Source, Not Open Contribution |
| 5 | +## 🚨 IMPORTANT: Maintainer-Only Pull Requests |
6 | 6 |
|
7 | | -Shimmy is **open source** but **not open contribution**. |
| 7 | +**Pull requests are restricted to approved maintainers only.** Unsolicited PRs will be declined. To contribute code, you must first apply for maintainer status by emailing michaelallenkuykendall@gmail.com. |
8 | 8 |
|
9 | | -- The code is freely available under the MIT license |
10 | | -- You can fork, modify, use, and learn from it without restriction |
11 | | -- **Pull requests are not accepted by default** |
12 | | -- All architectural, roadmap, and merge decisions are made by the project maintainer |
13 | | - |
14 | | -This model keeps the project coherent, maintains clear ownership, and ensures consistent quality. It's the same approach used by SQLite and many infrastructure projects. |
| 9 | +**Non-maintainers can contribute by:** |
| 10 | +- Opening issues for bugs or feature requests |
| 11 | +- Participating in GitHub Discussions |
| 12 | +- Providing feedback and testing |
15 | 13 |
|
16 | 14 | ## How to Contribute |
17 | | - |
18 | | -If you believe you can contribute meaningfully to Shimmy: |
19 | | - |
20 | | -1. **Email the maintainer first**: [michaelallenkuykendall@gmail.com](mailto:michaelallenkuykendall@gmail.com) |
21 | | -2. Describe your background and proposed contribution |
22 | | -3. If there is alignment, a scoped collaboration may be discussed privately |
23 | | -4. Only after discussion will PRs be considered |
24 | | - |
25 | | -**Unsolicited PRs will be closed without merge.** This isn't personal — it's how this project operates. |
26 | | - |
27 | | -## What We Welcome (via email first) |
28 | | - |
29 | | -- Bug reports with detailed reproduction steps (Issues are fine) |
30 | | -- Security vulnerability reports (please email directly) |
31 | | -- Documentation improvements (discuss first) |
32 | | -- Platform-specific bug fixes (discuss first) |
33 | | - |
34 | | -## What We Handle Internally |
35 | | - |
36 | | -- New features and architectural changes |
37 | | -- API design decisions |
38 | | -- Dependency updates |
39 | | -- Performance optimizations |
40 | | -- Cross-platform compatibility work |
41 | | - |
42 | | -## Bug Reports |
43 | | - |
44 | | -Bug reports via GitHub Issues are welcome! Please include: |
45 | | -- Platform (Windows/macOS/Linux) and version |
46 | | -- Rust version and Shimmy version |
47 | | -- Minimal reproduction case |
48 | | -- Expected vs actual behavior |
49 | | -- Backend details if relevant (llama.cpp version, model info) |
50 | | - |
51 | | -## Code Style (for reference) |
52 | | - |
53 | | -If a contribution is discussed and approved: |
54 | | -- Rust 2021 edition with `cargo fmt` and `cargo clippy -- -D warnings` |
55 | | -- Comprehensive error handling using proper Result types |
56 | | -- All public APIs must have documentation with examples |
57 | | -- Tests for new functionality |
58 | | - |
59 | | -## Shimmy Philosophy |
60 | | - |
61 | | -Any accepted work must align with: |
| 15 | +1. Fork the repo and create a branch (`git checkout -b feature/foo`) |
| 16 | +2. Make your changes with clear commits and tests if applicable |
| 17 | +3. **Sign off your commits** (required): `git commit -s -m "Your message"` |
| 18 | +4. Run existing tests to ensure nothing breaks (`cargo test`) |
| 19 | +5. Ensure code quality (`cargo fmt && cargo clippy`) |
| 20 | +6. Open a Pull Request against `main` |
| 21 | + |
| 22 | +### Developer Certificate of Origin (DCO) |
| 23 | +All contributions must be signed off with the Developer Certificate of Origin. This certifies that you have the right to contribute your code. See [DCO.md](DCO.md) for details. |
| 24 | + |
| 25 | +**Quick setup:** |
| 26 | +```bash |
| 27 | +git config format.signoff true # Auto sign-off all commits |
| 28 | +``` |
| 29 | + |
| 30 | +## Code Style |
| 31 | +- Rust 2021 edition |
| 32 | +- Use `cargo fmt` and `cargo clippy` before submitting |
| 33 | +- Keep PRs small and focused - large refactors may be rejected |
| 34 | +- Add tests for new functionality |
| 35 | +- Document public APIs with rustdoc comments |
| 36 | + |
| 37 | +## Contribution Scope |
| 38 | +Features should align with the **Shimmy philosophy**: |
62 | 39 | - **Lightweight**: ~5MB binary target |
63 | 40 | - **Zero-config**: No setup, just works |
64 | 41 | - **OpenAI API compatibility**: Drop-in replacement |
65 | 42 | - **Invisible infrastructure**: Minimal surface area |
66 | | -- **Free forever**: Core features remain free, premium features licensed separately |
67 | 43 |
|
68 | | -## Why This Model? |
69 | | - |
70 | | -Building reliable LLM infrastructure requires tight architectural control. This ensures: |
71 | | -- Consistent API design and backwards compatibility |
72 | | -- No ownership disputes or governance overhead |
73 | | -- Quality control without committee delays |
74 | | -- Clear direction for the project's future |
75 | | - |
76 | | -The code is open. The governance is centralized. This is intentional. |
| 44 | +## What We Welcome |
| 45 | +- Bug fixes with test cases |
| 46 | +- Performance improvements |
| 47 | +- API compatibility enhancements |
| 48 | +- Documentation improvements |
| 49 | +- Platform-specific fixes |
| 50 | +- Test coverage improvements |
| 51 | + |
| 52 | +## What We Generally Reject |
| 53 | +- Features that bloat binary size significantly |
| 54 | +- Complex configuration systems |
| 55 | +- UI/dashboard components (use external tools) |
| 56 | +- Breaking changes to established APIs |
| 57 | +- Features not aligned with OpenAI compatibility |
| 58 | + |
| 59 | +## Review Process |
| 60 | + |
| 61 | +**IMPORTANT: Pull Request Access is Restricted** |
| 62 | +- Only approved maintainers may submit pull requests |
| 63 | +- All contributions from non-maintainers will be declined |
| 64 | +- Code contributions require pre-approval via maintainer application process |
| 65 | + |
| 66 | +**For Approved Maintainers:** |
| 67 | +- All PRs require review and approval from the lead maintainer |
| 68 | +- Merge authority is reserved to maintain project direction |
| 69 | +- We aim to review PRs within 1-2 business days |
| 70 | +- Constructive feedback will be provided for rejected PRs |
| 71 | + |
| 72 | +## Development Setup |
| 73 | +```bash |
| 74 | +# Clone and setup |
| 75 | +git clone https://github.com/Michael-A-Kuykendall/shimmy |
| 76 | +cd shimmy |
| 77 | +cargo build |
| 78 | + |
| 79 | +# Run tests |
| 80 | +cargo test |
| 81 | + |
| 82 | +# Check formatting and linting |
| 83 | +cargo fmt --check |
| 84 | +cargo clippy -- -D warnings |
| 85 | +``` |
| 86 | + |
| 87 | +## Maintainer Process |
| 88 | + |
| 89 | +### Current Maintainer Structure |
| 90 | +- **Lead Maintainer**: Michael A. Kuykendall (@Michael-A-Kuykendall) |
| 91 | +- **Additional Maintainers**: Currently none (solo-maintained project) |
| 92 | + |
| 93 | +### Becoming a Maintainer |
| 94 | +Currently, Shimmy is maintained by a single maintainer to ensure consistent vision and rapid iteration. **Code contributions require pre-approved maintainer status.** |
| 95 | + |
| 96 | +**To apply for maintainer status:** |
| 97 | + |
| 98 | +1. **Private Application**: Email michaelallenkuykendall@gmail.com with: |
| 99 | + - Your GitHub username and relevant experience |
| 100 | + - Area of expertise (e.g., performance, platform support, API design) |
| 101 | + - Time commitment you can provide |
| 102 | + - Why you'd like to help maintain Shimmy |
| 103 | + |
| 104 | +2. **Evaluation Process**: Applications are reviewed when additional maintainers are needed |
| 105 | +3. **No Unsolicited PRs**: Code contributions without prior approval will be declined |
| 106 | + |
| 107 | +### Maintainer Responsibilities |
| 108 | +When additional maintainers are added, they will: |
| 109 | +- Review and approve pull requests |
| 110 | +- Triage and respond to issues |
| 111 | +- Maintain code quality standards |
| 112 | +- Participate in release planning |
| 113 | +- Uphold the Shimmy philosophy and project direction |
| 114 | + |
| 115 | +*Note: The project may remain solo-maintained until contribution volume requires additional help.* |
77 | 116 |
|
78 | 117 | ## Recognition |
| 118 | +Contributors are acknowledged in `AUTHORS.md` after a merged PR. |
79 | 119 |
|
80 | | -Helpful bug reports and community members are acknowledged in release notes. |
81 | | -If email collaboration leads to merged work, attribution will be given appropriately. |
82 | | - |
83 | | ---- |
84 | | - |
85 | | -**Maintainer**: Michael A. Kuykendall |
| 120 | +## Questions? |
| 121 | +Open a GitHub Discussion or ping @Michael-A-Kuykendall in your PR. |
0 commit comments