Replies: 6 comments 31 replies
-
A few of the topics we could discuss. Please share your own ideas. If you are an active maintainer, what would you like to see? What would help improve quality and lower effort to maintain?
|
Beta Was this translation helpful? Give feedback.
-
As discussed on Dec 12th meeting, we will start enabling some of the feature packages first. If you own a feature package, then please enable your package and work to make it pass the CI. If you make changes to the CI files you can submit a PR to my branch. If you make changes to existing edk2-platforms files you can do that in edk2-platforms repo. Branch can be seen here: https://github.com/spbrogan/edk2-platforms/tree/enable_ci_v1 If you own a platform and want to enable CI please respond here and we can start to get that enabled. |
Beta Was this translation helpful? Give feedback.
-
Hi all sorry for the delay in response. @spbrogan Thank you for taking the time to get this started! Per your suggestions:
Agreed.
Yes please! That would be a wonderful.
I think there is too many opinions on what an immaculate repository layout looks like to really make a good call here. Some think that having 1 repo per SoC is too many. Some think that having a monorepo for the entirety of edk2 is too few. I think the right answer is probably some number in between those two. I could see edk2-platforms splitting into maybe 2-4 different repos... but 10+ repos would be a needless amount of abstraction. I don't think having a per-board repo with recursive submodules is the right idea. I'm in a position where I get to talk to many companies across the PC industry and the vast majority of them prefer a repository layout more akin to the Android Open Source Project (multiple top level independent repos). And I think that makes sense because in a lot of ways the ecosystem level considerations that we try to solve with edk2 and the TianoCore project are very similar to the ones seen by ASOP. Just like ASOP, we have a "core", then multiple 3rd party SoC/silicon vendors, and then multiple OEMs with multiple end-user designs. I think that style of enabling model naturally lends itself to an ASOP style repo layout and that is what we use here at Intel. Personally I'd recommend we table the discussion of splitting up edk2-platforms for now. I just don't see a clear path to consensus. Besides, just getting CI working on the existing edk2-platforms would be a huge improvement so lets not make perfect the enemy of good.
What kind of automations did you have in mind?
This is really something that we should have as higher priority for edk2-platforms. Right now it would be very hard to use edk2-platforms out-of-the-box and a big part of that is a complete lack of release engineering.
Agreed with @heatd here. Stuart is not something that I or most of my customers would use. The high level goals of stuart are all very admirable... the implementation however is absolutely terrible. And stuart is highly opinionated on doing platform development in a very specific way that does not match most users of edk2. Everyone that I have talked to outside of Microsoft (including several large PC manufacturers) has echoed a high level of distaste for stuart. @mhaeuser Per your discussion on package dependencies: There are some packages in edk2-platforms that I think are more "core" than "platform". MinPlatformPkg and AdvancedFeaturePkg for example. The biggest thing MinPlatformPkg does is provide an abstraction from the edk2 package hierarchy to prevent the constant moving of LibraryClass/Driver .infs from impacting code that depends on those modules. AdvancedFeaturePkg does a similar job of collecting all the modules required to enable any given advanced feature together so that *BoardPkg code doesn't need to change as advanced features have modules added/removed over time. |
Beta Was this translation helpful? Give feedback.
-
@mhaeuser - I don't think it is fair to say the BaseTools DSC/DEC/FDF file format is proprietary. All the tooling, documentation, and specifications for those file formats is open source. I think the words you are looking for are "unique" or perhaps "esoteric". This might be a case of English not being a first language 😄. @spbrogan, @mhaeuser, @heatd - So it seems like there is a lot of interest in point 3 so let's start there. First of all, it wasn't my intention to "shoot it down"; my comments are more based on my previous experience working with TianoCore. Whenever I personally try to drive changes like this it tends to be 3x more effort than it should be and I tend to get burned in the process. My comment was more along the lines of "It is really worth the effort to litigate?" Given that it seems all of you have a great level of interest in driving changes here, let's see what we can do to come with with a compromise. So it sounds like we are all agreed that monorepo isn't really great for TianoCore due to the high level of out-of-tree use, so at least for now I'm not going to think a whole lot about what that would look like. If someone wants to come up with a proposal there I would of coarse be happy to look at it. So what are some alternate repo structures that might make sense? Well I can think of 2 options that would probably work well: Option 1 - Add an edk2-boards repo (My preference)Change definition of edk2-platforms from "a dumpster for everything not core" to "common platform code". Here is how I think things would end up looking in this case (note that I'm not well versed with the architecture of the ARM platforms, so there might be some stuff that belongs in edk2-platforms that I'm missing here):
Option 2 - Add multiple ISA specific edk2-boards reposSimilar to Option 1, but with platforms broken out by ISA. This might be useful for CI because the compilers/toolchains tend to vary by ISA. The downside to this is added barriers to collaboration between different silicon companies on edk2 development. I see cross collaboration as a big positive for the TianoCore community so for that reason I don't like Option 2 as much as Option 1.
|
Beta Was this translation helpful? Give feedback.
-
We talked about requirements for a package to be unit tested. Can we make a list of those requirements? I have done most of the work to get all the Features/Intel packages building, but I want the checklist so I can call a package done and get it added to CI. I was thinking package builds with: And then I need a list of the existing CI tests that are expected to work, if someone knows that. Is there anything else? |
Beta Was this translation helpful? Give feedback.
-
A github action has been setup and is working for Core CI. Again, feedback is welcome and would be appreciated. PRs to enable more feature packages would be great. |
Beta Was this translation helpful? Give feedback.
-
The Tools and CI meeting (held every Monday at 4:30 Pacific time) is going to discuss changes to edk2-platforms to enable CI. To make this more practical there are going to be changes necessary to each platform and the repository. Most likely platforms without an active maintainer will need to be "archived".
If you have ideas and are willing to help, please use this discussion topic to communicate them. Next Monday (12/12) at the tools and ci meeting we will recap the thread and try to finalize a plan.
Thanks
Beta Was this translation helpful? Give feedback.
All reactions