Attached are my comments on draft 15.

Sorry, but I couldn't resist the urge to suggest a few changes to the
protocol. But they're relatively minor.

        - Wendy Roome

Comments on ALTO draft 15. Page numbers are from the PDF version.

Suggested changes or extensions:

{9.2} Version Tag:

        How about saying that vtags should start with a string that's unique
        to the ALTO service provider, such as an IP address or a domain name
        owned by the ALTO provider?     The reason is to ensure that two
        unrelated ALTO servers don't accidentally use the same vtag.
        
{9.6} Cost Type structure and IRD meta in {8.5.3}:

    How about adding a "consistent-with" item in the IRD metadata
    with a list of IRD URIs for ALTO servers that are consistent
    with this server? "Consistent" means they use the same network map,
    and if they provide the same cost-metrics or properties, they'll
    have the same values.
    
    Eg,
                "meta" : {
                        "cost−types": {
                                "num−routing": {...},
                                "num−hop": {...}
                                "ord−routing": {...},
                                "ord−hop": {...}
                        },
                        "consistent-with": [
                                "http://custom.alto.example.com/maps";
                        ]
                },

{8.5.3} & {8.5.4} IRD examples

        {8.5.3} gives an example of one IRD pointing to another ALTO server.
        The first IRD gives a superset of the "media-types" and "accepts"
        for the services at the other ALTO server. {8.5.4} then shows how
        to use an OPTIONS request to get the details from the second server.
        
        I suggest simplifying that. Instead of the first IRD trying to give
        a summary of the services on the second IRD, the first ALTO server
        just has an entry with the URI of the IRD of the other ALTO server,
        and the single media-type "application/alto−directory+json" to 
indicate
        that this URI returns an IRD.
        
        Then for {8.5.4}, delete all of the text at the top explaining about
        the 300/Multiple Choices status codes. Just say that the client 
discovers
        the services from the other URI by doing another GET for that IRD.
        
        Eg, the {8.5.3} example becomes:
        
                }, {
                        "uri" : "http://custom.alto.example.com/maps";,
                        "media−types" : ["application/alto−directory+json"]
                }, {
                
        And {8.5.4} becomes a GET instead of an OPTIONS request:
        
        8.5.4 Another Example
        
        The ALTO Client can discover the maps available at 
"custom.alto.example.com"
        by successfully performing a GET request to 
"http://custom.alto.example.com/maps":
        
                GET /maps HTTP/1.1
                Host: custom.alto.example.com
                Accept: 
application/alto−directory+json,application/alto−error+json
                
                HTTP/1.1 200 OK
                Content−Length: TBA
                Content−Type: application/alto−directory+json
                {
                        "meta" : {
                                cost−types": {
                                        "num−routing": {...},
                                        "num−hop": {...}
                                        "ord−routing": {...},
                                        "ord−hop": {...}
                                },
                                "consistent-with": [
                                        "http://alto.example.com/directory";
                                ]
                        },
                        "resources": [
                                ....
                        ]
                }
        
        NOTE: This then begs the question of why do "media-types" and "accepts" 
need to be
        arrays? Is there ever a reason for having more than one media-type or 
accepts
        for one entry?  If a URI does accept two different filtered services,
        and distinguishes them by the media type for the POST data sent by
        the client, just use two different entries in the IRD with the same URI.
        
{10.4.1.3}, p51-52, Endpoint Cost Parameters

        Currently it says to use the client's address if the source list is 
omitted.
        How about extending that slightly:
        
            If the list of Source or Destination Endpoints is missing (or not 
included),
            the ALTO Server MUST interpret the missing list as if it contained
            the Endpoint Address corresponding to the client IP address .....
            The Source and Destination Endpoint lists MUST NOT both be empty.
                
        FYI -- in most of the use cases I've worked on, the client is the 
destination.
        Eg, I use ALTO to find the best server from which to download a movie.
        
        
Typos:

p18, next to last paragraph: "memerbs" => "members"

p18, next to last paragraph: Currently it says

        and an array is indicated by two numbers, m and n,
        where m indicates the minimal number of values, and n is the maximum.
        When we write .. for n, it means no upper bound.
        
That doesn't match the usage. How about replacing that with

    and an array is indicated by two numbers in angle brackets, <m..n>,
        where m indicates the minimal number of values, and n is the maximum.
        When we write * for n, it means no upper bound.

p23, {8.5.3}: This is about an Information Resource Directory or "IRD".
        So why use  "IDR"  as a prefix in  "IDRMeta" and "IDRResourceEntry"?
        Wouldn't it make more sense to call those objects IDRMeta and 
IRDResourceEntry?
        
p23-25:
        There's no definition of the cost-types attribute in the IRD metadata;
        it's only defined by example.  {9.6} does define a CostType structure,
        but that CostType does not include the "description" field used in
        the IRD examples. My guess is that we want the {9.6} CostType object
        to only apply to map queries and responses; the items in the IRD meta 
cost-types
        list are of a different type.
        
        So that should be defined in {8.5.2}.
        
        Or if cost-types really is a list of {9.6} CostType objects,
        drop the "description" fields from the examples, and give a
        forward reference to {9.6}.
                
p25, top of page: "Resoucres" => "Resources".

    A few lines down, there's   
       ... from the "meta" member of the IDR.       
    Shouldn't the acronym be "IRD"?

        What about moving the definition of the CostType object from {9.6} to 
{8.5.2}?
        As it stands now, the example on p25 gives cost-types without an 
explanation,
        which is confusing to the reader.  Or at least give a forward-reference 
to {9.6}.
        
p26, {8.5.4}:
        The comments about "may indicate multiple IRDs with one ALTO endpoint" 
        are inconsistent with the example, because 
"http://custom.alto.example.con/maps";
        does NOT provide multiple services. Instead, that URI returns an IRD.
        According to the example, the filtered services are provided by 
different
        uris.
        
p29, {8.6}:
        Didn't we say that that "meta" item was optional?
        
p35, {9.5} Cost Metrics:

        Didn't this used to say that "." in a cost metric name was legal
        but reserved for future use?
        
p36, {9.6} Cost Type

        See earlier comments about whether this is the type of JSON objects
        in the IRD meta cost-types list.  If it is, and you want to retain
        the "description" field, define it here, and indicate that it's 
optional.
        
p48 - 49, {10.3.1.4}

        Currently it has "prop-types<0..*>".  Shouldn't that be <1..*>?
        It seems silly to have an endpoint prop service that doesn't have
        any properties. Assuming you make that change, at the top of
        page 49, drop the sentence,
        
                If not present, this member MUST be interpreted as an empty 
array.
                
p64-67:
        There are several cross-refs that show up as <xref target="...">,
        at least in the PDF version.
        
                - Wendy Roome
_______________________________________________
alto mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/alto

Reply via email to