Reviewer: Spencer Dawkins
Review result: Ready with Issues
I'm sorry for running late on this review, and please don't be concerned about
the length - it includes a lot of draft text as part of the comments.
Do The Right Thing, of course.
In this text,
At first, a map of endpoint properties might seem impractical,
because it could require enumerating the property value for every
possible endpoint. However, in practice, it is highly unlikely that
properties will be defined for every endpoint address. It is much
more likely that properties may be defined for only a subset of
endpoint addresses, and the specification of properties uses an
aggregation representation to allow enumeration. This is
particularly true if blocks of endpoint addresses with a common
prefix (e.g., a CIDR) have the same value for a property. Entities
in other domains may very well allow aggregated representation and
hence be enumerable as well.
I wonder if it’s worth saying anything about the likely effect of doing
something “highly unlikely”, or perhaps something a bit more likely, like
defining properties for a sufficiently large subset of endpoints to cause a
problem.
You might make an editing pass through the document looking for occurrences of
“domain name” that (I think) refer to entity domain names, such as
* if an entity is an endpoint with example routable IPv4 address
"192.0.2.14", its identifier is associated with domain name "ipv4"
and is "ipv4:192.0.2.14",
* if an entity is a PID named "mypid10" in network map resource
"netmap2", its identifier is associated with domain name
"netmap2.pid" and is "netmap2.pid:mypid10".
I understand why you have the “entity domain name” terminology, but dropping
the “entity” qualifier seems likely to lead to confusion.
In this text,
Thus, if a property
"pid" is defined for entity "192.0.2.34" in two different network
maps "netmap1" and "netmap2", the value for this property will likely
be a different value in "netmap1" and "netmap2".
Is “likely” the right word? I think your point is that there’s no reason to
expect they’d be the same, not that the reason people create another network
map is to store the values for properties that are different. I think you’re
saying “can be a different value”, aren’t you?
In this text,
* an entity domain named "netmap1.ipv4" includes the IPv4 addresses
that appear in the "ipv4" field of the endpoint address group of
each PID in the network map "netmap1", and that cannot be
recognized outside "netmap1" because, for instance, these are
local non-routable addresses,
Is “cannot be recognized” the right phrase here? My understanding is that this
is more like “have no meaning outside ‘netmap1’”.
I’m confused about the use of the IPv4 literal address “192.0.2.34” in this
document. I thought that https://datatracker.ietf.org/doc/html/rfc1166 reserved
192.0.2.0/24 for documentation, so when I see statements like this one:
* if an entity is an endpoint with example routable IPv4 address
"192.0.2.14", its identifier is associated with domain name "ipv4"
and is "ipv4:192.0.2.14",
I’m not sure what “example routable IPv4 address” means - it’s not routable, is
it? In general, I’m not sure what saying “routable” adds to statements like
* an entity domain named "ipv4" is resource-agnostic and covers all
the routable IPv4 addresses.
Isn’t that a convention that someone might use, rather than an invariant
property of “ipv4”? It’s probably worth making an editorial pass looking for
these usages. And you might also look for similar issues using “2001:db8::1/48”
- isn’t that reserved for documentation as well, by
https://datatracker.ietf.org/doc/html/rfc3849?
I was confused by this text:
Each entity property type MUST be registered with the IANA, following
the procedure specified in Section 12.3 of this document. The
intended semantics of the entity property type MUST be specified at
the same time.
Identifiers prefixed with "priv:" are reserved for Private Use
[RFC8126] without a need to register with IANA. All other
identifiers for entity property types appearing in an HTTP request or
response with an "application/alto-*" media type MUST be registered
in the "ALTO Entity Property Type Registry", defined in Section 12.3.
The first sentence of the first paragraph seems to be contradicted by the first
sentence of the second paragraph - “each MUST be registered, except for the
ones that don’t need to be registered”.
I do see reasonable usages of SHOULD in this document (“SHOULD unless”), but I
also see usages like this one -
For each entity in the property map:
* If the entity is in a resource-specific entity domain, the ALTO
server SHOULD only return self-defined properties and resource-
specific properties which depend on the same resource as the
entity does. The ALTO