First off, thank you for considering contributing to Effortless! We're excited to have you collaborate with us to improve the codebase and make this project better for everyone. Below are the guidelines for contributing to the project.
By participating in this project, you agree to uphold the Code of Conduct. Please treat others with respect and be considerate of differing viewpoints.
If you encounter a bug, have a feature request, or need clarification on something, please create an issue in the issue tracker. Be sure to include:
- A clear title and description
- An explanation of the issue
- Steps to reproduce the issue (if applicable)
- The version of Effortless you're using
When submitting a pull request, please ensure your code:
- Follows the Coding Standards
- Passes all relevant tests
- Includes documentation if you're adding or modifying features
- Links to any issues that the PR solves (put "resolves #X in your commit somewhere, and GitHub will link issue number X)
Here’s how to submit a pull request:
- Fork the repository.
- Create a new branch from
main
for your feature or bugfix.- Use meaningful branch names like
feature/add-db-automigration
orbugfix/fix-db-hang-when-deleting
.
- Use meaningful branch names like
- Make your changes and commit them (see Commit Guidelines).
- Push your branch to your fork.
- Submit a pull request (PR) to the
main
branch with a clear description of your changes.
Commits should follow these best practices:
- Make atomic, logical commits that each address one specific change.
- Use clear, descriptive commit messages. A good commit message is:
- In present tense (e.g., "Fix bug in data validation")
- Capitalized and concise
Avoid large or unrelated changes in a single commit or PR. If your changes span multiple areas of the codebase, break them up into separate commits or PRs.
In this project, we allow AI-assisted code generation but have specific guidelines for how AI-generated commits are handled. All commits will be reviewed to identify whether AI-generated content is involved.
There are two types of AI-generated commit tags:
-
AI
(severe): This indicates that the commit is highly likely to have been generated by AI and contains significant portions of unoriginal, automated code. TheAI
tag is grounds for rejecting a contribution, but it can be disputed (see below). -
maybe AI
(warning): This indicates that the commit might contain some AI-generated code, but it's not problematic. This is a cautionary tag. Commits tagged asmaybe AI
can still be accepted, but the author is encouraged to verify and defend their contribution in the PR comments as necessary.
In summary, using AI as a resource to help write your own original code is fully accepted. Directly using AI-written code may earn you a warning, but if you have properly checked it, it should be fine. Using AI generated code without verifying it's effectiveness, looking over the code, or any other measures will cause your contribution to be rejected.
If you believe your commit has been unfairly tagged as AI-generated, you can dispute it by adding a comment on the PR. Be specific about which parts of the code are original and provide context where appropriate.
- If you can provide sufficient reasoning or context showing that the commit is valid and original, the tag may be downgraded or removed after review.
- Commits tagged as
AI
can only be reopened for review if substantial proof is given that the code is original. - If you don't receive a response, please mention the account that marked your contribution as AI generated.
To keep the codebase clean and maintainable, all code should adhere to the following standards:
- Use consistent indentation and formatting; we use 4-width tab indentation and follow Prettier's standards.
- Follow best practices for the language you're working in (e.g., PEP 8 for Python).
- Write descriptive variable and function names to keep the code maintainable.
- Comment your code where appropriate, especially for complex logic.
- Include meaningful documentation where necessary (e.g., docstrings for functions).
- Use clear type declaration in anything user-facing
Once your PR is submitted, it will go through the following steps:
- Automated checks: Your PR will be run through automated tests (if applicable) to ensure it passes all checks.
- Human review: One or more maintainers will review your code for correctness, style, and adherence to the contribution guidelines.
- AI check: If any commits are flagged as AI-generated, the appropriate tag will be applied (
AI
ormaybe AI
) and your PR may be closed.
After the review is complete, we will either merge your PR, provide feedback for changes, or close it if necessary.
Thank you for your contribution! If you have any questions about the process, feel free to open an issue or reach out.