From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: redhat.com, ip: 209.132.183.28, mailfrom: lersek@redhat.com) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by groups.io with SMTP; Tue, 23 Apr 2019 11:22:46 -0700 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 175AB6698E; Tue, 23 Apr 2019 18:22:46 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-125-214.rdu2.redhat.com [10.10.125.214]) by smtp.corp.redhat.com (Postfix) with ESMTP id 68BD1646A5; Tue, 23 Apr 2019 18:22:45 +0000 (UTC) Subject: Re: [edk2-devel] TianoCore Community Design Meeting Minutes To: devel@edk2.groups.io References: <734D49CCEBEEF84792F5B80ED585239D5C0F67BB@SHSMSX104.ccr.corp.intel.com> From: "Laszlo Ersek" Cc: ray.ni@intel.com Message-ID: <865f4141-9a58-ea06-86fb-076ceb7f7376@redhat.com> Date: Tue, 23 Apr 2019 20:22:39 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <734D49CCEBEEF84792F5B80ED585239D5C0F67BB@SHSMSX104.ccr.corp.intel.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Tue, 23 Apr 2019 18:22:46 +0000 (UTC) Content-Type: text/plain; charset=windows-1252 Content-Language: en-US Content-Transfer-Encoding: 7bit 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://edk2.groups.io/g/devel/files/Designs/2019/0418/2019-04-18%20Microsoft%20-%20Build%20Tools%20-%20Design%20Review%20.pdf 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