tango-controls/TangoTickets

RFC3986 compliance (definition of "//" )

Closed this issue · 0 comments

In order to complement #50, I want to point out another non-compliance of the RFC3986 by the tango naming convention.

Tango defines that // is associated to the optional protocol part, while the RFC3986 states that it is part of the optional authority (the host:port) part. In other words, the tango naming convention would closer to RFC3986 compliance if it defined:

[protocol:][//host:port/]device_name[/attribute][->property][#dbase=xx]

instead of

[protocol://][host:port/]device_name[/attribute][->property][#dbase=xx]

In practice this means that the device named "tango://foo:1234/a/b/c" could be referred as

a/b/c (if omitting both the protocol and database info)

or tango:a/b/c (if omitting the optional database info)

or //foo:1234/a/b/c (if omitting the protocol info)

but never tango://a/b/c (because, according to RFC3986, '//' indicates the beginning of the authority component)

If compliance with RFC3986 is important, this could be addressed in the Tango10 specification.

(note: this is related but independent from what I described in #50)