On Thu, Nov 07, 2019 at 12:05:44PM +0100, Nico Huber wrote:
> 1. Few people seem to take the might of Git into account. We have a
Git is rather limited in some respects: For example it has no notion
of a copy (except by using interesting merge hacks: create a branch
where you rename, merge the two branches, keeping both copies in conflict
resolution and you'll get a copy operation that git understands).

>    tool that can significantly increase the efficiency of development
>    and can help to preempt bugs.
Interesting claim, but no: in the end it's up to developers. Git
serves the function of a (rather stupid) librarian who keeps track
of things so they don't get lost.

>    But many people would accept a process
>    that breaks Git benefits. Especially with the growth of the coreboot
>    community, I believe this gains importance.
As Stefan explained yesterday, the copy & adapt flow was established in
part in response to issues with high velocity development overwhelming
the project's review capacity.

There are two approaches, each with their upsides and downsides,
but from my point of view the review capacity issue is a real issue,
while "git can't track copies" is not: it's easier to improve git
(I'd expect they accept patches) than to ramp up on reviewers (that
aren't in the next step accused of rubber stamping commits).


One approach is to bring up a new chipset feature by feature. This
might happen by bringing over code from another chipset that
sufficiently similar, editing it and only then putting it up for
review.

This means that every instance of the code will look slightly different
(because devs actively have to take apart .c files and reassemble them
as they reassemble the various features in the chipset), and every
line of code will have to be reviewed. That's where things broke down.

On top of that, since every instance of the code will look
oh-so-slightly different, it becomes harder to port fixes around
along the lineage of a chipset.


The other approach is to replicate what the chip designers (probably)
did: Take the previous generation, make a copy and modify, under the
assumption that the old stuff isn't the worst place to start from.

This means that the first code drop for chip(X+1) in coreboot likely
is more suitable for initializing chip(X) instead of chip(X+1),
as that's what the later follow-up commits provide.

The main risk here seems to be that old stuff that isn't needed
anymore isn't cut out of the code. On the upside, when applying
transitive trust (that is: the assumption that the original chip(X+1)
code isn't worse than the chip(X) code it came from), the main concern
is looking what changed between the generations, reducing the load
on the project during review.


You assert that the first approach I listed is superior to the other,
but you ignore the issues we had with it.


And on the project management side it's a hard sell (to put it mildly)
when you expect everybody to follow your preferred scheme (without
acknowledging its downsides) while claiming that it's project policy
(it's not: we don't have a policy on that).

We can decide to put up a policy, but we should be aware of the costs
of whatever approach we mandate.


Patrick
-- 
Google Germany GmbH, ABC-Str. 19, 20354 Hamburg
Registergericht und -nummer: Hamburg, HRB 86891, Sitz der Gesellschaft: Hamburg
Geschäftsführer: Paul Manicle, Halimah DeLaine Prado

Attachment: signature.asc
Description: PGP signature

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

Reply via email to