We had a single global flags file that defined flags for every subsystem. It was very hard to know which flag is needed for which, and hard to maintain. Broke it down by moving flags/configs to each respective subsystem package. There's still a lot more cleanup to do, but I feel this is good enough to be reviewed and merged, and iterated on. Hard to get everything write at once.
What I like:
modular: each package defines its own config/flags
cleanup surfaced some other dependency problems which were hidden. I think this kind of modular approach will force us to think more structurally and find the right abstractions. still a wip though.
What I don't like:
the way I'm dealing with flags that are defined in 2 packages (for eg maxBlobLength is needed in memstore and verifier config) is kind of ugly (currently memstore reads config from verifier flag)
e2e test setup is now more ugly and has some repeated hardcoded constants. This is because we removed the indirection from global-flags (which we were using in e2e test setup) to configs. Now each config needs to be properly setup in the default e2e test setup... perhaps we should introduce one more level of indirection (op does this) with flags -> CLIconfig -> config (instead of the current flags -> config). This would allow the e2e tests to be setup with CLIconfigs (these are more easily human understandable, as opposed to the configs that are currently needed)
We had a single global flags file that defined flags for every subsystem. It was very hard to know which flag is needed for which, and hard to maintain. Broke it down by moving flags/configs to each respective subsystem package. There's still a lot more cleanup to do, but I feel this is good enough to be reviewed and merged, and iterated on. Hard to get everything write at once.
What I like:
What I don't like: