Hello,

We left off with the 3rd draft of the edk2-staging proposal with some really 
good feedback.  The consistent feedback was to keep any process here simple 
and to use features already available from github where it makes sense to do so.

The main purpose of the edk2-staging repo is to provide an area where multiple
developers can collaborate on a complex feature that is not yet ready for 
integration into edk2/master.  There is no requirement to use edk2-staging.
Developers are welcome us use their own github forks of edk2 to develop a new
feature and discuss it with the edk2 community.  If using one specific 
developer's 
github fork of edk2 becomes cumbersome to manage when multiple developers are
involved, or the ownership of a feature is moving between developers, then 
a repo such as edk2-staging that is accessible by all edk2 maintainers may be a 
viable option to consider.

With this in mind, I would like to propose that edk2-staging simply be a fork
of edk2 and any maintainer can choose to create a feature branch in edk2-staging
for the purposes of collaboration on that feature.

The active feature branches in edk2-staging may be periodically reviewed to make
sure the feature branches there are under active development and to remove 
feature
branches that have been abandoned.

Mixed in the feedback on edk2-staging were requests to support use of pull 
requests.
This is an important topic that is also being evaluated, and will be discussed 
in
separate RFC email discussions.

Please review the revised proposal below that removes requirements for 
approvals to
create/update/remove feature branches in edk2-staging.

<proposal>

Problem statement
=================
Need place on tianocore.org where new features that are not ready for product 
integration can be checked in for evaluation by the EDK II community prior to 
adding to the edk2 trunk.  This serves several purposes:

* Encourage source code to be shared earlier in the development process
* Allow source code to be shared that does not yet meet all edk2 required 
quality criteria
* Allow source code to be shared so the EDK II community can help finish and 
validate new features
* Provide a location to hold new features until they are deemed ready for 
product integration
* Provide a location to hold new features until there is a natural point in 
edk2 release cycle to fully validate the new feature.
* Not intended to be used for bug fixes.
* Not intended to be used for small, simple, or low risk features.

Proposal
========
1) Create a new repo called edk2-staging
        a) edk2-staging is a fork of edk2
        b) edk2-staging/master tracks edk2/master

2) edk2-staging discussions can use the existing edk2-devel mailing list for 
design/patch/test.
        Use the following style for discussion of a specific feature branch in 
edk2-staging repo.

        [staging/branch]: Subject

3) All commits to edk2-staging must follow same edk2 rules (e.g. Tiano 
Contributor's Agreement)

4) Process to add a new feature to edk2-staging
        a) Maintainer sends patch email to edk2-devel mailing list announcing 
the creation of a new 
        feature branch in edk2-staging with Readme.MD.  Readme.MD is in root of 
feature branch 
        with summary, owners, timeline, links to related materials.
        b) Maintainer creates feature branch in edk2-staging
        c) Maintainer is responsible for making sure feature is frequently 
synced to edk2/master

     NOTE: Feature branch may initially use a stable edk2 tag.  As feature 
stabilizes, 
           syncs to edk2/master can begin.

5) Process to update sources in feature branch
        a) Commit message subject format:

                [staging/branch PATCH]: Package/Module: Subject

        b) Directly commit changes to feature branch or if community review is 
desired,
        then use edk2-devel review process.

        NOTE: win32 binaries are not automatically generated if a feature 
branch includes BaseTools source changes.

6) Process to promote an edk2-staging branch to edk2 trunk
        a) Use edk2 patch review/commit process on edk2-devel mailing list.
        The specific git actions used to add the feature to edk2 is at the 
discretion 
        of the maintainer(s) doing the merge.  A merge commit must always 
contain the final
        'Reviewed-by:' tags.
        b) Remove feature branch from edk2-staging and archive at 
https://github.com/tianocore/edk2-archive.

7) Process to remove an edk2-staging branch
        a) Stewards may periodically review of feature branches in edk2-staging 
(once a quarter?)
        b) If no activity for extended period of time and feature is no longer 
deemed a candidate 
        for edk2 then stewards send email to edk2-devel to request deletion of 
feature branch.  
        c) If no objections from EDK II community, then feature branch is 
deleted and archived at
        https://github.com/tianocore/edk2-archive.

8) How to evaluate a feature in edk2-staging
        a) Clone edk2
        b) Create local branch with optional platform packages
        c) Build platform in local branch and verify it is stable
        d) Clone edk2-staging/[branch name]
        e) Create local branch with optional platform packages
        f) Build platform in local branch and evaluate new feature

</proposal>











_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to