coolify/CONTRIBUTING.md

245 lines
8.9 KiB
Markdown
Raw Normal View History

2024-09-11 12:31:35 +00:00
# Contributing to Coolify
Were happy that youre interested in contributing to Coolify!
2024-08-26 12:35:51 +00:00
There are many ways to help:
- Answer questions in GitHub Discussions or Discord
- Report reproducible bugs
- Submit pull requests to fix issues
- Add new one-click services
- Improve documentation
2024-08-26 12:35:51 +00:00
Coolify is a PaaS used by 400,000+ people worldwide and maintained by two active maintainers. Contributions are welcome — but **alignment matters more than quantity**.
2024-08-26 12:35:51 +00:00
This guide explains **what kind of contributions are likely to be accepted** and how to submit them properly. Following it saves time for both you and the maintainers.
2025-01-22 18:47:33 +00:00
> [!IMPORTANT]
> These guidelines may feel stricter than in many open-source projects. That is intentional.
> Clear structure and boundaries prevent maintainer burnout and keep the project sustainable long-term.
2024-08-26 12:57:28 +00:00
2024-08-26 12:35:51 +00:00
## High-Level Expectations
- Coolify has a clear product direction.
- Ownership and decisions are centralized.
- Review capacity is limited.
- Not every contribution will be accepted — even if technically correct.
2024-08-26 12:35:51 +00:00
This is normal for a two-maintainer project.
2024-08-26 12:35:51 +00:00
## State of the Project
Coolify is currently at v4 and is still in beta. While v4 is stable, it has some limitations, including:
- Limited scaling support
- A more complex user experience
- Other smaller issues that need refinement
2024-08-26 12:35:51 +00:00
These limitations will be addressed in Coolify v5, which is in the planning stage. However, the maintainers are focused on releasing a stable v4 version before dedicating time to v5 development. Because of this, major features, architectural changes, or significant UI changes will not be accepted for v4 at this stage.
2024-08-26 12:35:51 +00:00
We welcome contributions that help stabilize v4, but larger changes will be saved for v5 once we have a stable v4 release.
2024-09-11 12:31:35 +00:00
2024-08-26 12:35:51 +00:00
## What Makes a Strong Contribution
The following types of contributions are most likely to be accepted:
2024-08-26 12:35:51 +00:00
- **Bug fixes** (with clear reproduction steps)
- **Documentation improvements** (typos, clarifications, examples, guides)
- **Features discussed and aligned beforehand**
- **New service templates** requested by the community
- **Small, focused pull requests**
2024-08-26 12:35:51 +00:00
If your change is small and obvious (typo fix, small bug, minor docs update), you may open a pull request directly.
2024-09-11 12:31:35 +00:00
2024-08-26 12:35:51 +00:00
## Keep Changes Focused
Only modify what is necessary to achieve your goal.
2024-08-26 12:35:51 +00:00
If you are fixing a bug in `file.yaml`, do not:
- Reformat unrelated files
- Refactor unrelated code
- Fix style issues elsewhere
- Combine multiple unrelated changes
2024-08-26 12:35:51 +00:00
Even “improvements” increase review complexity.
2024-08-26 12:57:28 +00:00
**One pull request = one logical change.**
2024-08-26 12:35:51 +00:00
If you want to refactor or clean up code, discuss it first and submit it separately.
2024-08-26 12:35:51 +00:00
## Discussion Is Required for Larger Changes
For anything beyond a small fix, you must discuss it before opening a pull request.
2024-08-26 12:35:51 +00:00
This includes:
- New features
- UI/UX changes
- Changes to default behavior
- Refactors or cleanup work
- Performance rewrites
- Architectural changes
- Changes touching many files
2024-08-26 12:35:51 +00:00
Discussion happens in GitHub Discussions: https://github.com/coollabsio/coolify/discussions/categories/general
2024-08-26 12:35:51 +00:00
Pull requests introducing major changes without prior discussion will be closed without review.
2024-08-26 12:35:51 +00:00
This ensures alignment before significant work is done.
2024-08-26 12:57:28 +00:00
2024-08-26 12:35:51 +00:00
## What This Project Is Not
To set clear expectations:
- Coolify is not optimized for first-time open-source contributors
- We do not provide beginner-focused mentorship issues
- Large unsolicited changes are unlikely to be accepted
- Broad refactors or style rewrites are not helpful
- Low-effort AI-generated pull requests will be closed
2024-08-26 12:35:51 +00:00
AI usage is allowed. However, contributors must fully understand what their changes do and why.
2024-08-26 12:35:51 +00:00
Clear expectations help everyone use their time effectively.
2024-08-26 12:35:51 +00:00
2024-09-11 12:31:35 +00:00
# Ways to Contribute
## 1. Support Contributions
We use Discord for most support requests and GitHub Discussions for help.
2024-08-26 12:35:51 +00:00
### Requesting Support
If you need help:
- Provide complete and detailed information
- Include logs, screenshots, and steps to reproduce
- Be respectful — support is voluntary
2024-08-26 12:35:51 +00:00
Do not ping people for attention. They respond when available.
2024-08-26 12:57:28 +00:00
### Providing Support
If you help others:
- Verify your information before sharing
- Be patient and respectful
- Remember that not everyone has the same experience level
2024-08-26 12:35:51 +00:00
## 2. Bug Report Contributions
Create a GitHub issue **only** if:
- The bug is reproducible
- You have confirmed no existing issue already covers it
For questions or general help, use GitHub Discussions or the Discord support channel.
2024-09-11 12:31:35 +00:00
Bug reports must include:
- Clear reproduction steps
- Expected result
- Actual result
2024-08-26 12:57:28 +00:00
Incomplete reports may be closed.
2024-08-29 11:12:34 +00:00
## 3. Code Contributions
Maintainers may close pull requests at their discretion, without explanation.
2024-08-29 11:12:34 +00:00
### Issue Requirement
Every pull request should reference and close an Issue or Discussion.
2024-08-29 11:12:34 +00:00
If none exists, create one first.
2024-08-29 11:12:34 +00:00
Pull requests without linked issue or discussions may not be reviewed and can be closed at any time.
2024-09-20 23:08:28 +00:00
## Commit Message Format
All commits must start with an action and category:
- `fix(ui):` — UI-related fixes
- `feat(api):` — API-related changes
- `feat(service):` — One-click service changes
2024-09-20 23:08:28 +00:00
Examples:
- `fix(api): version endpoint returns wrong data`
- `feat(service): add supabase`
2024-09-20 23:08:28 +00:00
Use the commit description only for concise context.
2024-09-20 23:08:28 +00:00
Walls of text listing every change in description will be rejected.
2024-09-20 23:08:28 +00:00
## Pull Request Title Format
Pull request titles follow the same format:
- `fix(ui):`
- `feat(api):`
- `feat(service):`
2024-09-20 23:08:28 +00:00
Examples:
- `fix(api): version endpoint returns wrong data`
- `feat(service): add supabase`
2024-09-20 23:08:28 +00:00
## AI Usage Disclosure
If AI tools were used at any stage, mention it in the pull request description.
2024-09-20 23:08:28 +00:00
AI is allowed.
However:
- You must understand every change
- You must verify correctness
- You must ensure it follows project patterns
AI-generated pull requests without clear understanding will be closed.
## Test Before Submitting
Before submitting a pull request:
- Test your changes thoroughly
- Verify they work in a clean environment
- Provide detailed testing steps in the PR description
If maintainers cannot reproduce working behavior, the PR will be closed without further review.
## Submitting a Pull Request
- GitHub will auto-populate the PR template
- The contributor agreement must remain intact
- Pull requests without the contributor agreement will be closed
- All pull requests must target the `next` branch
- PRs targeting other branches will be closed without review
## Bounty Issues
Community members may create bounty issues for features or improvements.
Important:
- Only existing contributors are eligible
- First-time contributors targeting bounty issues will be automatically closed and maybe excluded from contributing.
This policy exists to prevent spam. We close 30+ bounty-targeted spam PRs per week.
## FAQ
**Q: Should I ask before fixing a typo or a small bug?**
A: No, small, obvious fixes like typos or narrowly-scoped bug fixes can be submitted as a PR directly.
**Q: I have an idea for a new feature.**
A: Awesome! Discuss it first in GitHub Discussions or Discord. **Do not** open a PR for new features without prior alignment.
**Q: My PR was closed without detailed feedback.**
A: This usually means it didnt align with the projects direction, required more review bandwidth than available, or targeted major changes not allowed in v4. This is normal for a two-maintainer project.
**Q: Can I work on an open issue?**
A: Comment on the issue first to confirm its still relevant and that no one else is actively working on it. For anything beyond a small fix, discuss your approach before implementing.
**Q: I noticed code that could be cleaned up while working on my change.**
A: Focus only on your stated goal. Cleanups or refactors should be submitted as separate PRs after discussion.
**Q: Can I use AI to help with my PR?**
A: Yes, AI-assisted contributions are allowed. But you must fully understand and verify the changes. PRs that appear to be generated by AI without context understanding will be closed.
**Q: Can I work on a bounty issue as a first-time contributor?**
A: No, bounty issues are reserved for existing contributors. First-time contributors targeting bounty issues will have their PRs closed without review. This prevents spam and ensures bounties go to contributors familiar with the project.
2024-09-20 23:08:28 +00:00
**Q: My PR was closed without review. Can I submit a new one?**
A: Yes, but keep in mind a PR closure is feedback, not a rejection of your effort. It usually means the PR didnt match the project goals or guidelines. Address these issues first — repeating the same approach may hurt your standing with maintainers.
2024-09-11 12:31:35 +00:00
# Development Guides
## Local Development
To build and run Coolify locally, see: [Development](./DEVELOPMENT.md)
2024-09-11 12:31:35 +00:00
## Adding a New Service
To add a new one-click service, follow: https://coolify.io/docs/get-started/contribute/service
2024-09-11 12:31:35 +00:00
## Contributing to Documentation
To contribute to documentation, see: https://coolify.io/docs/get-started/contribute/documentation