👍🎉 Thank you for considering contributing to the Classifai project! 🎉👍
Please take a moment to review these guidelines before you start helping out.
ClassifAI is a Python package designed to simplify a pipeline of text embedding, vector search, and deployment tasks. We encourage and appreciate contributions, whether it's asking questions about usage, reporting bugs, submitting fixes, or proposing new features. Your involvement helps improve the library and makes it more robust and user-friendly for everyone.😊
- You can find the main repository's Readme file here for more details about the project (just in case you're very lost).
- Have a look at existing bugs and issues that are monitored on the GitHub Issues page.
- Check out the Development Setup section in the Readme file to quickly set up your environment for development.
If you have a question about how to use ClassifAI, encounter unexpected behavior, or need clarification on something, feel free to open an issue. When asking a question:
- Check the README file, DEMO ipynb notebooks, and existing issues page to see if your question has already been answered.
- Use a clear and descriptive title for your issue.
- Provide as much context as possible, including:
- What you are trying to achieve.
- Any relevant code snippets or examples.
- The version of the package you are using.
We encourage asking questions as issues so that others with similar questions can benefit from the answers.
- Use the issue tracker to report bugs or suggest features.
- Provide as much detail as possible, including steps to reproduce the issue.
When describing the bug it would be beneficial to include:
- Steps on how to reproduce the bug,
- The expected, correct behaviour of the software,
- The actual behaviour of the software,
- How often the bug reproduces
If you have an idea for a new feature or improvement but do not plan to implement it yourself, you can suggest an enhancement by opening an Issue on our GitHub Issues page. Please use a clear and descriptive title, and provide details about the proposed enhancement, including its potential benefits and any relevant context. While we welcome all suggestions, submitting an Issue does not guarantee that the feature will be implemented. The maintainers will review and prioritize requests based on project goals and available resources.
Whether you want to: suggest a fix to a known bug/issue; want to propose an enhancement; or provide a general beneficial suggestion change to the code base, please follow the below steps to acheive this.
- Fork the repository.
- Create a new branch for your changes (
git checkout -b feature-name). - Make your changes and commit them with clear, concise messages.
- Push your branch to your forked repository.
- Open a pull request to the main repository.
We currently use conventional commits in our GitHub workflows. This means that our CI/CD pipeline validates pull request (PR) titles to ensure they follow specific prefixes. These prefixes help optimize our release pipelines and automate labeling. Below is a table listing the prefixes you should use when opening a pull request from a forked repository:
| Prefix | Description | Example Usage | Auto-Label |
|---|---|---|---|
fix: |
Indicates a bug fix in the codebase. | fix: resolve null pointer |
bug |
feat: |
Introduces a new feature or functionality. | feat: add user login |
enhancement |
docs: |
Updates or improves documentation. | docs: update README |
documentation |
test: |
Adds or modifies tests for existing functionality. | test: add unit tests |
test |
chore: |
Miscellaneous tasks like build or dependency updates. | chore: update dependencies |
chore |
refactor: |
Code changes that neither fix a bug nor add a feature. | refactor: optimize loop |
refactor |
style: |
Changes that do not affect the meaning of the code (e.g., formatting). | style: fix linting issues |
No label |
perf: |
Code changes that improve performance. | perf: improve query speed |
performance |
ci: |
Changes to CI/CD configuration files and scripts. | ci: update GitHub Actions |
CI/CD |
revert: |
Reverts a previous commit. | revert: undo feature |
revert |
Ensure your PR title starts with one of these prefixes to pass validation. Titles that do not conform will fail the CI/CD pipeline.
We ensure a linear commit history by using squash merges for pull requests. This means that all commits from a feature branch will be combined into a single commit when merged into the main branch.
- Follow the existing code style and conventions you can view the the ways in which we format, lint and check our code during the development proces. Read through the Development Setup section of the readme.md for information on how to set up correctly.
- You can find a setup guide in the readme.md detailing our linting and formatting strategy (primarly using Ruff).
- Ensure your code is well-documented and includes tests where applicable.
We currently do not have a testing pipeline setup for this repository.
If you have any questions, feel free to reach out by opening an issue.
The project team decides when to make a new version release. The project follows Semantic Versioning principles. To release a new version, the maintainers will:
- Ensure that all changes intended for the new version are merged into the main branch.
- Create a new version entry in the
CHANGELOG.mdfile. - Run the manually dispatched GitHub Action workflow
Releaseto validate the changelog and create a new GitHub release.
Thank you for contributing! 😊