|
57 | 57 | GitHub diff is line oriented. Keeping lines within the preferred limit makes changes easier to |
58 | 58 | review. Use a tool like Prettier to bulk-reformat files, or configure your editor's "rulers." If new |
59 | 59 | languages become common, we will describe the coding guidelines for such languages here. |
| 60 | + |
| 61 | +## Git Checkin-to-main Policy |
| 62 | + |
| 63 | +The main branch needs to be kept 'healthy' and ready to ship near daily (daily, or within a day or |
| 64 | +two). An unhealthy main branch negatively impacts day-to-day development and jeopardizes release |
| 65 | +schedules. We have policies to ensure a high quality bar in main. The details differ depending if a |
| 66 | +code change is Experimental vs Preview or Stable. |
| 67 | + |
| 68 | +See [Final Decision: Release channels and cadences #637](https://github.com/microsoft/WindowsAppSDK/discussions/637) |
| 69 | +for the expectations of the various release channels. |
| 70 | + |
| 71 | +### Policy: Preview and Stable (aka non-Experimental) |
| 72 | + |
| 73 | +The following requirements must be met to checkin non-Experimental changes to main: |
| 74 | + |
| 75 | +1. API Review approval |
| 76 | +2. Tests |
| 77 | +3. Prepared to accept bug reports from the world |
| 78 | + |
| 79 | +Changes of a non-Experimental nature must meet these policies to be committed to the main branch. |
| 80 | + |
| 81 | +### Policy: Experimental |
| 82 | + |
| 83 | +The policies for Experimental content differ from non-Experimental content because of the reasons for Experimental content: |
| 84 | + |
| 85 | +1. **Selfhost** – a change is good but you're interested in community usage and feedback to verify |
| 86 | + it's ready for Preview/Stable. |
| 87 | +2. **Skeleton** – API Review has approved and you've made an initial 'skeletal' implementation to |
| 88 | + get the interface and infrastructure building but isn't functionally complete e.g. skeletal code |
| 89 | + compiles but everything returns E_NOTIMPL/false/null/etc). Having the API surface building in |
| 90 | + main can unblock documentation, test and sample writers. |
| 91 | +3. **Feedback** – your API shape isn't locked (or even clear) but you want and/or need feedback from |
| 92 | + the community, partners and/or others before deciding the API is ready to consider for |
| 93 | + non-Experimental releases. The API is not yet ready to go through API Review. |
| 94 | + |
| 95 | +Reasons NOT to make Experimental content: |
| 96 | + |
| 97 | +1. **Prototype** – prototypes, ideas and wild experimentation should be done on a 'feature branch' |
| 98 | + and not checked into main. To make a 'feature branch' checkout a new branch off main (or a child |
| 99 | + of main) with no intention to checkin to main any time soon (or maybe ever). Make a feature |
| 100 | + branch and don't check into main |
| 101 | + |
| 102 | +Changes of an Experimental nature follow a modified form of the policies for non-Experimental content: |
| 103 | + |
| 104 | +1. CONSIDER: Review API with your local-representative |
| 105 | +2. Tests |
| 106 | +3. Prepared to accept feedback from the world |
| 107 | +4. Experimental APIs are marked experimental |
| 108 | + |
| 109 | +Experimental APIs don't go through full API Review but should be discussed with your local API |
| 110 | +Review representative. This ensures your API is aligned with API practices and policies and avoids |
| 111 | +the risk of significant changes required to pass API Review. |
| 112 | + |
| 113 | +Experimental content requires appropriate test coverage. This is no different than non-Experimental |
| 114 | +content, except meaning of 'appropriate' may vary. For instance, 'skeletal' Experimental APIs don't |
| 115 | +need the same breadth of test coverage as non-Experimental APIs. |
| 116 | + |
| 117 | +Experimenal content is broadly shipped via Experimental releases. You should be prepared to receive |
| 118 | +feedback on Experimental content. |
| 119 | + |
| 120 | +Experimental content must be tagged to indicate it's Experimental. The mechanisms to do so may vary |
| 121 | +(WinRT APIs, Flat-C APIs, non-API content (e.g. data files), etc) but the policy is the same - |
| 122 | +Experimental content must be marked to indicate it's Experimental. |
0 commit comments