const__pageData=JSON.parse('{"title":"Feature support policies","description":"","frontmatter":{},"headers":[],"relativePath":"support_deprecation_policy.md","filePath":"support_deprecation_policy.md"}');
const_hoisted_1=/* @__PURE__ */createStaticVNode('<h1id="feature-support-policies"tabindex="-1">Featuresupportpolicies<aclass="header-anchor"href="#feature-support-policies"aria-label="Permalink to "Feature support policies""></a></h1><h2id="system-constraints"tabindex="-1">SystemConstraints<aclass="header-anchor"href="#system-constraints"aria-label="Permalinkto"SystemConstraints""></a></h2><p>Ingeneral,featuredevelopmentisencouragedtosupportasmanyhardwareconfigurationsaspossible.Dependingonsystemconstraintsthismaynotalwaysbeachievable,andisusuallyboundbymicrocontrollerflashandRAMcapabilities.</p><p>Themostfrequently-hitconstraintistheamountofcodethatcanbeflashedontoanATmega32U4--usersalmostalwaysneedtopickandchooseincludedfunctionalityduetothesizeconstraints.</p><divclass="warningcustom-block"><pclass="custom-block-title">WARNING</p><p><ahref="./squeezing_avr">SqueezingAVR</a>hassomestepsthatuserscantakeinordertominimisetheoverallfirmwaresize,whichinsomecasesenablestheabilityforuserstoincludeotherdesiredfeatures.</p></div><h2id="deprecation-removal-policy"tabindex="-1">Deprecation&RemovalPolicy<aclass="header-anchor"href="#deprecation-removal-policy"aria-label="Permalinkto"Deprecation&RemovalPolicy""></a></h2><p>QMKFirmwarestrivesforinnovationwhereverpossible.Withongoingfeaturedevelopmentandotherimprovementsmadetothecodebase,sometimestheretirementofoutdated,under-utilised,orlimited-valuefunctionalityisselectedfordeprecationandsubsequentremoval.</p><p>Theintentbehindfeaturedeprecationistomaintainand/orimprovequality.Asaresult,perpetuallysupportingunder-utilisedfeatureswouldnegativelyimpacttheQMKteam'sabilitytoimproveotherareasofQMKFirmware.</p><p>Theremaybeseveralmotivationsbehindthedeprecationorremovaloffunctionality(keepinginmindthatthislistisnotexhaustive):</p><ul><li>Betteralternativeshavealreadybeenimplemented</li><li>Lackofadherencetostandards</li><li>Poorsupportfromcodeownersorupstreammaintainers</li><li>Poordesign</li><li>Hardwareconstraints</li><li>MinimalusewithintheQMKFirmwarerepository</li><li>Copyrightdisputes</li><li>Bit-rot</li></ul><p>Whenafeatureisselectedfordeprecation,futurechangestothatareawillceasetobedevelopedbytheQMKteam,andPullRequestssubmittedagainstthoseareaswillbedeclined.</p><divclass="tipcustom-block"><pclass="custom-block-title">TIP</p><p>AsQMKdoesnotgathermetricsfromitsusers,theonlywaytheQMKteamcangaugethelevelofusageistorefertothemainQMKFirmwarerepository--searchingthroughforksisnotpracticalduetothesheernumberofthem.</p></div><h3id="how-much-advance-notice-will-be-given"tabindex="-1">Howmuchadvancenoticewillbegiven?<aclass="header-anchor"href="#how-much-advance-notice-will-be-given"aria-label="Permalinkto"Howmuchadvancenoticewillbegiven?""></a></h3><p>Disregardingemergenciesorotherhigh-riskconcerns,deprecationoflargefeaturesorentiresubsystemswithinQMKwillbecommunicatedonthe<code>develop</code>branchatleastonebreakingchangescycle(3months)beforeremoval.Advancenoticemaybeextendedforhigherimpactfeatures,andisatthediscretionoftheQMKteam.</p><p>Smallerfeaturesmayberemovedwithinabreakingchangescycle,andwillgenerallybebasedonthelevelofusewithintherepository.Featureswithminimalusemaybeselectedforremovalatanytimeonthe<code>develop</code>branch.</p><p>Third-partysoftwarelibrariesleveragedbyQMKaregenerallyforkedtomitigatedisappearanceupstream.Iftheupstreamrepositoryisremoved,itwillgenerallybereplacedwhenpractical,ordependentfeatureswillberemovedasperthenormaldeprecationpolicy.</p><h3id="how-will-deprecation-be-communicated"tabindex="-1">Howwilldeprecationbecommunicated?<aclas