diff mbox series

[4/7] doc: Migrate Process wiki page to Sphinx

Message ID 20220711171439.1657280-4-trini@konsulko.com
State Superseded
Delegated to: Heinrich Schuchardt
Headers show
Series [1/7] doc: Migrate CodingStyle wiki page to Sphinx | expand

Commit Message

Tom Rini July 11, 2022, 5:14 p.m. UTC
Move the current Process wiki page to doc/develop/process.rst.  The
changes here are for formatting or slight rewording so that it reads
well when linking to other Sphinx documents.

Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Tom Rini <trini@konsulko.com>
---
Changes in v2:
- Assorted wiki -> Sphinx style corrections and a few typo fixes, per
  Heinrich
---
 doc/develop/index.rst   |   1 +
 doc/develop/process.rst | 200 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 201 insertions(+)
 create mode 100644 doc/develop/process.rst

Comments

Heinrich Schuchardt July 13, 2022, 5:36 p.m. UTC | #1
On 7/11/22 19:14, Tom Rini wrote:
> Move the current Process wiki page to doc/develop/process.rst.  The
> changes here are for formatting or slight rewording so that it reads
> well when linking to other Sphinx documents.
>
> Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
> Signed-off-by: Tom Rini <trini@konsulko.com>
> ---
> Changes in v2:
> - Assorted wiki -> Sphinx style corrections and a few typo fixes, per
>    Heinrich
> ---
>   doc/develop/index.rst   |   1 +
>   doc/develop/process.rst | 200 ++++++++++++++++++++++++++++++++++++++++
>   2 files changed, 201 insertions(+)
>   create mode 100644 doc/develop/process.rst
>
> diff --git a/doc/develop/index.rst b/doc/develop/index.rst
> index c0f4f0ba413a..eab00a55382a 100644
> --- a/doc/develop/index.rst
> +++ b/doc/develop/index.rst
> @@ -11,6 +11,7 @@ General
>
>      codingstyle
>      designprinciples
> +   process
>
>   Implementation
>   --------------
> diff --git a/doc/develop/process.rst b/doc/develop/process.rst
> new file mode 100644
> index 000000000000..534da4a2a704
> --- /dev/null
> +++ b/doc/develop/process.rst
> @@ -0,0 +1,200 @@
> +.. SPDX-License-Identifier: GPL-2.0+:
> +
> +U-Boot Development Process
> +==========================
> +
> +Management Summary
> +------------------
> +
> +* Development happens in Release Cycles of 3 months.
> +
> +* The first 2 weeks are called Merge Window, which is followed by a
> +  Stabilization Period.
> +
> +* Patches with new code get only accepted while the Merge Window is open.
> +
> +* A patch that is generally in good shape and that was submitted while the
> +  Merge Window was open is eligible to go into the upcoming release, even if
> +  changes and resubmits are needed.
> +
> +* During the Stabilization Period, only patches that contain bug fixes get
> +  applied.
> +
> +Phases of the Development Process
> +---------------------------------
> +
> +U-Boot development takes place in `Release Cycles
> +<https://www.denx.de/wiki/U-Boot/ReleaseCycle>`_.  A Release Cycle lasts
> +normally for three months.
> +
> +The first two weeks of each Release Cycle are called *Merge Window*.
> +
> +It is followed by a *Stabilization Period*.
> +
> +The end of a Release Cycle is marked by the release of a new U-Boot version.
> +
> +Merge Window
> +------------
> +
> +The Merge Window is the period when new patches get submitted
> +(and hopefully accepted) for inclusion into U-Boot mainline.
> +
> +This is the only time when new code (like support for new processors or new
> +boards, or other new features or reorganization of code) is accepted.
> +
> +Twilight Time
> +-------------
> +
> +Usually patches do not get accepted as they are - the peer review that takes
> +place will usually require changes and resubmits of the patches before they
> +are considered to be ripe for inclusion into mainline.
> +
> +Also, the review often happens not immediately after a patch was submitted,
> +but only when somebody (usually the responsible custodian) finds time to do
> +this.
> +
> +In the result, the final version of such patches gets submitted after the
> +merge window has been closed.
> +
> +It is current practice in U-Boot that such patches are eligible to go into the
> +upcoming release.
> +
> +In the result, the release of the ``"-rc1"`` version does not immediately follow
> +the closing of the Merge Window.
> +
> +Stabilization Period
> +--------------------
> +
> +During the Stabilization Period only patches containing bug fixes get
> +applied.
> +
> +Corner Cases
> +------------
> +
> +Sometimes it is not clear if a patch contains a bug fix or not.
> +For example, changes that remove dead code, unused macros etc. or
> +that contain Coding Style fixes are not strict bug fixes.
> +
> +In such situations it is up to the responsible custodian to decide if he
> +applies such patches even when the Merge Window is closed.
> +
> +Exception: at the end of the Stabilization Period only strict bug
> +fixes my be applied.
> +
> +Sometimes patches miss the the Merge Window slightly - say by few
> +hours or even a day. Patch acceptance is not as critical as a
> +financial transaction, or such. So if there is such a slight delay,
> +the custodian is free to turn a blind eye and accept it anyway. The
> +idea of the development process is to make it foreseeable,
> +but not to slow down development.
> +
> +It makes more sense if an engineer spends another day on testing and
> +cleanup and submits the patch a couple of hours late, instead of
> +submitting a green patch which will waste efforts from several people
> +during several rounds of review and reposts.
> +
> +Differences to the Linux Development Process
> +--------------------------------------------
> +
> +* In Linux, top-level maintainers will collect patches in their trees and send
> +  pull requests to Linus as soon as the merge window opens.
> +  So far, most U-Boot custodians do not work like that; they send pull requests
> +  only at (or even after) the end of the merge window.
> +
> +* In Linux, the closing of the merge window is marked by the release of the
> +  next ``"-rc1"``
> +  In U-Boot, ``"-rc1"`` will only be released after all (or at least most of
> +  the) patches that were submitted during the merge window have been applied.
> +
> +Custodians
> +----------
> +
> +The Custodians take responsibility for some area of the U-Boot code.  The
> +in-tree ``MAINTAINERS`` files list who is reponsible for which areas.
> +
> +It is their responsibility to pick up patches from the mailing list
> +that fall into their responsibility, and to process these.
> +
> +A very important responsibility of each custodian is to provide
> +feedback to the submitter of a patch about what is going on: if the
> +patch was accepted, or if it was rejected (which exact list of
> +reasons), if it needs to be reworked (with respective review
> +comments). Even a "I have no time now, will look into it later"
> +message is better than nothing. Also, if there are remarks to a
> +patch, these should leave no doubt if they were just comments and the
> +patch will be accepted anyway, or if the patch should be
> +reworked/resubmitted, or if it was rejected.
> +
> +Work flow of a Custodian
> +------------------------
> +
> +The normal flow of work in the U-Boot development process will look
> +like this:
> +
> +#. A developer submits a patch via e-mail to the u-boot-users mailing list.
> +   U-Boot has adopted the `Linux kernel signoff policy <https://groups.google.com/g/fa.linux.kernel/c/TLJIJVA-I6o?pli=1>`_, so the submitter must
> +   include a ``Signed-off-by:`` line.
> +
> +#. Everybody who can is invited to review and test the changes.  Reviews should
> +   reply on the mailing list with ``Acked-by`` lines.
> +
> +#. The responsible custodian
> +
> +   #. inspects this patch, especially for:

This should not be a bullet point.

> +
> +   #. :doc:`codingstyle`
> +
> +   #. Basic logic:
> +
> +      * The patch fixes a real problem.
> +
> +      * The patch does not introduce new problems, especially it does not break
> +        other boards or architectures
> +
> +   #. U-Boot Philosophy
> +
> +   #. Applies cleanly to the source tree
> +
> +   #. passes a ``MAKEALL`` compile test without creating new warnings
> +
> +#. Notes:
> +
> +  #. In some cases more than one custodian may be affected or feel responsible.
> +     To avoid duplicated efforts, the custodian who starts processing the
> +     patch should send a short ACK to the mailing list.
> +
> +  #. We should create some tool to automatically do this.
> +
> +  #. This is well documented in :doc:`designprinciples`.
> +
> +  #. The custodian decides himself how recent the code must be.  It is
> +     acceptable to request patches against the last officially released
> +     version of U-Boot or newer.  Of course a custodian can also accept
> +     patches against older code.

This paragraph is unclear. How about:

Patches should be based on the git HEAD. If merge conflicts arise, the
custodian decides to either rebase the patch himself or to request the
submitter for a rebased patch.

> +
> +  #. Commits should show original author in the ``author`` field and include all
> +      sign off/ack lines.

Sign-off, Acked-by, Reviewed-by lines.

Best regards

Heinrich

> +
> +#. The custodian decides to accept or to reject the patch.
> +
> +#. If accepted, the custodian adds the patch to his public git repository and
> +   notifies the mailing list. This note should include:
> +
> +   * a short description of the changes
> +
> +   * the list of the affected boards / architectures etc.
> +
> +   * suggested tests
> +
> +   Although the custodian is supposed to perform his own tests
> +   it is a well-known and accepted fact that he needs help from
> +   other developers who - for example - have access to the required
> +   hardware or tool chains.
> +   The custodian request help for tests and feedback from
> +   specific maintainers and U-Boot users.
> +
> +#. Once tests are passed, some agreed time limit expires, the custodian
> +   requests that the changes in his public git repository be merged into the
> +   main tree. If necessary, the custodian may have to adapt his changes to
> +   allow for a clean merge.
> +   Todo: define a reasonable time limit. 3 weeks?
Tom Rini July 13, 2022, 5:44 p.m. UTC | #2
On Wed, Jul 13, 2022 at 07:36:02PM +0200, Heinrich Schuchardt wrote:
> On 7/11/22 19:14, Tom Rini wrote:
[snip]
> > +Work flow of a Custodian
> > +------------------------
> > +
> > +The normal flow of work in the U-Boot development process will look
> > +like this:
> > +
> > +#. A developer submits a patch via e-mail to the u-boot-users mailing list.
> > +   U-Boot has adopted the `Linux kernel signoff policy <https://groups.google.com/g/fa.linux.kernel/c/TLJIJVA-I6o?pli=1>`_, so the submitter must
> > +   include a ``Signed-off-by:`` line.
> > +
> > +#. Everybody who can is invited to review and test the changes.  Reviews should
> > +   reply on the mailing list with ``Acked-by`` lines.
> > +
> > +#. The responsible custodian
> > +
> > +   #. inspects this patch, especially for:
> 
> This should not be a bullet point.
> 
> > +
> > +   #. :doc:`codingstyle`
> > +
> > +   #. Basic logic:
> > +
> > +      * The patch fixes a real problem.
> > +
> > +      * The patch does not introduce new problems, especially it does not break
> > +        other boards or architectures
> > +
> > +   #. U-Boot Philosophy
> > +
> > +   #. Applies cleanly to the source tree
> > +
> > +   #. passes a ``MAKEALL`` compile test without creating new warnings
> > +
> > +#. Notes:
> > +
> > +  #. In some cases more than one custodian may be affected or feel responsible.
> > +     To avoid duplicated efforts, the custodian who starts processing the
> > +     patch should send a short ACK to the mailing list.
> > +
> > +  #. We should create some tool to automatically do this.
> > +
> > +  #. This is well documented in :doc:`designprinciples`.
> > +
> > +  #. The custodian decides himself how recent the code must be.  It is
> > +     acceptable to request patches against the last officially released
> > +     version of U-Boot or newer.  Of course a custodian can also accept
> > +     patches against older code.
> 
> This paragraph is unclear. How about:
> 
> Patches should be based on the git HEAD. If merge conflicts arise, the
> custodian decides to either rebase the patch himself or to request the
> submitter for a rebased patch.
> 
> > +
> > +  #. Commits should show original author in the ``author`` field and include all
> > +      sign off/ack lines.
> 
> Sign-off, Acked-by, Reviewed-by lines.

Please comment on the later patch where I re-write this section a good
deal.  To repeat, I do not want to make significant changes to these
documents in the same commit that imports them from the wiki.
diff mbox series

Patch

diff --git a/doc/develop/index.rst b/doc/develop/index.rst
index c0f4f0ba413a..eab00a55382a 100644
--- a/doc/develop/index.rst
+++ b/doc/develop/index.rst
@@ -11,6 +11,7 @@  General
 
    codingstyle
    designprinciples
+   process
 
 Implementation
 --------------
diff --git a/doc/develop/process.rst b/doc/develop/process.rst
new file mode 100644
index 000000000000..534da4a2a704
--- /dev/null
+++ b/doc/develop/process.rst
@@ -0,0 +1,200 @@ 
+.. SPDX-License-Identifier: GPL-2.0+:
+
+U-Boot Development Process
+==========================
+
+Management Summary
+------------------
+
+* Development happens in Release Cycles of 3 months.
+
+* The first 2 weeks are called Merge Window, which is followed by a
+  Stabilization Period.
+
+* Patches with new code get only accepted while the Merge Window is open.
+
+* A patch that is generally in good shape and that was submitted while the
+  Merge Window was open is eligible to go into the upcoming release, even if
+  changes and resubmits are needed.
+
+* During the Stabilization Period, only patches that contain bug fixes get
+  applied.
+
+Phases of the Development Process
+---------------------------------
+
+U-Boot development takes place in `Release Cycles
+<https://www.denx.de/wiki/U-Boot/ReleaseCycle>`_.  A Release Cycle lasts
+normally for three months.
+
+The first two weeks of each Release Cycle are called *Merge Window*.
+
+It is followed by a *Stabilization Period*.
+
+The end of a Release Cycle is marked by the release of a new U-Boot version.
+
+Merge Window
+------------
+
+The Merge Window is the period when new patches get submitted
+(and hopefully accepted) for inclusion into U-Boot mainline.
+
+This is the only time when new code (like support for new processors or new
+boards, or other new features or reorganization of code) is accepted.
+
+Twilight Time
+-------------
+
+Usually patches do not get accepted as they are - the peer review that takes
+place will usually require changes and resubmits of the patches before they
+are considered to be ripe for inclusion into mainline.
+
+Also, the review often happens not immediately after a patch was submitted,
+but only when somebody (usually the responsible custodian) finds time to do
+this.
+
+In the result, the final version of such patches gets submitted after the
+merge window has been closed.
+
+It is current practice in U-Boot that such patches are eligible to go into the
+upcoming release.
+
+In the result, the release of the ``"-rc1"`` version does not immediately follow
+the closing of the Merge Window.
+
+Stabilization Period
+--------------------
+
+During the Stabilization Period only patches containing bug fixes get
+applied.
+
+Corner Cases
+------------
+
+Sometimes it is not clear if a patch contains a bug fix or not.
+For example, changes that remove dead code, unused macros etc. or
+that contain Coding Style fixes are not strict bug fixes.
+
+In such situations it is up to the responsible custodian to decide if he
+applies such patches even when the Merge Window is closed.
+
+Exception: at the end of the Stabilization Period only strict bug
+fixes my be applied.
+
+Sometimes patches miss the the Merge Window slightly - say by few
+hours or even a day. Patch acceptance is not as critical as a
+financial transaction, or such. So if there is such a slight delay,
+the custodian is free to turn a blind eye and accept it anyway. The
+idea of the development process is to make it foreseeable,
+but not to slow down development.
+
+It makes more sense if an engineer spends another day on testing and
+cleanup and submits the patch a couple of hours late, instead of
+submitting a green patch which will waste efforts from several people
+during several rounds of review and reposts.
+
+Differences to the Linux Development Process
+--------------------------------------------
+
+* In Linux, top-level maintainers will collect patches in their trees and send
+  pull requests to Linus as soon as the merge window opens.
+  So far, most U-Boot custodians do not work like that; they send pull requests
+  only at (or even after) the end of the merge window.
+
+* In Linux, the closing of the merge window is marked by the release of the
+  next ``"-rc1"``
+  In U-Boot, ``"-rc1"`` will only be released after all (or at least most of
+  the) patches that were submitted during the merge window have been applied.
+
+Custodians
+----------
+
+The Custodians take responsibility for some area of the U-Boot code.  The
+in-tree ``MAINTAINERS`` files list who is reponsible for which areas.
+
+It is their responsibility to pick up patches from the mailing list
+that fall into their responsibility, and to process these.
+
+A very important responsibility of each custodian is to provide
+feedback to the submitter of a patch about what is going on: if the
+patch was accepted, or if it was rejected (which exact list of
+reasons), if it needs to be reworked (with respective review
+comments). Even a "I have no time now, will look into it later"
+message is better than nothing. Also, if there are remarks to a
+patch, these should leave no doubt if they were just comments and the
+patch will be accepted anyway, or if the patch should be
+reworked/resubmitted, or if it was rejected.
+
+Work flow of a Custodian
+------------------------
+
+The normal flow of work in the U-Boot development process will look
+like this:
+
+#. A developer submits a patch via e-mail to the u-boot-users mailing list.
+   U-Boot has adopted the `Linux kernel signoff policy <https://groups.google.com/g/fa.linux.kernel/c/TLJIJVA-I6o?pli=1>`_, so the submitter must
+   include a ``Signed-off-by:`` line.
+
+#. Everybody who can is invited to review and test the changes.  Reviews should
+   reply on the mailing list with ``Acked-by`` lines.
+
+#. The responsible custodian
+
+   #. inspects this patch, especially for:
+
+   #. :doc:`codingstyle`
+
+   #. Basic logic:
+
+      * The patch fixes a real problem.
+
+      * The patch does not introduce new problems, especially it does not break
+        other boards or architectures
+
+   #. U-Boot Philosophy
+
+   #. Applies cleanly to the source tree
+
+   #. passes a ``MAKEALL`` compile test without creating new warnings
+
+#. Notes:
+
+  #. In some cases more than one custodian may be affected or feel responsible.
+     To avoid duplicated efforts, the custodian who starts processing the
+     patch should send a short ACK to the mailing list.
+
+  #. We should create some tool to automatically do this.
+
+  #. This is well documented in :doc:`designprinciples`.
+
+  #. The custodian decides himself how recent the code must be.  It is
+     acceptable to request patches against the last officially released
+     version of U-Boot or newer.  Of course a custodian can also accept
+     patches against older code.
+
+  #. Commits should show original author in the ``author`` field and include all
+      sign off/ack lines.
+
+#. The custodian decides to accept or to reject the patch.
+
+#. If accepted, the custodian adds the patch to his public git repository and
+   notifies the mailing list. This note should include:
+
+   * a short description of the changes
+
+   * the list of the affected boards / architectures etc.
+
+   * suggested tests
+
+   Although the custodian is supposed to perform his own tests
+   it is a well-known and accepted fact that he needs help from
+   other developers who - for example - have access to the required
+   hardware or tool chains.
+   The custodian request help for tests and feedback from
+   specific maintainers and U-Boot users.
+
+#. Once tests are passed, some agreed time limit expires, the custodian
+   requests that the changes in his public git repository be merged into the
+   main tree. If necessary, the custodian may have to adapt his changes to
+   allow for a clean merge.
+   Todo: define a reasonable time limit. 3 weeks?