Skip to content

Commit 8aeab05

Browse files
authored
Initial write up (#1189)
1 parent 2da59de commit 8aeab05

1 file changed

Lines changed: 63 additions & 0 deletions

File tree

docs/Coding-Guidelines.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,66 @@ ABI.
5757
GitHub diff is line oriented. Keeping lines within the preferred limit makes changes easier to
5858
review. Use a tool like Prettier to bulk-reformat files, or configure your editor's "rulers." If new
5959
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

Comments
 (0)