Improving the Patch System
--------------------------
We would like to streamline the workflow of our patches making it easier
for current and future developers to contribute while discouraging
careless code submissions. We will review several possibilities
including Fabricator, Github, Gitlab, and Gerrit. We will review these
solutions by examining case studies as well as community aided research.
Key goals that we wish to achieve:
1. Offline search of both patches AND comments/conversations
2. Automation of tasks (e.g. lint, merge-fail detection)
3. Automatic notifications (e.g. patch reject, comment added, patch
pushed to master)
It was made clear that these goals should be implicit in the software,
not something that we need to script or maintain. Rebecca Cran
volunteered to help with Fabricator evaluation (thank you), and I will
be heading up research on the remaining (more volunteers welcome :) ).
Standard C Types
----------------
The only benefit we see to adding Standard C Types might be when we pull
in modules like LZMA or FDT. We see no reason not to add them, but we
are hesitant to remove our current type system as it works well and the
community is comfortable using them. We should have a code standard in
place to require the use of one or the other, but not both.
Using Submodules
----------------
Assuming our deviations are not large we should follow a pattern of
using submodules rather than pulling in code directly.
Project Mu
----------
https://microsoft.github.io/mu/
Project Mu is a way of laying out TianoCore into layers, submodules, and
repos, allowing multiple architectures to share the same core,
facilitating efficiency and speeding time to market.
https://github.com/Microsoft/mu_basecore
Basecore is the minimum package set that someone would need to build a
UEFI product.
https://github.com/Microsoft/mu_plus
Mu Plus is an example of optional features, specifically for surface,
building upon the basecore layer. The Mu Plus repo includes features
like DSCI (management of remote UEFI settings, targeted at client
devices). Other groups might add similar layers to enable different
features.
In the documentation, please see the "MinPlatform Example" and the
"Surface Example"
To facilitate creating a build environment, they have created a wrapper
around the current build system.
Liming mentioned that there is currently an area for wrappers in
BaseTools/Scripts:
https://github.com/tianocore/edk2/tree/master/BaseTools/Scripts
What is the difference between mu_basecore and edk2 master branch?
--addition of large features not yet upstreamed (in progress)
--small changes that need resources to upstream (time constraint)
--rearranging things into different repos to facilitate layering. See:
https://microsoft.github.io/mu/WhatAndWhy/layout/
Community TODO List
-------------------
Jeremiah: please check to see if the Mu wrapper script is publicly
available.
Stephano: head up the review of patch systems and write up a report for
each detailing the pro's & con's, and collect community feedback.
Thank you all for your participation. I will be creating a survey to
determine the best day & time to meet, and will setup a recurring
meeting. As always, please feel free to contact me directly with
comments / questions.
Cheers,
Stephano
Stephano Cetola
TianoCore Community Manager
stephano.cet...@linux.intel.com
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel