TLDR: 1) Please don't use the term deprecate - use "moved to a branch" 2) Lets set up some rules about moving platforms/chips to a branch. 3) How do we find out what platforms are actually in use? 4) Please don't take this as an argument.We
---
First, we are not going to "Deprecate" anything - we are not warning against its use. I'd ask that everyone please stop using that term because it's just too loaded. I understand that the term has been used in coreboot for a while, but let's try to stop using it.
What we do is move maintenance of platforms and chips out of the master branch, onto a version branch, but they can always be maintained on or built from that version branch. They can even be moved back into the master branch if desired and if they are brought up to the current standards.
We are not deprecating those platforms - they will live on in coreboot as long as we have a git repo that they can be built from.
---- Next, I firmly believe that we need to set up some rules about how long platforms & chips will stay in the coreboot master branch after being introduced, or after they stop being manufactured/sold.
Right now, anyone who works to put code into the tree has no way to know when their code will be moved to a branch. Obviously "It's no longer sold" isn't a good reason, because we continue support lots of chips and mainboards that are no longer sold.
I think that the argument of "It hasn't been tested in x years" may be valid, but not everyone who uses a platform runs our tests on it. And just because it's being tested may also not reflect that anyone is actually using a platform.
Really we have no idea what platforms and chips are actually being used, so it's difficult to determine what should or shouldn't be moved to a branch.
Finally, (and apologies to Felix), I hate the argument of getting rid of things simply to "reduce the maintenance burden".
If we want to reduce the work that needs to be done to maintain older chips & platforms, let's implement some APIs between things so that there there's a better separation and changes don't affect everything across all of coreboot.
If the platform is in the tree, it needs to be supported to the best extent possible, and should be maintained on master as long as it's actually in use.
--- My proposals:
Let's create some rules about moving platforms & chips to branches to set expectations: - Maybe decide that after being introduced, chips/platforms will stay in the master branch for a minimum of X years unless there's a significant need to remove it. - Maybe say that every SOC/Platform needs a maintainer, and if the maintainer stops responding or working on that platform or doesn't verify that a platform is working, then it will be moved to a branch after X releases / months. If a platform is perfect and doesn't need to be updated, it doesn't need to be on the master branch, right?
Because we have no way of really knowing what platforms or chips are being used. It might be good to come up with a way to get some metrics regarding this: -- It looks like FWUPD keeps statistics about updates, so maybe that could help, at least for anything that's up there. -- Set up a poll or something for both anonymous and verified users to say what platforms they're using. Right now, this is done solely by the test results, which aren't trivial. <Terrible_Ideas> -- We can add a Kconfig option (opt in) to hit a website to increase a counter when a platform is being built. This is probably a terrible metric, but better than we have now. Hash the incoming IP address so that we only increment for one build a week from an individual. Yeah, it could be gamed, but meh, who cares. It just lets us know that the platform is still being built by someone. -- Add a script that again hits a website with information about what's running on a coreboot machine. Some data could be in the clear like platform name & build date. Other data could be hashed just so that we can get a rough idea of how many different machines are using an otherwise identical firmware. </Terrible_Ideas> ---
Please don't take any of these thought as me trying to argue with anyone. I absolutely agree that if something isn't being used, it doesn't need to be maintained on the master branch. I just want to make sure that things actually aren't being used before moving them to a branch.
Thanks everyone, and take care. Martin