public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Brian J. Johnson" <brian.johnson@hpe.com>
To: devel@edk2.groups.io, lersek@redhat.com
Cc: ray.ni@intel.com
Subject: Re: [edk2-devel] TianoCore Community Design Meeting Minutes
Date: Tue, 23 Apr 2019 15:37:16 -0500	[thread overview]
Message-ID: <70d2f499-bc28-058a-8675-069beee5835e@hpe.com> (raw)
In-Reply-To: <865f4141-9a58-ea06-86fb-076ceb7f7376@redhat.com>

On 4/23/19 1:22 PM, Laszlo Ersek wrote:
> On 04/19/19 07:55, Ni, Ray wrote:
>> Hi everyone,
>>
>> In the first design meeting, Matthew and Sean from Microsoft presented the Mu tools.
>>
>> Below are some notes Mike and I captured from the meeting.
>>
>> Please reply to this mail for any questions and comments.
>>
>>
>>
>> Matthew Carlson / Sean Brogan - Microsoft - Project Mu Tools https://urldefense.proofpoint.com/v2/url?u=https-3A__edk2.groups.io_g_devel_files_Designs_2019_0418_2019-2D04-2D18-2520Microsoft-2520-2D-2520Build-2520Tools-2520-2D-2520Design-2520Review-2520.pdf&d=DwIC-g&c=C5b8zRQO1miGmBeVZ2LFWg&r=joEypYTP_0CJDmGFXzPM2s0mxEmiZkE9j8XY2t0muB0&m=JrIFm-OW7EUMJO_bZcr5RkYsyHrao3YmmSYnCOCMAAg&s=f18bByZUCGrcf2VKMVUAoPNNBz2TKQFLJw1BNphrDc0&e=
> 
> I've checked the slides; I'd like to comment on / ask about one
> particular topic. The following three items relate to that topic:
> 
> (1):
> 
>> Background
>>
>> [...]
>>
>> - Splitting the code: A platform only needs to see the code the platform uses to build.
> 
> (2):
> 
>> Build a platform through PlatformBuild.py
>>
>> - Starts with ~1% of platform code
>>
>> - Dependencies resolving phase pulls additional platform code
>>
>>     * Multiple GIT repos are needed by platform. The dep resolving phase simplifies the code setup. "setup" phase is isolated and can be skipped or replaced with other similar tools.
> 
> (3): slide 25 / 34:
> 
>> How do you discover what repos you need?
>> Platforms define what they need to build and SDE finds it
> 
> and "SDE" is explained earlier on slide 22 / 34, "Self Describing
> Environment":
> 
>> Verifies dependencies declared thru ext_deps and updates as needed
> 
> 
> While I agree that a platform need not "see" more code than it requires
> for being built, the platform is also not *hurt* by seeing more than it
> strictly requires.
> 
> On the other hand, under a split repos approach, how are
> inter-dependencies (between sub-repos) tracked, and navigated? Assume
> there is a regression (encountered in platform testing) -- how do you
> narrow down the issue to a specific commit of a specific sub-repo? And,
> how do you automate said narrowing-down?
> 
> In a common git repository / with a common git history, the
> inter-dependencies are tracked implicitly, and they aren't hard to
> navigate, manually or automatically. Such navigation doesn't need
> external tooling; it's all built into git (for example into "git
> checkout" and "git bisect").
> 
> git supports submodules internally, but that feature exists to mirror
> the boundaries that already exist between developer communities. For
> example, OpenSSL's developer community and edk2's developer community,
> are mostly distinct. Their workflows differ, their release criteria
> differ, their testing expectations differ, so it makes sense for edk2 to
> consume OpenSSL via a submodule.
> 
> But, I don't think the same applies to core modules in e.g. MdeModulePkg
> and UefiCpuPkg, vs. *open* firmware platforms. Those development
> communities overlap (or should overlap) to a good extent; we shouldn't
> fragment them by splitting repos. (Separate subsystem repos and mailing
> lists are fine as long as everything is git-merged ultimately into the
> central repo.)
> 
> Note: I'm not arguing what Project Mu should do for its own sake. I'm
> arguing against adopting some Project Mu workflow bits for upstream
> edk2, at the level I currently understand those workflow bits. My
> understanding of Project Mu could be very lacking. (I missed the design
> meeting due to an unresolvable, permanent conflict.) Slide 12/34 says,
> "Next Steps: Propose RFC to TianoCore community: Create 3 git
> repositories". I hope I can check that out in more detail.
> 
> Thanks,
> Laszlo

I noticed similar things, and agree with Laszlo's points.  My group has 
attempted to develop a complex edk2-based project using multiple repos 
and some external tooling in the past, and found it completely 
unworkable.  Perhaps Project Mu's tooling is better than ours was.  But 
for modules which are developed together by the same group of people, 
keeping all the code in a single git repo lets you make the best use of 
git, and removes a lot of room for errors when committing code across 
multiple modules.
-- 
Brian J. Johnson
Enterprise X86 Lab

Hewlett Packard Enterprise


  reply	other threads:[~2019-04-23 20:37 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-19  5:55 TianoCore Community Design Meeting Minutes Ni, Ray
2019-04-23 18:22 ` [edk2-devel] " Laszlo Ersek
2019-04-23 20:37   ` Brian J. Johnson [this message]
2019-05-02 19:33     ` Sean
2019-05-03  8:45       ` Laszlo Ersek
2019-05-03 21:41       ` Brian J. Johnson
2019-05-06 16:06         ` Laszlo Ersek
2019-05-07 17:23           ` Brian J. Johnson

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=70d2f499-bc28-058a-8675-069beee5835e@hpe.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