Subject: [Uri-review] First draft, "tomtomhome" URI scheme

From: "Michiel Salters" <[email-masked]>
Date: Fri, 4 May 2007 13:57:27 +0200

Hi,

The TomTom HOME application has implemented a tomtomhome: URI scheme
which
we'd like to officially register. We'd appreciate feedback on the
scheme.

We are aware of the early draft of the geo: URI scheme that was
circulated March 1st 2007.
The tomtomhome: scheme was included in TomTom HOME version 1.5 which was
first
released in January 2007. This has caused an overlap in functionality.
For example, 
the <geo:48.208333,16.372778> URI is similar to 
<tomtomhome:///location?48.208333,16.372778> but there is no equivalent
for
<tomtomhome:///showonmap?48.208333,16.372778>

Background:
TomTom HOME is the management application for all TomTom Portable
Navigation Devices.
The latest version of TomTom HOME is available from
http://www.tomtom.com/home
for Microsoft Windows (XP/Vista) and Mac OSX (10.3.9+)
HOME will run with limited functionality if no TomTom PND is connected.

Regards,
Michiel Salters | Technical Lead, HOME Client | TomTom |
[email-masked]

--- 1st Draft, tomtomhome URI scheme  ---

   URI scheme name: tomtomhome
      
   Status: Experimental

   URI scheme syntax:
	ABNF rules refered but not mentioned here are per RFC-3986 and
RFC-2616
	hier-part = "//" authority "/" command
	authority = ""
	scheme = "tomtomhome"
	command = "install" / "address" / "location" / "navigateto"
	        / "showonmap" / "addfavourite" / "execute"
	        / *(unreserved)
	query = argument *("&" argument)
	fragment = command "?" query [ "#" fragment ]
	argument = http-url / city / street / housenumber
	         / longitude-latitude 
	         / *(unreserved / escaped / unwise)
	city = *(unreserved / escaped)
	street = *(unreserved / escaped)
	housenumber = *digit
	longitude-latitude = longitude "," latitude
	longitude = [-] 1*digit ["." 1*digit] ["E" / "W"]
	latitude  = [-] 1*digit ["." 1*digit] ["N" / "S"]
	
   Justification:
	<path-absolute> specifies the possible commands encoded by
	such URIs.

	We use an empty authority initially to allow for
	non-TomTom commands later on which would obviously have an
	non-empty authority. Plus, experience has shown this is
	better supported in todays Webbrowsers. [Violates RFC4395
	Section 2.2]

	# is used to allow concatenation; it allows for
	tomtomthome:///<command>?<arguments>#<command>?<arguments>
	
URI scheme semantics
	A tomtomhome:/// URI can be split in a list of commands,
	each of which has arguments. The list semantics is a simple
	sequential execution of commands, where a failure of one
	command stops the processing of the rest.

	All commands have requirements on their arguments, both on
	the number and content. If these aren't met, the command
	fails directly.

	The Install command has one argument; which must be an HTTP
	URL refering to a TOC file (Table Of Content file, as 
	created by e.g. HOME). The Install command will install the 
	content referenced by the TOC, by obtaining the archive(s)
	referenced by the TOC, extracting the files from them, and
	copying those files to the TomTom device. To comply with the
	argument grammar, escaping of reserved characters is 
	necessary.

	The address command has three arguments. The first argument is
	a <city> name, the second is a <street> name, and the third is
	a <housenumber> in the street. Semantics are left to the 
	implementation, which may offer the user a list of uses for 
	the address.

	The location command has one or two arguments. In both forms,
	the first argument is a <longitude-latitude> pair. 
	The second argument, where present, is a description of the 
	longitude-latitude pair, meant for presentation to the user.
	The numbers are interpreted as degrees with an optional
	decimal fraction. Longitude is East or West of Greenwich,
depending
	on the suffix. If no suffix is present, East is assumed. If a -
sign
	is used, no suffix should be present and the point is in the
western
	hemisphere. Latitude is similar, except it's relative to the
equator,
	North is assumed, and negative longitudes are South of the
equator.
	(The sign convention is thus Cartesian)
	Semantics are left to the implementation, which may offer the
	user a list of uses for the location.
	
	navigateto takes the same arguments as address and location,
	but suggests to the implementation that the address or location
	is a destination.

	showonmap takes the same arguments as address or location,
	but suggests to the implementation that it should show a 
	map of the surroundings of the address/location.

	addtofavourite takes two or four arguments. The first is a
	suggested name for the address or location, and is free-format
	text. In the 2-argument form, the second argument is a location;
	in the 4-argument form it is an address. This command is a 
	suggestion to the implementation to store the address in some
	kind of address book. Note that in this case, unlike the
location
	command, the description is mandatory and precedes the 
	<longitude-latitude> argument.

	execute takes one argument, an HTTP URL. If an HTTP GET of that
	URL returns a document with text/plain MIME type, each line of
	that document is interpreted as a <fragment> (i.e. a list of
	commands and arguments). This may be used to encode long
	address lists.

Encoding considerations
UTF-8, escaped as needed, per RFC-3986 Section 2.5

   Applications/protocols that use this URI scheme name.

TomTom HOME, version 1.5 and later.
TomTom HOME is an application for the management of Portable Navigation
Devices (PND) sold by TomTom. HOME is included in the purchase, but can
also be downloaded for free from http://www.tomtom.com/home
The webserver http://addto.tomtom.com/ will redirect to tomtomhome:///
URIs. The path and query used in the http URI will be rewritten as
the comamnd and arguments in the tomtomhome URI.

   Interoperability considerations.
      
TomTom is not aware of any interoperable application or
any party trying to become so. We do expect people to use
tomtomhome: URIs on webpages.
Patents are pending on implementation of such named URI's
in relation to navigation devices.

Applications should consider addresses in a fuzzy way, ignoring case
and diacritics. Also, there may be multiple ways of naming a city,
depending on many factors including political. City names do not
appear in isolation; streetnames can be used for disambiguation.

The addtofavourite command will accept a longitude/latitude pair,
which typically requires reverse geocoding to store the address
as a city/street/housenumber 

   Security considerations.

Applications interpreting an install command should validate
the content before being installed. Applications interpreting
an execute command should not try to read the entire document
into memory.

   Contact.
   Tom Tom Int BV
   Michiel Salters ([email-masked])
   Phone: + 31 (0)20 - 8500800
   Fax: +31.208501099
   Rembrandtplein 35
   Amsterdam,  1017 CT
   NL

      Person (including contact information) to contact for further
      information.
   Author/Change controller.
   Tom Tom Int BV
   Michiel Salters ([email-masked])
   Phone: + 31 (0)20 - 8500800
   Fax: +31.208501099
   Rembrandtplein 35
   Amsterdam,  1017 CT
   NL

      Person (including contact information) authorized to change this,
      if a provisional registration.
  Michiel Salters ([email-masked])

   References.

RFC 3986
RFC 4395
RFC 2616

This e-mail message contains information which is confidential and may be privileged. It is intended for use by the addressee only. If you are not the intended addressee, we request that you notify the sender immediately and delete or destroy this e-mail message and any attachment(s), without copying, saving, forwarding, disclosing or using its contents in any other way. TomTom N.V., TomTom International BV or any other company belonging to the TomTom group of companies will not be liable for damage relating to the communication by e-mail of data, documents or any other information.

_______________________________________________
Uri-review mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/uri-review

---

From: Martin Duerst <[email-masked]>
Date: Mon, 07 May 2007 10:48:55 +0900

Hello Michiel,

I think your scheme should be registered provisionally on the basis
that we are now registering schemes that exist and are (to some
extent) in use.

However, it seems plain obvious to me that a scheme for a general
purpose, such as identifying a geographical location, which bears
the name of a company or product is not a good idea.

The main reasons for this that I can give from the top of my head are:
- Other implementers will not want to use it because of fear
  (maybe unjustified, but not in this case) of IPR issues, and because
  they don't want to push a competitor's brand.

- Using a product name detracts from the basic purpose of a scheme
  (e.g. geolocation), confusing users.

- Using a product name also confuses the purpose of the URI scheme
  when designing it.

Please see below for more comments.

>       <path-absolute> specifies the possible commands encoded by

URIs don't identify commands, they identify resources.
You should rethink and rewrite your proposal in terms of
resource identification.

>       non-empty authority.

Oh, here we go: Our company takes the empty prefix, everybody
else has to use a prefix. No other maker will like that, they
will all come up with their own scheme, which will result in
bad operability for the user.

>      Plus, experience has shown this is

The character for separating commands should be ";", not "#",
because "#" is very special for URIs, it identifies a subresource.

>       argument grammar, escaping of reserved characters is 

The way to do this is to define a mime type, and use a plain http:
URI, labeled <a href='http://link_to_your_TOC_file'>Install</a>
e.g. on a Web page. When a user has installed TomTom, the OS
associates the mime type with the application, and things just
work out.

>       implementation, which may offer the user a list of uses for 

This is hopelessly non-internationalized. There are quite a few places
around the earth where addresses don't work with city-street-number.
Also, the country is missing.

>       longitude-latitude pair, meant for presentation to the user.

Presentation to the user is not URI business. That's done with the
text of an <a> element in HTML, and with similar techniques for
other formats.

>       user a list of uses for the location.

Here we go. If you reword "location" as identifying a resource,
semantics are clear (it identifies a geographical location),
and what the application does with it is application-dependent.

>       but suggests to the implementation that the address or location

The "suggests to the implementation that the address or location
is a destination" is much better left e.g. to a menu selection.
What about the user first wanting to have a look at the map, and
only later decide that s/he actually wants to go there?
Syntactic issue: Can I have both address and location info in
a navigateto? How exactly does that work.

>       map of the surroundings of the address/location.

Again, that's part of the context.

>       <longitude-latitude> argument.

Again, adding something to a list of favorites or bookmarks isn't
something that should be part of an URI, but part of an user's
decision.

>       commands and arguments). This may be used to encode long

This can better be solved via a separate mime type. Having text/plain
contain commands with an expectation that they be executed is a bad
idea security-wise.

Overall, these 'commands' seem to create a way to dictate to a user
what to do. This can either be used gracefully, e.g.
<a href='...location...'>Select here to explore FOO location (e.g. on your map)</a>
<a href='...navigateto...'>Select here to use FOO location as a navigation target</a>
<a href='...addtofavourite...'>Select here to add FOO location to favorite/bookmark</a>

In that case, it will waste a lot of space. Or it can be done
'under the hood', as in
<a href='...location...navigateto...addtofavourite...'>Explore FOO</a>

In that case, the user will just click on the link, and without
his/her knowledge, will have this location added to the bookmark list
and set as a target. I'm very sure the FOO location marketers would
love such functionality, but I'm also very sure that users will
stop to use any product that does such things without the user's
consent.

>UTF-8, escaped as needed, per RFC-3986 Section 2.5

Good. I'd add the following: "This makes tomtomhome: URIs compatible with
IRIs [RFC-3987].

Regards,     Martin.

>This e-mail message contains information which is confidential and may be 
>privileged. It is intended for use by the addressee only. If you are not 
>the intended addressee, we request that you notify the sender immediately 
>and delete or destroy this e-mail message and any attachment(s), without 
>copying, saving, forwarding, disclosing or using its contents in any other 
>way. TomTom N.V., TomTom International BV or any other company belonging to 
>the TomTom group of companies will not be liable for damage relating to the 
>communication by e-mail of data, documents or any other information.
>
>
>

#-#-#  Martin J. Du"rst, Assoc. Professor, Aoyama Gakuin University
#-#-#  http://www.sw.it.aoyama.ac.jp       mailto:[email-masked]

---

From: "Mark Baker" <[email-masked]>
Date: Mon, 7 May 2007 10:43:14 -0400

I agree with Martin's comments completely, especially with regard to
commands-vs-resources and vendor-specificity.

Mark.