agones.dev/agones@v1.53.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  -->