Leif, Responses below.
Mike > -----Original Message----- > From: Leif Lindholm [mailto:[email protected]] > Sent: Monday, June 13, 2016 9:32 AM > To: Kinney, Michael D <[email protected]> > Cc: [email protected] > Subject: Re: [edk2] [RFC] EDK2 Platforms Proposal > > Ye gods - I've slipped replying to this by a month now. Very sorry > about that. Well, I think I've managed to crawl out of the hole I fell > into. > > So, I think the below sounds like it _could_ resolve most of my > concerns, with a few tweaks. Full disclosure: Personally, I would only > be actively interested in (3) and (4). > > I personally don't have a huge interest in (2), and I'm already doing > (4) for OpenPlatformPkg. So I'm happy to use the > edk2-platforms/<platform branch> approach for this. With the added > statement that (2) platform branches should always be based off a UDK > (or similar) version, and (4) platform branches should always track > edk2/master fairly closely. For this reason, it may be better to > separate them into different namespaces - maybe edk2-platforms/stable-* > and edk2-platforms/devel-*? Great suggestion on the branch naming. > (4) Platforms that have not rebased to edk2/master in a few (3?) > months should be considered abandoned and purged from the tree, but > potentially archived. > I agree. I think that is partially covered in item (7) in the original RFC proposal. I will add language that the branches that are expected to be synced with edk2/master and are not being synced often enough will be candidates for removal. > For (1) and (3) I think two strict rules would help maintain code > quality: > a) (1) is always a subset of (3), but not necessarily a strict subset. > b) Patches can only go into (1) after they have gone into (3) > Does this sound reasonable? Platforms on category (1) are in edk2/master, so they are always synced with edk2/master and any core package changes required for these platforms are done directly in edk2/master. No need to go through the edk2-platforms repo. Are you suggesting that platforms in category (1) are in both edk2/master and an edk2-platforms branch? Can you explain how this helps maintain code quality? > > If these two rules are strictly followed, I think the risk of > incompatible core changes would be minimised, and compatible changes > would be fairly easy for the maintainers to guide back towards > edk2/master. > > Finally, and I have left this out of the discussion until now: > The problem with binary-only components. > Would it be acceptable to people to have binary-only components in > these edk2-platforms branches? > If not, would it be more acceptable to have one or more branches in a > separate repository, and hold platforms that are somewhat incomplete > in edk2-platforms - in order to get access to the parts of these > platform ports that _are_ open? For binary components, I recommend using the edk2-non-osi repo. The Quark platform has a dependency on a binary file that is stored there now. > > Regards, > > Leif > > On Tue, May 10, 2016 at 03:52:10PM +0000, Kinney, Michael D wrote: > > Leif, > > > > You raise some very good concerns. I do not think edk2-platforms is > > intended to solve all of these, and I agree that a branch per > > platform can make some things much worse, especially if there are > > many different core overrides in platform branches. > > > > We need to consider different types of platform ports and figure out the > > right > > landing zone for each. > > > > 1) Platforms required to validate a core feature in edk2/master > > 2) Platforms that require a validated/stable release of edk2 > > 3) Platforms that are always synced with edk2/master, but do not > > improve edk2 core feature coverage. > > 4) Platforms that are under active initial porting efforts, have > > stability issues, or code quality issues. > > > > edk2/master works for (1) > > edk2-platforms/<platform branch> works for (2) and (4) > > As platforms in category (4) mature they migrate into (1), (2), or (3) > > > > We do not have a landing zone for (3). Maybe we can have a special > > branch in edk2-platforms that contains all the platforms in this > > category, so we can make sure things like common overrides and > > features common to many different platforms can be easily > > identified. This special branch can be auto synced to edk2/master > > so incompatibilities introduced by platform changes or edk2/master > > changes can be quickly identified. > > > > I am looking into a different proposal to add some tree organization > > to edk2/master. Part of that includes a landing zone for vendor > > specific UEFI/PI device drivers that can be used by many different > > platforms. > > > > Let's continue to refine the set of proposals here to address all of > > the important issues you have raised. > > > > Best regards, > > > > Mike > > > > > -----Original Message----- > > > From: Leif Lindholm [mailto:[email protected]] > > > Sent: Tuesday, May 10, 2016 3:06 AM > > > To: Kinney, Michael D <[email protected]> > > > Cc: [email protected] > > > Subject: Re: [edk2] [RFC] EDK2 Platforms Proposal > > > > > > Hi Mike, > > > > > > Apologies for delay in responding, this was a topic I wanted to leave > > > some time to think about. > > > > > > On Tue, May 03, 2016 at 04:30:36PM +0000, Kinney, Michael D wrote: > > > > Similar to edk2-staging, we also have a need to manage platforms > > > > that have been ported to edk2. Jordan has created a repository > > > > called edk2-platforms and has created a branch for the > > > > minnowboard-max that uses a validated release of the UDK 2015 for > > > > the dependent packages: > > > > > > > > https://github.com/tianocore/edk2-platforms > > > > > > > > https://github.com/tianocore/edk2-platforms/tree/minnowboard-max-udk2015 > > > > > > > > Instead of creating a branch per feature in edk2-staging, the > > > > proposal is to create a branch per platform in edk2-platforms. The > > > > maintainer(s) that create and support a platform branch can decide > > > > if the platform is synced to edk2/master for dependent packages, or > > > > uses a stable release of the edk2 for dependent packages. > > > > > > > > This proposal provides an area for platform development so we can > > > > minimize the number of platforms that are included in edk2/master. > > > > It is important to keep some platforms in edk2/master so we can use > > > > those platforms to validate features in non-platform packages in > > > > edk2/master. If a new platform does not add feature coverage to > > > > edk2/master, then a new edk2-platforms branch would be recommended. > > > > > > > > Please review the proposal below for edk2-platforms. > > > > > > > > If this proposal is accepted, then a review of the platform in > > > > edk2/master can Be done to see if any of them should be moved to > > > > branches in edk2-platforms. > > > > > > First of all, let me reiterate - I very much want to see more public > > > platform code. To the extent this helps that happen, I am a strong > > > supporter. > > > > > > However, this proposal does not really address the issues I've been > > > pursuing, and am currently staging in my OpenPlatformPkg tree: > > > - The ability to see when a core change breaks some/all platform > > > ports. > > > - The ability to easily spot common code that should be turned into > > > core libraries. > > > - The ability to easily spot near-identical local overrides to > > > common libraries that should turn into options in an existing core > > > library. > > > - The ability to share drivers for common components between different > > > platforms, benefitting from feature additions and bugfixes. > > > > > > It may not be intending to do this, which is fine, but I'd like to > > > share a few warnings - seen both in Linaro's Linux kernel work and in > > > Linaro's UEFI work when the "platform feature branch" approach was > > > used (also try an Internet search for "vendor kernels"): > > > - Keeping each platform port in a separate branch will inevitably lead > > > to incompatible changes to core components. > > > - Some of these changes will be fundamentally incompatible with > > > other platforms, because they were made in complete isolation from > > > those other platforms. > > > - Mandating that all ports are based on a UDK version reduces the > > > scope of these incompatibilities, but ports will inevitably want > > > access to newer features that what is provided in UDK, so will > > > cherry-pick ... and then some will change that. > > > - But EDK2 has reasonably high churn on internal interfaces, and > > > taking the step from one UDK to the next could mean a > > > substantial amount of work at once, instead of progressively > > > adjusting to core changes. (Acknowledging that this may well be > > > preferable for some.) > > > - Preventing this would cause higher maintainer overhead than > > > letting the platforms into the main tree. > > > > > > So I guess my main question is - should this be seen as a complement > > > to what I am looking for, or should I write an alternative proposal > > > trying to incorporate the use-cases this one covers as well as the > > > ones I am looking for? > > > > > > Regards, > > > > > > Leif > > > > > > > <proposal> > > > > > > > > > > > > > > > > Problem statement > > > > ================= > > > > Need place on tianocore.org where platforms can be maintained by the > > > > EDK II > > > > community. This serves several purposes: > > > > > > > > * Encourage more platforms sources to be shared earlier in the > > > > development process > > > > * Allow platform sources to be shared that may not yet meet all edk2 > > > > required quality criteria > > > > * Allow platform source to be shared so the EDK II community may > > > > choose to help finish and validate > > > > * Allow more platforms to be used as part of the edk2 validation and > > > > release cycle. > > > > * Not intended to be used for bug fixes. > > > > > > > > > > > > Proposal > > > > ======== > > > > 1) Create a new repo called edk2-platforms > > > > > > > > a) edk2-platforms is a fork of edk2 > > > > > > > > b) edk2-platforms/master tracks edk2/master > > > > > > > > > > > > 2) edk2-platforms discussions can use the existing edk2-devel > > > > mailing list for design/patch/test. > > > > > > > > Use the following style for discussion of a platform branch in > > > > edk2-platforms repo. > > > > > > > > [platforms/branch]: Subject > > > > > > > > > > > > 3) All commits to edk2-platforms must follow same edk2 rules > > > > (e.g. Tiano Contributor's Agreement) > > > > > > > > > > > > 4) Process to add a new platform to edk2-platforms > > > > > > > > a) Maintainer sends patch email to edk2-devel mailing list > > > > announcing the creation of a new platform branch in > > > > edk2-platforms with Readme.MD. Readme.MD is in root of > > > > platform branch with summary, owners, status, build > > > > instructions, target update instructions, OS compatibility, > > > > known issues/limitations, links to related materials, and > > > > anything else a developer would need to use the platform > > > > branch. > > > > > > > > b) Maintainer creates platform branch in edk2-platforms > > > > > > > > c) Maintainer is responsible syncing platform to edk2/master or > > > > supported edk2 branch. > > > > > > > > > > > > 5) Process to update sources in feature branch > > > > > > > > a) Commit message subject format: > > > > > > > > [platforms/branch PATCH]: Package/Module: Subject > > > > > > > > b) Directly commit changes to platform branch or if community > > > > review is desired, then use edk2-devel review process. > > > > > > > > > > > > 7) Process to remove an edk2-platforms branch > > > > > > > > a) Stewards may periodically review of platform branches in > > > > edk2-platforms (once a quarter?) > > > > > > > > b) If no activity for extended period of time and platform is > > > > not being maintained and is no longer functional then > > > > stewards send email to edk2-devel to request deletion of > > > > platform branch. > > > > > > > > c) If no objections from EDK II community, then platform branch > > > > is deleted and archived at > > > > > > > > https://github.com/tianocore/edk2-archive. > > > > > > > > > > > > 8) How to evaluate a platform in edk2-platforms > > > > > > > > a) Clone edk2-platforms/[branch name] > > > > > > > > b) Following instructions in Readme.MD to build firmware and > > > > update target platform > > > > > > > > > > > > </proposal> > > > > _______________________________________________ > > > > edk2-devel mailing list > > > > [email protected] > > > > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

