Love your input ❤️! Contributing to this project should be as easy and transparent as possible, whether it's:
- reporting a bug,
- discussing the current state of the code,
- submitting a fix,
- proposing new features,
- or becoming a maintainer.
As a small open source project with small community, it can sometimes take a long time to address the issues so please be patient.
Your pull requests are actively welcomed. We collaborate using GitHub flow.
The steps:
- Fork the repository and create your branch from
master
. - If you've added code that requires testing, add tests. See tests.md.
- If you've done a major change, update the documentation. See docs/.
- Ensure the test suite passes. See development.md | Testing for commands.
- Make sure your code lints.See development.md | Linting for commands.
- Issue that pull request!
🙏 DO:
- Document why (what you're trying to solve) rather than what in the pull request.
❗ DON'T:
- Do not update the versions, current version is set by the maintainer and updated automatically by bump-everywhere.
Automated pipelines will run to control your PR and they will publish your code once the maintainer merges your PR.
📖 You can read more in ci-cd.md.
If you're interested in adding new scripts to privacy.sexy:
- Read guidelines for a good script
- Choose one of two ways to contribute:
- Create an issue requesting the addition of a new script. This allows other contributors to develop and add it for you. This will take longer time.
- Submit a pull request with your script. This is the faster route to seeing your script included in the project. Add your scripts to the appropriate OS directory in the collections (for syntax guidance, see collection-files.md) folder, and follow the pull request process.
- Adhere to the 50/72 rule:
- Commit titles should not exceed 50 characters.
- Limit description lines to 72 characters, except for code blocks or inline codes.
- Avoid including delta (such as
git diff
information) or a list of changed files in the commit message. This information is redundant as it's already part of the commit. - Focus on explaining the WHY and HOW of the changes, rather than WHAT changes are.
- Begin the commit message with a concise summary of what the commit accomplishes.
- Use imperative language in the commit title. For example, use "add" instead of "added".
- Commit prefixes:
- Prefix bug fixes with
fix:
orFix ...
. - For commits affecting scripts of specific operating systems:
- Prefix the commit title with an OS-specific tag such as
win:
for Windows scripts,mac:
for macOS scripts, andlinux:
for Linux scripts. - Combine prefixes for commits affecting more than one operating system, e.g.,
win, mac: ...
.
- Prefix the commit title with an OS-specific tag such as
- Prefix bug fixes with
We base versioning on the release's content rather than strictly following semantic versioning.
There are two main types of releases:
-
Patch Releases: These focus on minor UI improvements, bug fixes, refactorings, dependency updates, and documentation updates. For scripts, they involve adjusting recommendation levels, enhancing functionality, and dividing scripts for more precise control. Patch releases may ship minor feature additions if they are essential for fixing a bug. For these updates, we increment the patch number in the
MAJOR.MINOR.PATCH
. -
Feature Releases: These releases bring significant updates that change how users interact with privacy.sexy. They include major UI enhancements, the introduction of new scripts, and features. For these updates, we increment the minor number in the
MAJOR.MINOR.PATCH
.
Maintainers tag specific commits with a version number to trigger a release, and bump-everywhere automates the release process including updating version numbers throughout the project.
Opportunistic refactoring is welcome. If you're adding a feature or fixing a bug, feel free to also clean up and optimize the related code. Your contributions should leave the code in a better state than when you found it.
By contributing to this project, you agree that your contributions are licensed under the GNU Affero General Public License as currently specified. Additionally, you expressly consent to the project maintainers having full authority to modify the licensing terms or relicense your contributions under different terms in the future.