On Wed, Jan 24, 2018 at 10:36 AM, Nico Huber nico.h@gmx.de wrote:
Hey folks,
during review of commits that port per-region file arguments [1] from CrOS flashrom over here, we ran into a discussion about the command line interface changes. The basic question that arose is
Do we want to maintain full CLI compatibility to CrOS flashrom?
This would have the upside, that it would ease remerging of the two flashrom versions (in some unknown future). And anybody currently using CrOS flashrom could transition more smoothly. OTOH, depending on how the compatibility is achieved, it might increase the costs for review and development heavily (for a project with 0 spare resources).
To not have to discuss this each and every time when some non-trivial feature is ported over from CrOS, I'd like to have some opinions, how valuable CLI compatibility is to you all and how we want to achieve it. I have currently some alternative ideas in mind that I'll sketch below. Feel free to add other ideas or just to comment them.
Option #2 seems pretty good IMHO. I suspect that CrOS will need to maintain their legacy behavior for a while longer, but that does not need to hold back upstream. We should of course improve our testing to avoid breaking one or the other, at least without sufficient reason and time to adjust.
Some background on this: CrOS currently maintains a separate CLI in their tree, cli_mfg.c, specifically because the upstream CLI was not well-suited for their manufacturing needs. Things like syntax changes, additional options, verbosity, error handling, etc. were simply different from what typical users expect. The partial read/write/verify syntax was developed to meet specific needs of the manufacturing flow, and the write-protection syntax was added specifically to address the way write-protection works on Chromebooks. Stuff like "combining multiple files" was done to avoid wasting valuable time on the assembly line and at runtime during normal OS maintenance (yes, seconds really do matter).
I'd still like to see CrOS converge with upstream so we share development and testing efforts. It would also be great to have more device manufacturers working with upstream. Having an alternate CLI coexist alongside the "classic" CLI seems like a decent compromise IMO. Both sides will benefit from a converged codebase, let's not make the CLI a blocking issue.