agones.dev/agones@v1.54.0/docs/proposals/NNNN-afp-template/README.md (about) 1 <!-- 2 **Note:** When your AFP is complete, all of these comment blocks should be removed. 3 4 To get started with this template: 5 6 - [ ] **Create an issue in agones repository** 7 When filing an feature tracking issue, please make sure to complete all 8 fields in that template. One of the fields asks for a link to the AFP. You 9 can leave that blank until this AFP is filed, and then go back to the 10 feature and add the link. 11 - [ ] **Make a copy of this template directory.** 12 Copy this template into the owning docs/proposals directory and name it 13 `NNNN-short-descriptive-title`, where `NNNN` is the issue number (with no 14 leading-zero padding) assigned to your proposal above. 15 - [ ] **Fill out as much of the afp.yaml file as you can.** 16 At minimum, you should fill in the "Title", "AFP-Number", "Authors", 17 "Status", and date-related fields. 18 - [ ] **Fill out this file as best you can.** 19 At minimum, you should fill in the "Summary" and "Motivation" sections. 20 These should be easy if you've preflighted the idea of the AFP. 21 - [ ] **Create a PR for this AFP.** 22 Assign it to the relevant people for approval. 23 - [ ] **Merge early and iterate.** 24 Avoid getting hung up on specific details and instead aim to get the goals of 25 the AFP clarified and merged quickly. The best way to do this is to just 26 start with the high-level sections and fill out details incrementally in 27 subsequent PRs. 28 29 Just because a AFP is merged does not mean it is complete or approved. Any AFP 30 marked as `provisional` is a working document and subject to change. You can 31 denote sections that are under active debate as follows: 32 33 ``` 34 <<[UNRESOLVED optional short context or usernames ]>> 35 Stuff that is being argued. 36 <<[/UNRESOLVED]>> 37 ``` 38 39 When editing AFPs, aim for tightly-scoped, single-topic PRs to keep discussions 40 focused. If you disagree with what is already in a document, open a new PR 41 with suggested changes. 42 43 The canonical place for the latest set of instructions (and the likely source 44 of this file) is [here](/docs/proposals/NNNN-afp-template/README.md). 45 46 **Note:** Any PRs to move a AFP to `implementable`, or significant changes once 47 it is marked `implementable`, must be approved by each of the AFP reviewers. 48 If none of those reviewers are still appropriate, then changes to that list 49 should be approved by the remaining reviewers). 50 --> 51 52 # AFP-NNNN: Your short, descriptive title 53 54 <!-- 55 This is the title of your AFP. Keep it short, simple, and descriptive. A good 56 title can help communicate what the AFP is and should be considered as part of 57 any review. 58 --> 59 60 <!-- 61 A table of contents is helpful for quickly jumping to sections of a AFP and for 62 highlighting any additional information provided beyond the standard AFP 63 template. 64 --> 65 66 <!-- toc --> 67 - [Release Signoff Checklist](#release-signoff-checklist) 68 - [Summary](#summary) 69 - [Motivation](#motivation) 70 - [Goals](#goals) 71 - [Non-Goals](#non-goals) 72 - [Proposal](#proposal) 73 - [User Stories (Optional)](#user-stories-optional) 74 - [Story 1](#story-1) 75 - [Story 2](#story-2) 76 - [Notes/Constraints/Caveats (Optional)](#notesconstraintscaveats-optional) 77 - [Risks and Mitigations](#risks-and-mitigations) 78 - [Design Details](#design-details) 79 - [Test Plan](#test-plan) 80 - [Prerequisite testing updates](#prerequisite-testing-updates) 81 - [Unit tests](#unit-tests) 82 - [e2e tests](#e2e-tests) 83 - [API Impact surfaces](#api-impact-surfaces) 84 - [Troubleshooting](#troubleshooting) 85 - [Implementation History](#implementation-history) 86 - [Drawbacks](#drawbacks) 87 - [Alternatives](#alternatives) 88 - [Infrastructure Needed (Optional)](#infrastructure-needed-optional) 89 <!-- /toc --> 90 91 ## Release Signoff Checklist 92 93 <!-- 94 **ACTION REQUIRED:** In order to merge code into a release, there must be an 95 issue in [agones/proposals] referencing this AFP and targeting a release 96 version **before the [Feature Freeze](https://github.com/googleforgames/agones/tree/main/site/content/en/blog/releases) 97 of the targeted release**. 98 99 For features that make changes to code or processes/procedures in core 100 Agones.e., [googleforgames/agones], we require the following Release 101 Signoff checklist to be completed. 102 103 Check these off as they are completed for the Release Team to track. These 104 checklist items _must_ be updated for the proposal to be released. 105 --> 106 107 Items marked with (R) are required *prior to targeting to a release version / release*. 108 109 - [ ] (R) Proposal issue linked to AFP directory in [agones/proposals] (not initial AFP PR) 110 - [ ] (R) AFP reviewers have approved the AFP status as `implementable` 111 - [ ] (R) Design details are appropriately documented 112 - [ ] (R) Test plan in place, including input from Agones Architecture and Testing 113 - [ ] (R) End-to-End (E2E) Tests must cover all key Agones API operations (e.g., GameServer, GameServerSet, Fleet, FleetAllocation, and Controller). 114 - [ ] (R) Implementation review completed 115 - [ ] (R) Implementation review approved 116 - [ ] "Implementation History" section is up-to-date for release target 117 - [ ] User-facing documentation has been created in [agones/site], for publication to [agones.dev] 118 - [ ] Supporting documentation (e.g., design docs, mailing list discussions, relevant PRs/issues, release notes) prepared 119 120 <!-- 121 **Note:** This checklist is iterative and should be reviewed and updated every time this proposals is being considered for a release target. 122 --> 123 124 [agones.dev]: https://agones.dev 125 [agones/proposals]: https://github.com/googleforgames/agones/tree/main/docs/proposals 126 [googleforgames/agones]: https://github.com/googleforgames/agones 127 [agones/site]: https://github.com/googleforgames/agones/tree/main/site 128 129 ## Summary 130 131 <!-- 132 This section is incredibly important for producing high-quality, user-focused 133 documentation such as release notes or a development roadmap. It should be 134 possible to collect this information before implementation begins, in order to 135 avoid requiring implementors to split their attention between writing release 136 notes and implementing the feature itself. AFP editors and Docs 137 should help to ensure that the tone and content of the `Summary` section is 138 useful for a wide audience. 139 140 A good summary is probably at least a paragraph in length. 141 142 Both in this section and below, follow the guidelines of the [documentation 143 style guide]. In particular, wrap lines to a reasonable length, to make it 144 easier for reviewers to cite specific portions, and to minimize diff churn on 145 updates. 146 147 [documentation style guide]: https://github.com/kubernetes/community/blob/master/contributors/guide/style-guide.md 148 --> 149 150 ## Motivation 151 152 <!-- 153 This section is for explicitly listing the motivation, goals, and non-goals of 154 this AFP. Describe why the change is important and the benefits to users. The 155 motivation section can optionally provide links to [experience reports] to 156 demonstrate the interest in a AFP within the wider Agones community. 157 158 [experience reports]: https://github.com/golang/go/wiki/ExperienceReports 159 --> 160 161 ### Goals 162 163 <!-- 164 List the specific goals of the AFP. What is it trying to achieve? How will we 165 know that this has succeeded? 166 --> 167 168 ### Non-Goals 169 170 <!-- 171 What is out of scope for this AFP? Listing non-goals helps to focus discussion 172 and make progress. 173 --> 174 175 ## Proposal 176 177 <!-- 178 This is where we get down to the specifics of what the proposal actually is. 179 This should have enough detail that reviewers can understand exactly what 180 you're proposing, but should not include things like API designs or 181 implementation. What is the desired outcome and how do we measure success?. 182 The "Design Details" section below is for the real 183 nitty-gritty. 184 --> 185 186 ### User Stories (Optional) 187 188 <!-- 189 Detail the things that people will be able to do if this AFP is implemented. 190 Include as much detail as possible so that people can understand the "how" of 191 the system. The goal here is to make this feel real for users without getting 192 bogged down. 193 --> 194 195 #### Story 1 196 197 #### Story 2 198 199 ### Notes/Constraints/Caveats (Optional) 200 201 <!-- 202 What are the caveats to the proposal? 203 What are some important details that didn't come across above? 204 Go in to as much detail as necessary here. 205 This might be a good place to talk about core concepts and how they relate. 206 --> 207 208 ### Risks and Mitigations 209 210 <!-- 211 What are the risks of this proposal, and how do we mitigate? Think broadly. 212 For example, consider both security and how this will impact the larger 213 Agones ecosystem. 214 215 How will security be reviewed, and by whom? 216 217 How will performance be evaluated, and by whom? 218 219 Consider including folks who also contribute outside the team or workgroup. 220 --> 221 222 ## Design Details 223 224 <!-- 225 This section should contain enough information that the specifics of your 226 change are understandable. This may include API specs (though not always 227 required) or even code snippets. If there's any ambiguity about HOW your 228 proposal will be implemented, this is the place to discuss them. 229 --> 230 231 ### Test Plan 232 233 <!-- 234 **Note:** *Not required until targeted at a release.* 235 The goal is to ensure that we don't accept enhancements with inadequate testing. 236 237 All code is expected to have adequate tests (eventually with coverage 238 expectations). Please adhere to the [Agones testing guidelines][testing-guidelines] 239 when drafting this test plan. 240 241 [testing-guidelines]: https://github.com/googleforgames/agones/tree/main/build#testing-and-building 242 --> 243 244 ##### Prerequisite testing updates 245 246 <!-- 247 Based on reviewers feedback describe what additional tests need to be added prior 248 implementing this proposal to ensure the enhancements have also solid foundations. 249 --> 250 251 ##### Unit tests 252 253 <!-- 254 In principle every added code should have complete unit test coverage, so providing 255 the exact set of tests will not bring additional value. 256 However, if complete unit test coverage is not possible, explain the reason of it 257 together with explanation why this is acceptable. 258 --> 259 260 - `<package>`: `<date>` - `<test coverage>` 261 262 ##### e2e tests 263 264 <!-- 265 This question should be filled when targeting a release. 266 Describe what tests will be added to ensure proper quality of the proposal. 267 --> 268 269 - <test>: <link to test coverage> 270 271 272 ### API Impact surfaces 273 274 <!-- 275 This section provides detailed information regarding the impact of enabling or 276 using a specific feature, particularly in relation to API calls and types. 277 The answers to the following questions are crucial for understanding the changes 278 to the system and ensuring efficient integration and usage. 279 --> 280 281 ###### Will enabling / using this feature result in introducing new API? 282 283 <!-- 284 Describe them, providing: 285 - API details 286 --> 287 288 ### Troubleshooting 289 290 <!-- 291 Please provide details for this section. For final releases, 292 reviewers will confirm answers based on practical experience. This information 293 may later be expanded into a dedicated playbook with monitoring details. 294 --> 295 296 ## Implementation History 297 298 <!-- 299 Major milestones in the lifecycle of a AFP should be tracked in this section. 300 Major milestones might include: 301 - the `Summary` and `Motivation` sections being merged 302 - the `Proposal` section being merged, signaling agreement on a proposed design 303 - the date implementation started 304 - the first Agones release where an initial version of the AFP was available 305 - the version of Agones where the AFP graduated to general availability 306 - when the AFP was retired or superseded 307 --> 308 309 ## Drawbacks 310 311 <!-- 312 Why should this AFP _not_ be implemented? 313 --> 314 315 ## Alternatives 316 317 <!-- 318 What other approaches did you consider, and why did you rule them out? These do 319 not need to be as detailed as the proposal, but should include enough 320 information to express the idea and why it was not acceptable. 321 --> 322 323 ## Infrastructure Needed (Optional) 324 325 <!-- 326 Use this section to specify any infrastructure needs for the project. 327 Examples include: - Requesting a new subproject or repository - Setting up 328 GitHub permissions or automation - Provisioning CI/CD resources - Any additional 329 tooling or integrations. Listing these here allows a proposal to get 330 the process for these resources started right away. 331 -->