2024-05-30 02:02:10 +00:00
|
|
|
|
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
|
|
|
|
|
const __pageData = JSON.parse('{"title":"PR checklists","description":"","frontmatter":{},"headers":[],"relativePath":"pr_checklist.md","filePath":"pr_checklist.md"}');
|
|
|
|
|
const _sfc_main = { name: "pr_checklist.md" };
|
2024-06-02 02:43:43 +00:00
|
|
|
|
const _hoisted_1 = /* @__PURE__ */ createStaticVNode('<h1 id="pr-checklists" tabindex="-1">PR checklists <a class="header-anchor" href="#pr-checklists" aria-label="Permalink to "PR checklists""></a></h1><p>This is a non-exhaustive checklist of what the QMK Collaborators will be checking when reviewing submitted PRs.</p><p>If there are any inconsistencies with these recommendations, you're best off <a href="https://github.com/qmk/qmk_firmware/issues/new" target="_blank" rel="noreferrer">creating an issue</a> against this document, or getting in touch with a QMK Collaborator on <a href="https://discord.gg/Uq7gcHh" target="_blank" rel="noreferrer">Discord</a>.</p><h2 id="requirements-for-all-prs" tabindex="-1">Requirements for all PRs <a class="header-anchor" href="#requirements-for-all-prs" aria-label="Permalink to "Requirements for all PRs""></a></h2><ul><li>PR should be submitted using a non-<code>master</code> branch on the source repository <ul><li>this does not mean you target a different branch for your PR, rather that you're not working out of your own master branch</li><li>if submitter <em>does</em> use their own <code>master</code> branch, they'll be given a link to the <a href="./newbs_git_using_your_master_branch">"how to git"</a> page after merging -- (end of this document will contain the contents of the message)</li><li>Note, frequently merging upstream with your branch is not needed and is discouraged. Valid reason for updating your branch may be resolving merge conflicts and pulling in new changes relevant to your PR.</li></ul></li><li>PRs should contain the smallest amount of modifications required for a single change to the codebase <ul><li>multiple keyboards at the same time is not acceptable</li><li><strong>the smaller the PR, the higher likelihood of a quicker review, higher likelihood of quicker merge, and less chance of conflicts</strong></li></ul></li><li>newly-added directories and filenames must be lowercase <ul><li>the lowercase requirement may be relaxed if upstream sources originally had uppercase characters (e.g. LUFA, ChibiOS, or imported files from other repositories etc.)</li><li>if there is valid justification (i.e. consistency with existing core files etc.) this can be relaxed <ul><li>a board designer naming their keyboard with uppercase letters is not enough justification</li></ul></li></ul></li><li>valid license headers on all <code>*.c</code> and <code>*.h</code> source files <ul><li>GPL2/GPL3 recommended for consistency</li><li>an example GPL2+ license header may be copied (and author modified) from the bottom of this document</li><li>other licenses are permitted, however they must be GPL-compatible and must allow for redistribution. Using a different license will almost certainly delay a PR getting merged</li><li>missing license headers will prevent PR merge due to ambiguity with license compatibility <ul><li>simple assignment-only <code>rules.mk</code> files should not need a license header - where additional logic is used in an <code>*.mk</code> file a license header may be appropriate</li></ul></li></ul></li><li>QMK Codebase "best practices" followed <ul><li>this is not an exhaustive list, and will likely get amended as time goes by</li><li><code>#pragma once</code> instead of <code>#ifndef</code> include guards in header files</li><li>no "old-school" or other low-level GPIO/I2C/SPI functions may be used -- must use QMK abstractions unless justifiable (and laziness is not valid justification)</li><li>timing abstractions should be followed too: <ul><li><code>wait_ms()</code> instead of <code>_delay_ms()</code> (remove <code>#include <util/delay.h></code> too)</li><li><code>timer_read()</code> and <code>timer_read32()</code> etc. -- see <a href="https://github.com/qmk/qmk_firmware/blob/master/platforms/timer.h" target="_blank" rel="noreferrer">timer.h</a> for the timing APIs</li></ul></li><li>if you think a new abstraction is useful, you're encouraged to: <ul><li>prototype it in your own keyboard until it
|
2024-05-30 02:02:10 +00:00
|
|
|
|
const _hoisted_29 = [
|
|
|
|
|
_hoisted_1
|
|
|
|
|
];
|
|
|
|
|
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
|
|
return openBlock(), createElementBlock("div", null, _hoisted_29);
|
|
|
|
|
}
|
|
|
|
|
const pr_checklist = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
|
|
|
|
|
export {
|
|
|
|
|
__pageData,
|
|
|
|
|
pr_checklist as default
|
|
|
|
|
};
|