From: "Michael D Kinney" <michael.d.kinney@intel.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
"lersek@redhat.com" <lersek@redhat.com>,
"rfc@edk2.groups.io" <rfc@edk2.groups.io>,
"leif@nuviainc.com" <leif@nuviainc.com>,
"Kinney, Michael D" <michael.d.kinney@intel.com>
Subject: Re: [edk2-devel] [edk2-rfc] [RFC] code-first process for UEFI-forum specifications
Date: Tue, 4 Feb 2020 19:23:07 +0000 [thread overview]
Message-ID: <E92EE9817A31E24EB0585FDF735412F5B9E8643F@ORSMSX113.amr.corp.intel.com> (raw)
In-Reply-To: <bc9dac33-1f60-1912-09be-78782a576d0c@redhat.com>
Leif,
A few comments included below.
Thanks,
Mike
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On
> Behalf Of Laszlo Ersek
> Sent: Monday, January 20, 2020 10:42 AM
> To: rfc@edk2.groups.io; leif@nuviainc.com;
> devel@edk2.groups.io
> Subject: Re: [edk2-devel] [edk2-rfc] [RFC] code-first
> process for UEFI-forum specifications
>
> On 01/20/20 17:58, Leif Lindholm wrote:
> > This is a proposal for a process by which new
> features can be added to UEFI
> > forum specifications after first having been designed
> and prototyped in the
> > open.
> >
> > This process lets changes and the development of new
> features happen in the
> > open, without violating the UEFI forum bylaws which
> prevent publication of
> > code for in-draft features/changes.
> >
> > The process does not in fact change the UEFI bylaws -
> the change is that the
> > development (of both specification and code) happens
> in the open. The resulting
> > specification update is then submitted to the
> appropriate working goup as an
> > Engineering Change Request (ECR), and voted on. For
> the UEFI Forum, this is a
> > change in workflow, not a change in process.
> >
> > ECRs are tracked in a UEFI Forum Mantis instance,
> access restricted to UEFI
> > Forum Members. TianoCore will enable this new process
> by providing areas on
> > https://bugzilla.tianocore.org/ to track both
> specification updates and
> > reference implementations and new repositories under
> > https://github.com/tianocore/ dedicated to hold "code
> first".
> >
> >
> > ## Bugzilla
> >
> > bugzilla.tianocore.oorg will have a product category
> each for
>
> s/oorg/org/
>
> > * ACPI Specification
> > * PI Specification
> > * UEFI Specification
> >
> > Each product category will have a separate components
> for
> > * Specification
> > * Reference implementation
> >
> >
> > ## Github
> > New repositories will be added for holding the text
> changes and the source code.
> >
> > Specification text changes will be held within the
> affected source repository.
>
> This seems to require that the specifications be
> available as something
> "patchable" (e.g. GitBook source code), and offered in
> some public git repo.
>
I recommend we use MarkDown. GitHub flavored MarkDown
may be a good choice so an ECR can be viewed from the
web view of GitHub. This also support text based patch
reviews of the ECR content.
> > (This one may break down where we have a
> specification change affecting multiple
> > specifications, but at that point we can track it
> with multiple BZ entries)
> >
> > Initially, edk2-spec-update will be created to hold
> the reference
> > implementations. Additional repositories for
> implementing reference features in
> > additional open source projects can be added in the
> future, as required.
I recommend using branches in the existing edk2-staging
repository for changes that only impact EDK II firmware
components/tools.
> >
> >
> > ## Intended workflow
> > The entity initiating a specifiation update raises a
> Bugzilla in the appropriate
> > area in bugzilla.tianocore.org. This entry contains
> the outline of the change,
> > and the full initial draft text is attached.
>
> How does this play together with *patches* for specs
> (see above)?
> Attaching patches to BZs is not good practice. Should
> we attach complete
> renderings of the patched (huge) specs?
>
> >
> > If multiple specification updates are interdependent,
> especially if between
> > different specifications, then multiple bugzilla
> entries should be created.
> > These bugzilla entries *must* be linked together with
> dependencies.
> >
> > After the BZs have been created, new branches should
> be created in the relevant
> > repositories for each bugzilla - the branch names
> should be BZ####, where ####
> > describes the bugzilla ID assigned, optionally
> followed by a '-' and something
> > more descriptive. If multipls bugzilla entries must
> coexist on a single branch,
>
> s/multipls/multiple/
>
> > one of them is designated the 'top-level', with
> dependencies properly tracked.
> > That BZ will be the one naming the branch.
> >
> >
> > ## Source code
> > In order to ensure draft code does not accidentally
> leak into production use,
> > and to signify when the changeover from draft to
> final happens, *all* new or
> > modified[1] identifiers need to be prefixed with the
> relevant BZ####.
> >
> > [1] Modified in a non-backwards-compatible way. If,
> for example, a statically
> > sized array is grown - this does not need to be
> prefixed. (Question: but a
> > tag in a comment?)
> >
It would be good to clarify when the BZ### prefix is required
and not required and to describe a few more use cases. Here
are a few. I am sure this list will be expanded when real
examples are implemented.
1) New/modified interfaces require prefix.
a) New structures. Only top level struct require a prefix. Fields and sub structures do not.
2) New public header file names need prefix (e.g. Bz0001MyNewProtocol.h)
3) New GUID global variables need a prefix (e.g. gBz0001MyNewProtocolGuid)
4) Adding a field, enum, or #define to existing interface require a prefix
5) Internal interfaces and implementation elements do not need a prefix.
> > The tagging must follow the coding style used by each
> affected codebase.
> > Examples:
> >
> > | Released in spec | Draft version in tree | Comment
> |
> > | --- | --- | ---
> |
> > | FunctionName | Bz1234FunctionName | EDK2
> |
> > | function_name | bz1234_function_name | Linux
> |
> > | HEADER_MACRO | BZ1234_HEADER_MACRO | EDK2,
> Linux |
> >
> > Alternative 1)
> > Variable prefixes indicating global scope ('g' or
> 'm') go before the BZ prefix.
> >
I prefer Alternative 1 to follow EDK II C Coding Standard.
> > Alternative 2)
> > Variable prefixes indicating global scope ('g' or
> 'm') go after the BZ prefix.
>
> Sounds good to me in general.
>
> I think we'll have to work out the nuances of the
> coding style in
> practice, while actually developing such additions. I
> can't name
> anything specific that's missing from the proposal, but
> I'm quite sure
> we'll find corner cases in practice.
>
> Thanks
> Laszlo
>
>
>
next prev parent reply other threads:[~2020-02-04 19:23 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-20 16:58 [RFC] code-first process for UEFI-forum specifications Leif Lindholm
2020-01-20 18:42 ` [edk2-rfc] " Laszlo Ersek
2020-02-04 19:23 ` Michael D Kinney [this message]
2020-02-14 15:29 ` Felix Polyudov
2020-03-11 15:52 ` [edk2-devel] " Samer El-Haj-Mahmoud
2020-03-11 16:02 ` Leif Lindholm
2020-03-11 16:31 ` Samer El-Haj-Mahmoud
2020-03-11 16:49 ` Doran, Mark
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E92EE9817A31E24EB0585FDF735412F5B9E8643F@ORSMSX113.amr.corp.intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox