# 2024-02-21 - coreboot Leadership Meeting Minutes
## Attendees
Martin Roth, Felix Held, Felix Singer, Jay Talbott, Julius Werner, Marcus Andrews, Matt DeVillier, Maximilian Brune, Nicholas Chin, Nico Huber, Stefan Reinauer, Patrick Georgi, Paul Menzel, Werner Zeh, Mina Asante, Daniel Maslowski, David Hendricks, Jules Irenge, Lean Sheng Tan, Marshall Dawson, Kharthik Ramasubramanian.
## Open Action Items
* 2024-01-10 * Open Werner: Push patch based on https://ticket.coreboot.org/issues/522 * Nico: https://review.coreboot.org/q/topic:enforce_region_api * Open Daniel: Look at how we want to localize (non console) strings for coreboot. Long term project.
## Minutes
### We’ve switched to BigBlueButton for this meeting * https://bbb.sfconservancy.org/b/mar-sfn-e22-axi * For phone access, call +1-718-247-9666, then enter 89421 as the conference PIN number. * It looks like there’s only a USA phone number. * I found some apps, but they seem to be to run the meeting, not to join it. * See the coreboot calendar for times and more information. * There are a number of reasons for this change - I’ve listed 2 of the major reasons below. * We’d like to use open source projects in our infrastructure when we can, and not rely on proprietary services. * We’ve been using a google chat meeting set up by a google employee for all this time. This allows us to have more than the default number of users in a meeting, but has the downside that a google employee must be present on the call to allow people into the meeting. We’ve had several meetings recently where people were not being allowed in simply because no google employees had joined. We want to get rid of that issue. * [Felixh] Audio is much better than the last time we tried BBB. * Paul is a fan of BBB over google chat. * Julius usually does the meeting “on the go” and the BBB doesn’t work well for that. * Despite some small issues due to needing to learn about the new platform, the meeting went smoothly. BBB seems to work well enough to keep.
### [FelixH] Look at the type that we should be using for readXX * Currently we’ve been using void*, but it’s been argued that using an uintptr_t would be preferable. * Should we use ‘_Generic’? * We’d like to have just a single type. * Turned out to be very tedious to gather statistics. * Most values come from #defines and are integer types to begin with. * Things getting cast as (void *)(uintptr_t)var to use the current functions. * If there weren’t Arm code that was using pointers in structures, the recommendation would be to switch to uintptr_t, but with those, it would take a lot of reworking. * Can we just continue as we have been and cast everything to void * before reading and writing? Can we use macros to do this? * Objection to using an inline function that takes a uintptr_t and converts it to a void * - this can lead to bad practices? * FelixH - Opposed to getting rid of the uintptr_t functions * Werner - what is the most used type? Uintptr or void *? * Felix everything but arm uses more uintptr - arm uses void *. * It sounds like there are reasons for both functions. * Both functions go through the void* function, so it’s not two completely separate functions. * Shouldn’t have any real impact. * Felix will write up a document and present at least a few examples. **Decision: Due to the above, there are no objections to keeping both sets of functions at this point.** * David: But please let's avoid excessive casting or conversions. Go to EDK2 sources and grep for UINT and VOID in the same line to get a sense of what we should avoid… * Some data (added after the meeting): * It was a bit difficult and tedious manual process to get at least some statistics, since in some of the cases it wasn’t completely clear if some MMIO address should be counted as originally integer or originally pointer; if in doubt, I also looked at the call sites of functions to see which type the parameter that was used had originally. There are also quite a few helper macros and inline functions that wrap the different read/write functions making it even more difficult to get some good quantitative data, so this is mostly qualitative. * [read,write][8,16,32,64]p use integer MMIO addresses in all but 2 call sites * A lot of MMIO addresses are from defines and uintptr_t * Also some uint32_t, uint64_t or resource_t * The native RAM init for different Intel SoCs heavily uses read/write functions taking the MMIO addresses as uintptr_t * [read,write][8,16,32,64] use sometimes integer and sometimes pointer as source of the MMIO address that gets passed in as pointer * ‘&struct->element’ is a common construct to get the MMIO addresses in the Cavium, Mediatek, Nvidia, Qualcomm, Rockchip, Samsung, TI, and Sifive code; also used in the Designware I2C driver. Mediatek however also uses the [read,write][8,16,32,64]p functions in some places. * ‘&array[offset]’ is also a construct used in some places * res2mmio casts the resource_t value with (void *)(uintptr_t) so changing that to uintptr_t would be a bit more native * Buffer returned by rdev_readat is a pointer * Some ARM SoCs have the cast to a pointer in the defines * Other defines are mainly integers that get cast to pointers somewhere in the code * x86 SoC code uses a mixture of both integer and pointer MMIO functions, but the original MMIO addresses are in most cases integers.
### [Nico] Revoking Gerrit privileges as punishment. * I would like to discuss two matters about this. Not sure about the order. * My own case: I was removed from the core developers and reviewers groups 20 months ago. Without any charge nor chance to defend myself. There was Stefan's sentence, a discrediting rant about me with accusations that fit me not more than many other people, and an offer to reduce the sentence to a month if I were willing to come to the table. Which didn't make sense because I reached out to people long before Stefan's mail and it took Stefan, not me, over three months "to come to the table". And then he still couldn't tell me what I did worse than others. I asked again, Werner this time, what my charge is in 2023, again without results. And now I'm asking again. How can we make things better when we can't even say what was wrong? * [Martin] These issues are not discussed in a public forum where everyone with a pitchfork can get involved. That’s not useful. If you feel that the issues which led to this action being taken have changed, please email all the members of the leadership. Matt, Werner, and David. * Should we use Gerrit privileges as punishment at all? If so, shouldn't we have rules about it? * We will add this to the code of conduct page: ``` As a part of running the project, coreboot leadership has the right to revoke privileges as they see fit. This is not done lightly. Over the history of the coreboot project, there have been only a handful of times where an action needed to be taken. Discussions about these actions are not done publicly, for obvious reasons. If someone believes that the circumstances that led to an action have changed, please send an email to all the members of the leadership team for discussion. ``` I will note that this text is already there: ``` If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event). ``` * [Code of Conduct](https://doc.coreboot.org/community/code_of_conduct.html).
* Doesn't it hurt the project more when it loses a reviewer? (who can still get their own patches merged anyway) * [Martin] I’d say yes, and that’s something that the leadership group has to weigh when they decide to take an action against an individual. * [David] Yes, it does hurt the project when it loses a reviewer (or any contributor, for that matter). That's why it's important to deal with "toxic developers" effectively - to prevent others from leaving the project. No one developer is worth several others who will refuse to work with them. * Should we maybe do the opposite? don't merge their patches unless they do review? * [Martin] When the issue is something other than the quality of a person’s code, it doesn’t make sense to punish them by refusing to allow their patches to be merged. As many people in the community have jobs where they’re required to push code to coreboot, that could be the equivalent to getting them fired, which seems unfair. * If we want to use such punishment, should we apply it to other privileges as well? e.g. administrators, leadership members (IMO very important for trust inside the community) * [Martin] If two members of the leadership voted to take action against a third member, that’s completely allowed. The leadership team can take action as needed. I’ll note that I myself had submit rights taken away for a year. Yes, I’m one of the handful of cases mentioned. * David - We're in between two extremes - instant banning when someone is determined to have violated the code of conduct, and anything goes with little or no enforcement of rules. Neither are great, we try to use our discretion to smooth out issues in the long-run without being too heavy handed. * ...but is the process too opaque and complicated? We aren't lawyers and don't want a complicated "legal" system for coreboot. Rules need to be simple, universally understandable, and enforceable. Maybe we need to enforce stiff penalties, at least for a temporary term, before returning things to normal. * Paul - Make sure we have good communication. The “sentence” should be limited, and communicated to the person. * Stefan: What’s a reasonable length of time? There are 2 main situations that we’ve dealt with in the past. * 1) something happens and people get a slap on the wrist. * 2) There’s an ongoing issue that happens over and over. * One person who had an action taken against him refused to take responsibility and could not change, even after repeated talks. * Nico: Make sure that everyone involved is in the discussion.
### [Martin] Remove ChromeEC as a submodule - reimplement like a payload * The ChromeEC can currently be built (for some platforms) as a part of the coreboot build. It’s being downloaded as a submodule right now, but this creates a number of issues. With the change to Zephyr, the build process and requirements have changed. To address this, I’d like to propose that we drop the ChromeEC as a submodule, which restricts us to a single version of the code which can be used across all mainboards. With an implementation similar to what’s done for the payloads, the ChromeEC can still be pulled down by platforms which want to build it, and each platform can select a different commit if needed. **Decision: Go ahead and remove as a submodule. The new implementation can be reviewed in gerrit.**
### [Martin] Drop Tioga-pass & Skylake-SP? * Marc gave these both +2, so I’m inclined to believe they should be removed, as he was one of the significant contributors, but I’d like to get everyone’s input. “The platform code depends on unreleased binary files and uses incomplete public header files.” * https://review.coreboot.org/c/coreboot/+/80171 * https://review.coreboot.org/c/coreboot/+/80172 Should they be removed immediately as incomplete and unlikely to be finished? * David: Only applies to skylake Xeon-SP * Intel never allowed the release of the FSP. * Servers are much longer lived - no issue with this living on in a branch. * SKX servers are being decommissioned en masse at this point, so it would be nice if someone can find pointers to SysPro and how to get it working. * Jay: Worked on this for a good bit of time for IT Renew - had internal build working. FSP was working. Ran out of funding to complete the project. * Label it so that we could pick it back up if needed. * The framework is useful - we don’t want it to just be killed. * Millions of nodes available, but no interest in coreboot. * Nico: Arthur should be asked - this shares a lot of code with the newer generation of xeon-sp. This should probably be kept if possible. * FelixH: Shouldn’t just throw it out - shouldn’t cause too much of a burden. * FelixS: Will intel release future FSPs for these platforms? * David: They should be available somewhere (other than skylake). * Skylake-SP: Not officially supported, but available from SysPro with some caveats. * Cooper Lake: Not officially supported, but available from OCP Delta Lake firmware images. * Sapphire Rapids / Eagle Stream: FSP is on Github now: https://github.com/intel/FSP/tree/master/EagleStreamFspBinPkg * Granite Rapids: Will be put up on the Github FSP repo eventually.
### [David] Meraki (Cisco) - Escalate compliance issue to SFC * Another year, another potential GPL violation from Meraki. Late 2022/early 2023 we were dealing with a complaint about MX84 and MX250 products (Rangely and Broadwell-DE). Cisco did release the code eventually (https://github.com/halmartin/coreboot-mx84 and https://dl.meraki.net/bootloader-mx250-20230105.tar.bz2), but it took a little over a year from the initial request. This time the request is concerning the MS350. * I sent an e-mail to [open-source@meraki.com] in October '23, but aside from what appears to be a canned response (weirdly sent weeks later) there has been no progress. Time to escalate with SFC again. * What can be done to get Meraki into compliance in a friendly way? It's great to have a large vendor using coreboot and the relationship between Meraki and the coreboot community can be mutually beneficial, but only if everyone's rights are respected. * Martin: I’ve got ideas on how to make it easier to release, but I probably need help to get these done. * Licensing: create a license package that can be built into the coreboot image. These can be displayed by the setup engine or in the OS. * Package the specific build. I’ve created a tool - util/scripts/rm_unused_code that removes all of the unused source files from the coreboot tree, then creates a patch to delete those files. I’ve got an update for this patch, but haven’t had time to work on it in a while. * David will send an email to the mailing list asking for anyone from Cisco to help us with this before the lawyers get involved.
### [DanielM] “What is coreboot” draft progress 📝📈 * Met with David and Max last week, ended up with a good bunch of notes (4 pages, thanks a lot both of you!), will tidy them up and then present as the “final draft” next time 🙂 \
### 24.02 release The release tag was done on Monday the 19th. The announcement will be done on Monday 2024_02_26 Next release is 24.05. * Martin: There’s some confusion about freezes and how the releases are done at this point. We need to document that. A lot has changed since the last time we documented the process.
# Next meeting * March 6, 2024. * [Meeting link](https://bbb.sfconservancy.org/b/mar-sfn-e22-axi). * [coreboot Calendar](https://coreboot.org/calendar.html).
# Notice * Decisions shown here are not necessarily final, and are based on the current information available. If there are questions or comments about decisions made, or additional information to present, please put it on the leadership meeting agenda and show up if possible to discuss it. Of course items may also be discussed on the mailing list, but as it's difficult to interpret tone over email, controversial topics frequently do not have good progress in those discussions. For particularly difficult issues, it may be best to try to schedule another meeting.
# coreboot leadership meeting minutes [2024-02-21](https://docs.google.com/document/d/1NRXqXcLBp5pFkHiJbrLdv3Spqh1Hu086HYkKrgKj...).