Skip to content

Define a convention for referring to specific configurations. #22

@zenhack

Description

@zenhack

Since there are several configuration parameters, it is necessary for systems to specify which parameters they use. It would be somewhat cumbersome to have to write out e.g. "we use hashsplit with the RRS1 has function, S_min = ..., S_max = ..., and threshold = ..." everywhere, and it seems likely that some documentation might carelessly omit parameters (I actually had to go look at the spec to remind myself what all of them are).

I'd like to define a convention for naming configurations to make this a bit less error prone; this is inspired by the the noise protocol's conventions:

http://noiseprotocol.org/noise.html#protocol-names-and-modifiers

Proposal:

HashSplit_<T>_<H>_<S_min>_<S_max>

e.g. HashSplit_13_RRS1_64K_2M for the configuration:

S_min = 64 kibibytes (64 * 2 ^ 10)
S_max = 2 mebibytes (2 * 2 ^ 20)
H = rrs1
T = 13

We'd define the K, M, and G suffixes to be the corresponding powers of two. We would also allow omitting a suffix for small values of S_min/S_max.

I vaguely worry about people mixing up powers of two and powers of ten.

It may also make sense to pick some small number of "recommended" configurations (perhaps even just one) and give them privileged names, to encourage converging on common configurations across systems. I expect there is some utility in being able to vary the parameters, but probably implementations should not do so without specific reasons.

Thoughts?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions