Hello All,

We regret to announce that PC Engines, a provider of small and low-power
servers for network security, wireless networking, and embedded
applications, has discontinued its sponsorship for open-source firmware.
Although this is a significant change for the open-source firmware
community, our commitment to supporting the hardware remains strong.
At Dasharo, we aim to continue the legacy of PC Engines by distributing
open-source firmware and putting the community's needs first. Our focus
will be on releases and feature sets driven by community support.
We are considering a subscription model to ensure stable and reliable
firmware updates. Your input is important to us, and we would appreciate
your feedback through our survey at https://forms.gle/MHrT2f1du1Afvwvj9.
Please help us understand how we can better serve the open-source
firmware community and ensure its success in the future.

Full details: https://docs.dasharo.com/variants/pc_engines/post-eol-fw-announcement

Best regards,
Norbert Kamiński
Junior Marketing Specialist at 3mdeb

On 4.01.2023 01:17, Denis 'GNUtoo' Carikli wrote:
On Tue, 3 Jan 2023 18:38:02 +0100 (CET)
Martin Roth <gaumless(a)tutanota.com> wrote:

Hi Denis,
  - Responses inline
Hi,

Thanks for the answers.

Jan 2, 2023, 17:16 by GNUtoo(a)cyberdimension.org:

Hi,

The MAINTAINERS file has the following:
PC ENGINES ALL MAINBOARDS
M:      Piotr Król <piotr.krol(a)3mdeb.com>
M:      Michał Żygowski <michal.zygowski(a)3mdeb.com>
S:      Supported
F:      src/mainboard/pcengines/
But the commit f9decbb0c720662d8e71fe221aef55b7ecf76196 ("mb/*/*:
Remove AMD family14 boards") actually removed the apu1
(src/mainboard/pcengines/).

Is there some policy somewhere that describes what kind of support
to expect from maintained boards?
Yes, It's in the maintainers file itself:

            Supported:   Someone is continuously paid to look after
this and a reaction to review requests can be expected
                         within a few days, a month at most.
[...]
Because the maintainers may not notice the patches, it's always
suggested to reach out to the maintainers directly for reviews.
As I understand that file tells only about patch review delays and not
what kind of patches are acceptable or not or who is supposed to do the
work of converting a board to the newer APIs. I'm mostly interested in
two last aspects.

For instance as a Linux contributor, I can send a patch to add a
computer (like a smartphone for instance) or contribute fixes and new
support to existing drivers, and usually the code gets maintained
somehow automatically:
- New patches are required not to break existing code, so they have to
   take care to either keep the compatibility with the old code or
   update it along the way.

   Though older code doesn't necessarily benefit from new features (for
   instance, for ARM, if nobody converts old C board code to the
   devicetree, it will still works if people compile support for that
   ARM computer, but the resulting kernel will only  be able to boot on
   that computer).

   The code quality requirements is usually very high in order to reduce
   the amount of time required to maintain the code.

- If I'd contribute a driver instead, I may end up being its maintainer
   somehow, so I'd have to review patches. Who will maintain the driver
   might also be part of the discussion when upstream will decide or not
   to accept the patch for the new driver.

- Users can test the code and report bugs. If the bugs are reported
   during patch review, the burden to fix the bug is on the person who
   sent the patch.

Since there are different policies in Coreboot, I'm trying to
understand if it's possible to somehow find ways to get the same kind
of assurances than with Linux so that specific mainboards will not be
removed, and if so how to do it, how much resources it requires, etc.

If I look at Linux, in the worst case scenario I can look at the number
of maintainers for a given driver and expect that the maintainers will
at worse, work full time on reviewing patches, so that can be roughly
calculated.

There is also information on how to setup automatic test infrastructure
(for instance with LAVA) so the resources needed for that can also be
predicted somehow.

Here this interest me because I'm trying to evaluate if it makes sense
for me and other interested people to contribute big changes to
Coreboot, for instance by adding back a mainboard like the Asus
KGPE-D16. If we do a lot of work and that this work is removed right
after, it's not worth it, so it's best to check beforehand than to have
some drama if the huge work is removed.

The issue with Coreboot is that I'm unsure if I can do the same kind of
calculation than with Linux: The APU1 was removed despite the fact that
the mainboard was "supported".

So this is why I'm trying to understand how much work it is to convert
boards and for that understanding how deprecation are decided could
give me hints of the amount of work to expect in the worst case.

The usual reason is progress: Infrastructure module X has been
replaced byinfrastructure module X+1. Removing X helps keep the
sources manageableand likely opens opportunities to improve the
codebase even more.
Here I am wondering precisely how the deprecation of module X is
decided. For instance can anyone convert some code in Rust and expect
everybody else to learn Rust and rewrite everything in Rust?

Is it up to maintainers of each module to decide when to deprecate
module X in favor of module X+1?

If so what are usually the factors taken into account? I assume that if
there is too much change to do (like completely rewriting Coreboot in
Rust), I assume that they won't be able to force a change like that on
the rest of the Coreboot contributors. If that's the case it gives some
indication of the amount of work required to convert to newer modules.

It also brings the question of what is taken into account when deciding
to deprecate module X. For instance is the maintainability of each
"modules" the only concern, or are the amount of supported mainboards
and end users a concern too?

Is the amount of work needed to convert from module X to module X+1
taken into account? And is there usually some documentation that
explains how to do the conversion? Or are do people need to find out by
looking at the release notes and other boards being converted?

Is there also a policy that explains when boards are removed? Or
what to do to prevent boards from being removed?
We do have that policy, though it could probably be written a bit
more plainly.

Here's the search in the coreboot documentation.
https://doc.coreboot.org/search.html?q=deprecation&check_keywords=yes&area=default

Here's the template for the release notes:

Deprecation notices are part of release notes to act as a warning: at
somepoint in the future some part of coreboot gets removed. That
point must beat least 6 months after the release of the notice and it
must be right aftersome release: That is, the specified release must
still contain the part inquestion while one git commit later it might
be removed.
That is good: at least we have a way to find that out.

For instance u-boot warns when building that a boards needs to be
adjusted to the newer driver model. So just by building u-boot you
know in advance what needs to be fixed and for when.

I've looked in the Coreboot documentation but I didn't find any
information about that.
Someone could definitely add something to put up a notice when doing
the build, but that doesn't exist right now.  If it's not something
that you're interested in doing, you could file a bug if you think it
should be added.`
I'm not sure I'm the right person to do that, and if so how I could do
it. I could probably propose a patch to the documentation though, if
it's the right place to do it.

For the code, it's probably best if it's done in the commit that
deprecates something. For instance for CONFIG_LEGACY_SMP_INIT, we could
add the following to the Makefile in the top directory:

ifneq ($(CONFIG_LEGACY_SMP_INIT),)
@echo "+----------------------- /!\ WARNING /!\ ---------------------+"
@echo "| CONFIG_LEGACY_SMP_INIT is deprecated.                       |"
@echo "| It will be removed in Coreboot release 4.18 (November 2022).|"
@echo "| Please migrate your mainboard to CONFIG_PARALLEL_MP,        |"
@echo "| or it will be removed right after the Coreboot 4.18 release.|"
@echo "| See the Coreboot release notes[1] for more details.         |"
@echo "| [1]Documentation/releases/coreboot-4.16-relnotes.md         |"
@echo "+-------------------------------------------------------------+"
endif

If we add that at the end of the Makefile, to have it show up at the
end of the build. We could also add a deprecation target if needed.
This way if we do that and that we use a similar format for all
deprecations, people building Coreboot will most likely see it.

This way users will not have to read all the release notes at each
releases to catch that kind of issues, and if distributions start
packaging coreboot or other projects based on Coreboot, then they would
see that too.

Denis.
_______________________________________________
coreboot mailing list -- coreboot@coreboot.org
To unsubscribe send an email to coreboot-le...@coreboot.org

Reply via email to