Regions are a MeshCore feature that lets you scope traffic and keep it contained. It works by assigning region scopes to messages and then setting rules on repeaters. For example:
Alice, in Toronto, sends a message with the scope “ca-yyz”. Her message will only be repeated by nodes with the “ca-yyz” region set. If a repeater only has, e.g, “ca” set, Alice’s message will not be repeated.
This is important: regions do not have a hierarchy! If a repeater wants to carry both Canada-wide and Toronto-only messages in this example, it needs both “ca” and “ca-yyz” set.
Another very important note is that region IDs should ideally be unique within the connected mesh. As our meshes increasingly interconnect, avoiding conflicting region IDs is important.
With that, here’s some thoughts on what we need to settle for a region scoping plan in Canada:
- What broad naming scheme do we use? The PNW mesh has gone with a flat naming scheme, but we could also go with a hyphenated one.
- How granular do we get?
- Who decides how regions are split up, and how do we coordinate it to avoid region conflicts?
Here’s my personal take on the matter: I think the PNW scheme makes a lot of sense, but the Canadian meshes have two characteristics that make a hyphenated scheme fit better. (i) is that our meshes are currently not as interconnected in both technical and governance terms, and (ii) they might be more connected in future.
Which leads me to think that we should prioritize a scheme that lets individual regions make as many sub-assignments as they want without risk of conflicting with other ones in future (and thus making us revise the whole scheme after we roll it out!). Here’s how a hyphenated system might look:
- meshcore.ca assigns broad scopes: a
cascope for all Canada, and subscopes by province, iata, metro area, something (e.g,ca-yyzfor the GTHA). - after that, we let individual meshes assign subregions under that broader one: the GTHA is free to make as many
ca-yyz-[whatever]regions as they want without any risk of conflicting with other meshes’ assignments, or requiring us to globally micromanage it.
An important problem to consider is that repeaters only have 172 bytes to respond with region names. This is okay for hyphenation imo, as long as we keep individual elements short. The Swiss mesh, for example, uses ch-fr, ch-it and ch-de as their broad scopes, which is almost as concise as the PNW scheme!