diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..8f79386 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,14 @@ +--- +# These are supported funding model platforms +github: [LizardByte] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: LizardByte # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username + +# Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] +custom: ['https://paypal.me/ReenigneArcher'] diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml new file mode 100644 index 0000000..b9749ff --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -0,0 +1,34 @@ +--- +name: Bug Report +description: Create a bug report to help us improve. +body: + - type: markdown + attributes: + value: > + **THIS IS NOT THE PLACE TO ASK FOR SUPPORT!** + Please use our [Support Center](https://app.lizardbyte.dev/support) for support issues. + Before creating an issue, please review our + [AI Community Rules](https://docs.lizardbyte.dev/latest/community/community_rules.html#ai-generated-content). + - type: textarea + id: description + attributes: + label: Describe the Bug + description: A clear and concise description of the bug. + validations: + required: true + - type: textarea + id: expected + attributes: + label: Expected Behavior + description: A clear and concise description of what you expected to happen. + - type: textarea + id: additional + attributes: + label: Additional Context + description: Add any other context about the bug here. + - type: markdown + attributes: + value: > + Make sure to close your issue when it's solved! If you found the solution yourself please comment so that + others benefit from it. If the solution required changes to our code, please leave the issue open and we will + close the issue when it's fixed in the next release. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..50d9f85 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,19 @@ +--- +# This file is centrally managed in https://github.com//.github/ +# Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in +# the above-mentioned repo. + +blank_issues_enabled: false +contact_links: + - name: Discussions + url: https://github.com/orgs/LizardByte/discussions + about: Community discussions + - name: Questions + url: https://github.com/orgs/LizardByte/discussions + about: Ask questions + - name: Feature Requests + url: https://github.com/orgs/LizardByte/discussions + about: Request new features + - name: Support Center + url: https://app.lizardbyte.dev/support + about: Official LizardByte support diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..0b36451 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,26 @@ +--- +# This file is centrally managed in https://github.com//.github/ +# Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in +# the above-mentioned repo. + +# All dependendencies, except git submodules, in this project are now managed by Renovate. +# See https://github.com/LizardByte/.github/blob/master/renovate-config.json5 for configuration. + +version: 2 +updates: + - package-ecosystem: "gitsubmodule" + cooldown: + exclude: + - "*" + directory: "/" + rebase-strategy: disabled + schedule: + interval: "cron" + cronjob: "30 2 * * *" + timezone: "America/New_York" + groups: + vulkan: + patterns: + - "third-party/Vulkan-*" + - "third-party/*/Vulkan-*" + open-pull-requests-limit: 10 diff --git a/.github/org-sync-state.json b/.github/org-sync-state.json new file mode 100644 index 0000000..a7d29b4 --- /dev/null +++ b/.github/org-sync-state.json @@ -0,0 +1,76 @@ +{ + "version": 1, + "id": "org-sync", + "files": { + ".github/dependabot.yml": { + "mode": "sync", + "sha": "0b364513353fb5e5ebc5ba4e7e76c987229b28c0", + "permissions": "100644" + }, + ".github/FUNDING.yml": { + "mode": "sync", + "sha": "8f79386da18b137f88cc7f2b088c84e78068c305", + "permissions": "100644" + }, + ".github/ISSUE_TEMPLATE/bug-report.yml": { + "mode": "sync", + "sha": "b9749ffaaee1464397932fbcfd21c38c00921e69", + "permissions": "100644" + }, + ".github/ISSUE_TEMPLATE/config.yml": { + "mode": "sync", + "sha": "50d9f85fa31957e184aa815e213e926f11062fe9", + "permissions": "100644" + }, + ".github/pull_request_template.md": { + "mode": "sync", + "sha": "7082669c2d17ca99b5cda9f70a30d7a098828d61", + "permissions": "100644" + }, + ".github/semantic.yml": { + "mode": "sync", + "sha": "92d97a741e8c6f2de6258df8bd25a4e32e274b51", + "permissions": "100644" + }, + ".github/workflows/_codeql.yml": { + "mode": "sync", + "sha": "5569a2ed7c0b3129613878e3e0550e1ef377d115", + "permissions": "100644" + }, + ".github/workflows/_common-lint.yml": { + "mode": "sync", + "sha": "276fca5110ca2748a5a6391769e93e647d0dbef7", + "permissions": "100644" + }, + ".github/workflows/_top-issues.yml": { + "mode": "sync", + "sha": "3072822c6a6832079de60fe8940953e008da165f", + "permissions": "100644" + }, + "CODE_OF_CONDUCT.md": { + "mode": "sync", + "sha": "4885bee942aaf0a66236299e35713699b41e701e", + "permissions": "100644" + }, + "CONTRIBUTING.md": { + "mode": "sync", + "sha": "1d56c2ea083869aba49032d1a9d314d20db296fc", + "permissions": "100644" + }, + "renovate.json": { + "mode": "sync", + "sha": "11ebb7e879d8a91d648d1b1b8c19395896331669", + "permissions": "100644" + }, + "SECURITY.md": { + "mode": "sync", + "sha": "2739a9e3eeee59be61c040d803938e2f968e10f3", + "permissions": "100644" + }, + "SUPPORT.md": { + "mode": "sync", + "sha": "0d036bb09b0060eccec738f2b4b999d5a4bdd725", + "permissions": "100644" + } + } +} diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..7082669 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,64 @@ + + +## Description + + + +### Screenshot + + + +### Issues Fixed or Closed + + + + + + +#### Roadmap Issues + + + + +## Testing + + + + + + +## Type of Change + +- [ ] **feat**: New feature (non-breaking change which adds functionality) +- [ ] **fix**: Bug fix (non-breaking change which fixes an issue) +- [ ] **docs**: Documentation only changes +- [ ] **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing semicolons, etc.) +- [ ] **refactor**: Code change that neither fixes a bug nor adds a feature +- [ ] **perf**: Code change that improves performance +- [ ] **test**: Adding missing tests or correcting existing tests +- [ ] **build**: Changes that affect the build system or external dependencies +- [ ] **ci**: Changes to CI configuration files and scripts +- [ ] **chore**: Other changes that don't modify src or test files +- [ ] **revert**: Reverts a previous commit +- [ ] **BREAKING CHANGE**: Introduces a breaking change (can be combined with any type above) + + +## Checklist + +- [ ] Code follows the style guidelines of this project +- [ ] Code has been self-reviewed +- [ ] Code has been commented, particularly in hard-to-understand areas +- [ ] Code docstring/documentation-blocks for new or existing methods/components have been added or updated +- [ ] Tests have been added or updated for new or modified functionality, including regression tests for bug fixes + +### AI Usage + +See our [AI usage policy](https://docs.lizardbyte.dev/latest/developers/contributing.html#ai-usage). + +- [ ] AI tools were used while preparing this PR + + diff --git a/.github/semantic.yml b/.github/semantic.yml new file mode 100644 index 0000000..92d97a7 --- /dev/null +++ b/.github/semantic.yml @@ -0,0 +1,15 @@ +--- +# This file is centrally managed in https://github.com//.github/ +# Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in +# the above-mentioned repo. + +# This is the configuration file for https://github.com/Ezard/semantic-prs + +enabled: true +titleOnly: true # We only use the PR title as we squash and merge +commitsOnly: false +titleAndCommits: false +anyCommit: false +allowMergeCommits: false +allowRevertCommits: false +targetUrl: https://docs.lizardbyte.dev/latest/developers/contributing.html#creating-a-pull-request diff --git a/.github/workflows/_codeql.yml b/.github/workflows/_codeql.yml new file mode 100644 index 0000000..5569a2e --- /dev/null +++ b/.github/workflows/_codeql.yml @@ -0,0 +1,29 @@ +--- +# This workflow is centrally managed in https://github.com/LizardByte/.github/ +# Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in +# the above-mentioned repo. + +name: CodeQL +permissions: {} + +on: + pull_request: + push: + branches: + - master + schedule: + - cron: '00 12 * * 0' # every Sunday at 12:00 UTC + +concurrency: + group: "${{ github.workflow }}-${{ github.ref }}" + cancel-in-progress: true + +jobs: + call-codeql: + name: CodeQL + uses: LizardByte/.github/.github/workflows/__call-codeql.yml@master + if: ${{ github.repository != 'LizardByte/.github' }} + permissions: + actions: read + contents: read + security-events: write diff --git a/.github/workflows/_common-lint.yml b/.github/workflows/_common-lint.yml new file mode 100644 index 0000000..276fca5 --- /dev/null +++ b/.github/workflows/_common-lint.yml @@ -0,0 +1,23 @@ +--- +# This workflow is centrally managed in https://github.com/LizardByte/.github/ +# Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in +# the above-mentioned repo. + +name: common lint +permissions: {} + +on: + pull_request: + +concurrency: + group: "${{ github.workflow }}-${{ github.ref }}" + cancel-in-progress: true + +jobs: + lint: + name: Common Lint + uses: LizardByte/.github/.github/workflows/__call-common-lint.yml@master + if: ${{ github.repository != 'LizardByte/.github' }} + permissions: + contents: read + pull-requests: read diff --git a/.github/workflows/_top-issues.yml b/.github/workflows/_top-issues.yml new file mode 100644 index 0000000..3072822 --- /dev/null +++ b/.github/workflows/_top-issues.yml @@ -0,0 +1,27 @@ +--- +# This workflow is centrally managed in https://github.com/LizardByte/.github/ +# Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in +# the above-mentioned repo. + +# Create a top issues dashboard + +name: Top issues +permissions: {} + +on: + schedule: + - cron: '0 6/12 * * *' + workflow_dispatch: + +concurrency: + group: 'top-issues' + cancel-in-progress: true + +jobs: + top-issues: + name: Top issues + uses: LizardByte/.github/.github/workflows/__call-top-issues.yml@master + if: github.repository_owner == 'LizardByte' + permissions: + contents: read + issues: write diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..4885bee --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,132 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement using our +[support center](https://app.lizardbyte.dev/support). +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..1d56c2e --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,260 @@ +# Contributing + +## Guidelines +Thank you for considering contributing to our open source project! We welcome all contributions, whether you're fixing +a bug, improving documentation, or adding a new feature. + +Before you start, please take a moment to read our code of conduct and community guidelines, which outline our +expectations for respectful and inclusive behavior. + +### Getting Started +1. Fork the repository on GitHub to create a copy of the project. +2. Create a new branch for your changes. This will help if you need to create multiple pull requests, which may be + out of scope from each other. +3. Make your changes, be sure to follow our code style guidelines and test your code thoroughly. +4. Document your code changes to the best of your ability. This will help other contributors understand the + purpose and functionality of your changes. +5. You can also add missing documentation to any related code. Documentation is important for the maintainability + of our projects. +6. When you're ready, submit a pull request using the template provided. + +### Pull Requests + +#### Creating a Pull Request +To help us review your changes quickly and accurately, please follow these guidelines when submitting a pull request: + +1. Submit your pull request against the default branch. The pull request title should follow + [conventional commit](https://www.conventionalcommits.org/en/v1.0.0/) guidelines. If we accept the PR, it will + be squashed and merged with the pull request title and number as the commit message. +2. Complete the pull request template, including any relevant details about your changes and any associated issues. + + * Use the official template, including when AI tools help write your PR description. + * Leave the template comments in place. They are helpful when editing the PR description. + + ```markdown + + ``` + + * Do not delete any sections of the template, even if they do not apply to your changes. + * Link any issues or discussions that are resolved by your changes. + + ```markdown + - Closes #123 + - Fixes #456 + - Resolves #789 + ``` + + * Complete the checklists. It is not required to check everything, only check the items that apply to your changes. + + ```markdown + - [x] This is a complete item + - [ ] This is an incomplete item + ``` + +3. Be prepared to address any feedback or questions that may arise during the code review process. + +> [!NOTE] +> It is important to note that pull requests should generally address a single issue or feature to make it +> easier to review and test the code. In some cases, exceptions may be made. For example, if you find a typo or +> formatting error in a file being modified, it may be acceptable to fix it in the same pull request as a drive-by +> fix. However, if the pull request is already large, it may be better to create a separate pull request for the +> secondary fixes. + +#### Review Process +Pull requests may be reviewed by project maintainers, AI agents, or both to ensure code quality and consistency with +project standards. AI agents help us keep up with the high volume of incoming pull requests. Maintainers remain +responsible for merge decisions. + +Address valid feedback from AI agents as you would feedback from a human reviewer. If a finding is incorrect or does +not apply, explain why with relevant code, tests, or other evidence. AI reviews can make mistakes, so use your +engineering judgment when responding. + +The changes requested may be minor, such as fixing a typo, adjusting formatting, or adding a comment. These may seem +like small requests, but they are important to our projects as they help ensure that the code is readable, +maintainable, and consistent with the rest of the project. In other cases, the requested changes may be more +significant. In either case, the maintainers will provide feedback to help you improve the code. + +Please keep in mind that partially complete pull requests will not be merged. Before merging, we will consider the +following criteria: + +* Does the code follow the style guidelines of the project? +* Does the change add value? +* Is the code well commented? +* Have documentation blocks been updated for new or modified components? +* Will the changes create issues in other scenarios? +* Have appropriate tests, including regression tests, been added or updated? + +Developers and maintainers will attempt to assist with challenging issues. + +### Code Style + +#### Code Style Guidelines +We enforce consistent code style across our projects to improve readability and maintainability of the codebase. +Here are some of the guidelines we follow: + +- Each file, with few exceptions, should end with an empty line. +- In most cases, the maximum line length should not exceed 120 characters to make the code more readable. +- We use [yamllint](https://yamllint.readthedocs.io) to lint our *yaml* files. You can find the configuration file + [here](https://github.com/LizardByte/.github/blob/master/.yamllint.yml) in our *.github* repository. +- We use [CodeQL](https://codeql.github.com/) and [SonarCloud](https://sonarcloud.io/) to analyze our codebases. + There will be a comment on your PR indicating if there are any issues that need to be addressed. + Please address these issues if reasonable. + In some cases, there may be false positives, use your best judgment to determine if changes should be made. + These tools are not perfect and not meant to override engineering judgment. + +Want to address SonarCloud issues locally before committing? +You can use the [SonarLint](https://www.sonarsource.com/products/sonarlint/) plugin for your IDE. + +### AI Usage +AI tools and agents are welcome for brainstorming, implementation, debugging, refactoring, testing, documentation, +and preparing PR descriptions. This includes substantial AI-assisted changes, provided they meet the same quality +standards as any other contribution. + +#### Contributor Responsibilities +You are responsible for all contributions submitted under your name, including work produced by an AI agent. +Before submitting a PR: + +- Review the full diff and understand how the changes work. Be prepared to explain your implementation and decisions. +- Verify the accuracy of generated code, documentation, and PR descriptions. Remove errors, invented claims, and + unrelated changes. +- Follow the project's established patterns, conventions, and contribution guidelines. +- Test the changes and add appropriate automated coverage, including regression tests as described below. +- Report the validation you actually performed and any limitations, such as tests you could not run. + +Contributions that contain errors, do not solve the stated problem, or fail to meet our quality standards may be +rejected regardless of how they were created. + +#### AI Disclosure +Check the box in the PR template's AI Usage section if AI tools were used while preparing the PR. Leave it unchecked +if no AI tools were used. You may optionally describe how AI helped. + +#### Issues and Community Posts +Our [community rules](https://docs.lizardbyte.dev/latest/community/community_rules.html#ai-generated-content) +prohibit AI-generated issues and posts. Use the standard issue template and describe the issue in your own words. + +### Testing +Testing is a critical part of our development process, and we have automated tests and tools to ensure that our code +meets the expected quality and functionality. + +#### Code Style Tests +To ensure consistent code style, we run automated tests on pull requests. The tests that run depend on the language(s) +of the repository. The following table shows the labels and the corresponding tests that will run: + +| Language | Checks | +|------------------------------------|--------------------------| +| `c`, `c++` | clang-format, cmake-lint | +| `docker` | hadolint | +| `github-action`, `github-workflow` | actionlint | +| `jupyter`, `python` | flake8 | +| `PowerShell` | PSScriptAnalyzer | +| `rust` | rustfmt | +| `shell` | shellcheck | +| `yaml` | yamllint | + +Projects may have additional checks, `eslint` for example, depending on the project's requirements. + +#### Unit Testing +We strive to have comprehensive unit tests for our projects, but this is still a work in progress for some projects. +We welcome contributions that improve test coverage and add new tests. + +Automated tests, including regression tests, are expected for most code changes. For bug fixes, add a regression test +that reproduces the original issue, fails without the fix, and passes with it. For new or modified functionality, +cover the intended behavior and relevant edge cases. Follow the project's existing test framework and conventions. +PRs should not drastically reduce coverage percentages. + +Documentation-only changes and other changes without testable behavior may not need automated tests. If automated +testing is impractical for your change, explain why in the PR and describe the manual validation you performed. +Include the test commands and results in the PR's Testing section, along with any checks you could not run. + +Please reach out if you would like assistance writing tests. + +#### Python Projects +All Python projects in the LizardByte organization use [uv](https://docs.astral.sh/uv/) for dependency management, +Python environment setup, lock files, and command execution. A Python project's `pyproject.toml` and `uv.lock` files +are the source of truth for its dependencies. + +Use the Python version declared by the project instead of assuming the same version across every repository. After +changing Python dependencies or project metadata, update and commit the lock file with the related change. + +Common uv commands: + +```shell +uv lock --check +uv sync --frozen +uv run --locked python -m pytest +uv lock +``` + +Useful tips: + +* Use `uv lock --check` in validation to confirm the lock file still matches `pyproject.toml`. +* Use `uv sync --frozen` in custom build or CI commands to install only from `uv.lock` without updating it. +* Use native uv integrations for hosted services when available, and add a lockfile drift check when they cannot pass + `--frozen` directly. +* Use `uv run --locked ` when you want to run a project command without changing `uv.lock`. +* Use `uv sync --locked` locally when you want uv to fail if `uv.lock` is missing or out of date. +* Use `uv lock` only when dependency inputs changed and the lock file should be updated. +* Prefer project-specific commands from each repository's documentation when they exist. + +### Localization +LizardByte projects are used by people all over the world. When feasible, we strive to make our projects +multilingual. If you are able to contribute translations, we would be grateful for your help. + +#### CrowdIn +The translations occur on [CrowdIn](https://translate.lizardbyte.dev). +Anyone is free to contribute to the localization there. The project on CrowdIn is a mono-project, meaning that all +translations are done in one place. This allows for easier management of translations across projects. + +##### Translation Basics +* The brand name *LizardByte* and project names should never be translated. +* Other brand names should never be translated. Examples include *AMD*, *Intel*, and *NVIDIA*. + +##### CrowdIn Integration +How does it work? + +When a change is made to a project's source code, CrowdIn will automatically receive the updated strings. + +Once translations are updated on CrowdIn, a push gets made to the *l10n_master* branch and a PR is made against the +*master* branch. Once the PR is merged, all updated translations are part of the project and will be included in the +next release. + +#### Extraction +The extraction process varies by project. Please consult the project's documentation for more information. + +#### CrowdIn Contributors +Thank you to all the contributors who have helped with translations. Your contributions are greatly appreciated! + +

+ + + +

+ +### Legal +We require that all contributors sign a Contributor License Agreement (CLA) before we can merge their pull requests. +If any action is required, a bot will comment on your PR with instructions. +Exempt repositories are listed below. + +- beautiful-jekyll-next +- build-deps +- contribkit +- pacman-repo-builder +- Sunshine +- tray +- Virtual-Gamepad-Emulation-Bus +- Virtual-Gamepad-Emulation-dotnet +- Virtual-Gamepad-Emulation-Client + +We offer two types of CLAs: + +* [CLA for individuals](https://github.com/lizardbyte/.github/blob/master/legal/cla/CLA) +* [CLA for entities](https://github.com/lizardbyte/.github/blob/master/legal/cla/CLA-entity) + +If you do not own the Copyright in the entire work of authorship submitted, you must complete the following steps: + +1. Add the owner(s) as a *co-author* to a commit in the PR. See + [Creating a commit with multiple authors](https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors). +2. All authors must sign the CLA before it can be merged. + +If you are an entity, you cannot sign the CLA through CLA-assistant. You must sign the CLA for entities. Please contact +LizardByte for more information. diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..2739a9e --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,19 @@ +# Security Policy + +## Supported Versions + +LizardByte only supports the latest version of our software. + +## Reporting a Vulnerability + +If you think you have found a security vulnerability in our software, please report it to us privately using the +"Security" tab on the GitHub repository. + +After you have submitted the vulnerability, we will review the report internally and respond to you with +any questions or next steps. + +If the report is accepted, we will request a CVE and create a private fork of the repository to work on the issue. +Once the pull request is merged, we will publish the security advisory on the GitHub repository. + +We ask that you do not discuss or disclose the vulnerability outside the advisory on GitHub until the advisory is +published. This helps to protect users until a fix is available. diff --git a/SUPPORT.md b/SUPPORT.md new file mode 100644 index 0000000..0d036bb --- /dev/null +++ b/SUPPORT.md @@ -0,0 +1,35 @@ +# Support + +> [!WARNING] +> We use GitHub issues exclusively for actionable bug reports. Low-effort issues will be immediately closed. +> Spamming the GitHub repo or organization will result in a ban. + +## Getting Support + +**First, read the documentation!** Many common questions are answered in our comprehensive docs. + +| Platform | Support Type | Description | +|-------------------------------------------------------------------------|-----------------------|----------------------------------------| +| πŸ“– [Read the Docs](https://docs.lizardbyte.dev/latest/) | **Documentation** | Official documentation and guides | +| πŸ’¬ [Discord](https://discord.com/invite/d6MpcrbYQs) | **Primary Support** | Real-time chat support | +| πŸ™ [GitHub Discussions](https://github.com/orgs/LizardByte/discussions) | **Primary Support** | Feature requests and general discourse | +| πŸ‘½ [Reddit](https://www.reddit.com/r/LizardByte) | **Community Support** | Community-driven support | + +## Additional Resources + +- 🏠 [Homepage](https://app.lizardbyte.dev/) +- πŸ”§ [Status Page](https://status.LizardByte.dev) +- πŸ“ [Blog](https://app.lizardbyte.dev/blog) +- πŸ—ΊοΈ [Roadmap](https://app.lizardbyte.dev/roadmap) + +## Support Guidelines + +When seeking support, please: + +1. **Read the documentation first** - Many common questions are already answered in docs +2. **Use the appropriate channel** - Each platform has multiple channels/categories for support, + select the one that best fits your question +3. **Be courteous and respectful** - Follow community guidelines and be patient with volunteers +4. **Provide detailed information** - Include logs, error messages, and system information when relevant +5. **Use proper formatting** - Help others help you by formatting code and logs properly +6. **Do not cross post** - Please avoid posting the same question in multiple places diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..11ebb7e --- /dev/null +++ b/renovate.json @@ -0,0 +1,7 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "local>LizardByte/.github:renovate-config" + ], + "forkProcessing": "enabled" +}