User:Kevin Reid/Thoughts on protocol queries
- This text has not been updated other than wikification and some quick notes since September 5, 2005. I make no guarantee that it reflects my current opinion on E's direction. —Kevin Reid 09:12, 6 May 2010 (CDT)
XXX Turn this into a design issue page.
Thoughts on extending protocols
Two CapTP peers talking. Let's handwave that the Miranda-method protocol is well-known and adequate. a sends
b <- __getAllegedType().
b has Interesting Features that it wishes to express in its type object. How does b (or b's implementation language) extend the TypeDesc protocol in a way that will not potentially create confusion due to accidental overlap of method names with other extensions?
ihefDN Hey, that's the geartest! So with ll this brain power AWHFY?
Potential formats of protocol names
DNS names org.erights.e.elib.slot.Slot
Relies on the DNS system's stability - global namespaceish.
Easier to create URIs than DNS names. Still relies on DNS.
- Later note: The tag: URI scheme allows dating a DNS usage. Thus it relies only on agreement on a calendar. —Kevin Reid 09:12, 6 May 2010 (CDT)
One of the above combined with a GUID/SwissNumber
The advantage of this over the above is that the random component makes it unlikely to collide with other protocol names, even if, e.g., DNS names change hands. For normal use, the first part of the name should be adequate to provide human-readable identification, and in the event of a first-part-collision it is highly likely that the random characters will be different at the left end.
- Later note: This style of naming corresponds to a concept I'm calling “Token” these days — an PassByCopy object which has a static random component and a human-readable component, and prints only as the human-readable component — they would be used for all 'enumeration type' purposes. —Kevin Reid 09:12, 6 May 2010 (CDT)
Of course, no matter what the name scheme, it is trivial to deliberately create a "collision", but this does not matter as it is always an alleged type and the object can misbehave any way it likes no matter what protocols it claims to support.
Means of finding authoritative documentation of a protocol.