<div dir="ltr">We've also found something like a minimal image useful in the early stages of bringing up OpenBMC on a new system.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Sep 21, 2020 at 7:04 PM Khetan, Sharad <<a href="mailto:sharad.khetan@intel.com">sharad.khetan@intel.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<br>
-----Original Message-----<br>
From: Ed Tanous <<a href="mailto:ed@tanous.net" target="_blank">ed@tanous.net</a>> <br>
Sent: Monday, September 21, 2020 8:06 AM<br>
To: Khetan, Sharad <<a href="mailto:sharad.khetan@intel.com" target="_blank">sharad.khetan@intel.com</a>><br>
Cc: Brad Bishop <<a href="mailto:bradleyb@fuzziesquirrel.com" target="_blank">bradleyb@fuzziesquirrel.com</a>>; OpenBMC Maillist <<a href="mailto:openbmc@lists.ozlabs.org" target="_blank">openbmc@lists.ozlabs.org</a>><br>
Subject: Re: interest in a minimal image recipe<br>
<br>
On Thu, Sep 17, 2020 at 3:22 PM Khetan, Sharad <<a href="mailto:sharad.khetan@intel.com" target="_blank">sharad.khetan@intel.com</a>> wrote:<br>
><br>
> Ed, welcome back .<br>
<br>
<br>
Thanks! Glad to be here.<br>
<br>
><br>
><br>
> -----Original Message-----<br>
> From: openbmc <br>
> <openbmc-bounces+sharad.khetan=<a href="mailto:intel.com@lists.ozlabs.org" target="_blank">intel.com@lists.ozlabs.org</a>> On Behalf <br>
> Of Ed Tanous<br>
> Sent: Thursday, September 17, 2020 1:57 PM<br>
> To: Brad Bishop <<a href="mailto:bradleyb@fuzziesquirrel.com" target="_blank">bradleyb@fuzziesquirrel.com</a>><br>
> Cc: OpenBMC Maillist <<a href="mailto:openbmc@lists.ozlabs.org" target="_blank">openbmc@lists.ozlabs.org</a>><br>
> Subject: Re: interest in a minimal image recipe<br>
><br>
> On Tue, Sep 15, 2020 at 1:31 PM Brad Bishop <<a href="mailto:bradleyb@fuzziesquirrel.com" target="_blank">bradleyb@fuzziesquirrel.com</a>> wrote:<br>
> ><br>
> > I've heard a handful of times that meta-phosphor users often have to <br>
> > remove the latest feature added by default to obmc-phosphor-image.<br>
> ><br>
> > I have an RFC for an empty image that these users could bbappend and <br>
> > opt-in to specific image features instead of having to repeatedly <br>
> > opt-out.<br>
> ><br>
> > If you like the opt-in approach, please drop a +1 and/or review my patch:<br>
> ><br>
> > <a href="https://gerrit.openbmc-project.xyz/c/openbmc/meta-phosphor/+/36516" rel="noreferrer" target="_blank">https://gerrit.openbmc-project.xyz/c/openbmc/meta-phosphor/+/36516</a><br>
> ><br>
> > I bring this up now because I, and others have been adding new image <br>
> > features to obmc-phosphor-image (e.g. turned on by default), and I <br>
> > would like to start a discussion about what it means for an <br>
> > application to be in the OpenBMC github organization. I would <br>
> > propose that it means it is enabled and turned on by default in obmc-phosphor-image.<br>
> ><br>
> > Looking forward to your thoughts.<br>
> ><br>
> > -brad<br>
><br>
> As a general description, this sounds great, but as always the devil is in the details. The biggest obstacle to this I see is that we'd need a policy and design around supporting mix-and-match on features, which I don't think we really have today. Today, most features don't mix and match well, one example of this being entity-manager requiring intel-ipmi-oem. Thus far for that simple example, nobody has stepped up to make it a generic yocto feature and separate out the code, despite pretty widespread adoption. I think the idea that we're suddenly going to just start doing a better job of feature separation because of a single patch is a little naive, and I'd really like to see the project make steps forward toward that before we create a minimal image.<br>
><br>
> If we want to do this going forward, my personal opinion is that:<br>
> 1. Someone needs to go figure out an example for one non-trival, cross application feature with multiple options, and get yocto sorted such that said "feature" enables the right component options. Entity manager might be a good one, phosphor-webui vs webui-vue might be another good one (I'm looking into this currently), or individual Redfish resources in bmcweb might be another. There are a bunch of examples of this you could start with.<br>
> 2. Document a policy around what it means to be a "feature" including some relevant examples. Is Redfish a feature? Is IPMI a feature? or are those just interfaces to access other features? Do we need a hierarchy of features? When/where should we use DBus to determine feature enablement, and when should it be a compile option? We've been very inconsistent about these questions in the past, and it's part of the reason that adding "features" properly is hard.<br>
> 3. Someone needs to go through the user-facing clients (phosphor-ipmi, bmcweb, ect) as well as the recipes, and make sure command handlers are organized in such a way that they're enabled or disabled by feature, and we can successfully enable one feature at a time. This will likely expose some interesting dependencies (like how IPMI commands have to be enabled/disabled by library) that we'll likely need to tackle.<br>
><br>
>> If the above tasks just fall onto the subsystem maintainers, who now have to field the "I enabled X on my minimal build and it doesn't work" type bugs, that seems like a non-starter, and likely to cause more confusion than the current status quo. If someone or group of someones is willing to go do the work, I think it'd be a great benefit to the project, and something that would help a lot of people. I'm happy to pitch in as well where I'm able.<br>
><br>
<br>
>> All the issues (and considerations to resolve), you bring up are great. It will need policies, definitions, and categorizations as you point out. I think it will take quite some time to get there and its unlikely that we will achieve perfection. So we may have to start with basic, add a bunch of things to make it a minimum BMC (I think the first step will be agree what those minimum feature set is), and then be able to add from there. It may not be very granular (as there will be interdependencies), but even if we have a few such configurations/combination of feature it will be useful for someone to start with. I realize this doesn’t solve the problem fully, but I think it's much less effort and hence easier to start with.<br>
><br>
><br>
<br>
>I like to think that's what I proposed, starting small, with 1 example of how to do it "right", then building on it. I'm not looking for perfection, but I'm looking for commitment that we'll continue to push this forward in places where we haven't been that successful in the past. If not, I think it has the potential to confuse what is already a complex and bifurcated build environment even further.<br>
<br>
>One minor thing to clarify: I had imagined Brads proposal of a "minimum" BMC would have essentially nothing added, and would just be a kernel that boots, with no interfaces, services, or handling. Is that what you were thinking? I had not imagined that we would never "add a bunch of things". If so, maybe I misunderstood what Brad proposed?<br>
<br>
It's already hashed out between Brad and you. Yes I was thinking about the "basic BMC with no features added" (actually Brad's idea) to start with. I also hope to get a minimum featured BMC (instead of no features) at some point of time will be useful. Defining such a configuration will involve some subjectivity, but will be useful for newcomers to get something useful without a lot of effort (and bulk).<br>
<br>
<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><span><div dir="ltr" style="margin-left:0pt" align="left"><table style="border:none;border-collapse:collapse"><colgroup><col width="73"><col width="7"><col width="111"><col width="7"><col width="122"><col width="7"><col width="71"></colgroup><tbody><tr style="height:15pt"><td style="border-top:1.5pt solid rgb(213,15,37);vertical-align:middle;overflow:hidden"><p dir="ltr" style="line-height:1.38;text-align:center;margin-top:0pt;margin-bottom:0pt"><span style="font-size:10pt;font-family:Roboto,sans-serif;color:rgb(102,102,102);background-color:transparent;font-weight:700;vertical-align:baseline;white-space:pre-wrap">Nancy Yuen</span></p></td><td style="border-top:1.5pt solid rgb(102,102,102);vertical-align:middle;overflow:hidden"><p dir="ltr" style="line-height:1.38;text-align:center;margin-top:0pt;margin-bottom:0pt"><span style="font-size:11pt;font-family:Arial;color:rgb(255,0,0);background-color:transparent;font-weight:700;vertical-align:baseline;white-space:pre-wrap">•</span></p></td><td style="border-top:1.5pt solid rgb(51,105,232);vertical-align:middle;overflow:hidden"><p dir="ltr" style="line-height:1.38;text-align:center;margin-top:0pt;margin-bottom:0pt"><span style="font-size:10pt;font-family:Roboto,sans-serif;color:rgb(102,102,102);background-color:transparent;font-weight:700;vertical-align:baseline;white-space:pre-wrap">Google Platforms </span></p></td><td style="border-top:1.5pt solid rgb(102,102,102);vertical-align:middle;overflow:hidden"><p dir="ltr" style="line-height:1.38;text-align:center;margin-top:0pt;margin-bottom:0pt"><span style="font-size:11pt;font-family:Arial;color:rgb(61,133,198);background-color:transparent;font-weight:700;vertical-align:baseline;white-space:pre-wrap">•</span></p></td><td style="border-top:1.5pt solid rgb(0,153,57);vertical-align:middle;overflow:hidden"><p dir="ltr" style="line-height:1.38;text-align:center;margin-top:0pt;margin-bottom:0pt"><span style="font-size:10pt;font-family:Roboto,sans-serif;color:rgb(102,102,102);background-color:transparent;font-weight:700;vertical-align:baseline;white-space:pre-wrap"><a href="mailto:yuenn@google.com" target="_blank">yuenn@google.com</a></span></p></td><td style="border-top:1.5pt solid rgb(102,102,102);vertical-align:middle;overflow:hidden"><p dir="ltr" style="line-height:1.38;text-align:center;margin-top:0pt;margin-bottom:0pt"><span style="font-size:11pt;font-family:Arial;color:rgb(0,153,57);background-color:transparent;font-weight:700;vertical-align:baseline;white-space:pre-wrap">•</span></p></td><td style="border-top:1.5pt solid rgb(238,178,17);vertical-align:middle;overflow:hidden"><p dir="ltr" style="line-height:1.38;text-align:center;margin-top:0pt;margin-bottom:0pt"><span style="font-size:10pt;font-family:Roboto,sans-serif;color:rgb(102,102,102);background-color:transparent;font-weight:700;vertical-align:baseline;white-space:pre-wrap">Google LLC</span></p></td></tr></tbody></table></div></span></div></div>