Thank you for considering contributing to our project! It's people like you that make essencium such a great library. This document outlines the guidelines and expectations for contributing to our project, ensuring high quality standards and a positive collaborative environment.
These guidelines serve as a reference for contributors, both new and experienced, to understand the expectations and processes involved in contributing to our project. By following these guidelines, we all can pay respect to the time of the maintainers and contributers managing this project and helping you assessing changes and finalize your pull requests.
Essencium is a project that welcomes all kinds of contributions from the community. We welcome various contributions, including bug fixes, feature enhancements, documentation improvements, feature requests, and community engagement.
While we value all contributions, there are certain types that may not align with the project's goals or development philosophy. Before making a contribution, please ensure it fits within the project's scope.
Please, don't use the issue tracker for support questions. Instead, check our communication channels to reach out for help. Also, Stack Overflow is worth considering.
To maintain a friendly and inclusive community, we enforce a code of conduct. Please review and abide by our code of conduct (CODE_OF_CONDUCT.md) throughout your participation in this project.
Furthermore, by contributing code, you agree to fulfill certain technical responsibilities:
- Ensure cross-platform compatibility for every change that's accepted. Windows, Mac, Debian & Ubuntu Linux.
- Create issues for any major changes and enhancements that you wish to make. Discuss things transparently and get community feedback.
- Keep feature versions as small as possible, preferably one new feature per version.
- When contributing code, make sure to adhere to our coding standards.
- Respect the intellectual property rights of others and other projects.
- Be welcoming to newcomers and encourage diverse new contributors from all backgrounds. See the Python Community Code of Conduct.
If you're new to open source or this project, we recommend starting with beginner-friendly tasks. These tasks are usually labeled with "good first issue" or similar tags. To find suitable tasks, you can visit websites like makeapullrequest.com and firsttimersonly.com, which curate such opportunities across various projects.
To submit a contribution, follow these steps:
- Fork the repository to your own GitHub account.
- Create a new branch for your changes.
- Make the necessary changes and commit them.
- Push your branch to your forked repository.
- Open a pull request with a descriptive title and detailed explanation of your changes.
If your contribution requires tests, make sure to include them in your pull request. Provide instructions on how to run the tests, if applicable. Additionally, if there's a different process for submitting "small fixes," we will communicate it to you explicitly.
- Use Conventional Commits
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
- Limit the first line to 72 characters or less
- Reference issues and pull requests liberally after the first line
- When only changing documentation, include [ci skip] in the commit title
- For new or changed features adjust the documentation files in this repository
- Document changes in CHANGELOG.md
- If user need to perform additional steps before upgrading to a version containing your changes describe these in MIGRATION.md
If you discover a security vulnerability, do not open an issue. Instead, please email us at essencium@frachtwerk.de directly, so we can address it promptly and confidentially. For reporting non-security-related bugs, we appreciate if you can use our bug report template, which provides a structured format for gathering essential information to reproduce and understand the issue.
We encourage suggestions for new features or enhancements that align with the project's roadmap, goals, and development philosophy. Before submitting a suggestion, please review our existing documentation and discussions to ensure it hasn't been proposed before. If it's a novel idea, feel free to suggest it through the appropriate channels, providing clear and concise information about the feature's purpose and potential benefits.
Code reviews are an essential part of maintaining code quality and consistency. Our project follows a peer review process, where designated reviewers provide feedback on submitted pull requests. Once a pull request is approved, one of the project maintainers will merge it. Contributors can expect to receive feedback within a reasonable timeframe, and communication regarding the progress of their contributions will be conducted through the pull request comments.
To ensure smooth collaboration, contributors are not granted direct commit access. However, exceptional contributors who consistently provide valuable contributions may be.