Re: [apps-discuss] Scope of RFC3986 and successor - what is a URI?

Sam Ruby <> Sun, 18 January 2015 02:53 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id 77FDA1ACD97 for <>; Sat, 17 Jan 2015 18:53:12 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001] autolearn=ham
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id u4MbeB3JP688 for <>; Sat, 17 Jan 2015 18:53:10 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id 533721A9140 for <>; Sat, 17 Jan 2015 18:53:10 -0800 (PST)
Received: from [] ([] helo=rubix) by cdptpa-oedge01 (envelope-from <>) (ecelerity r(Momo-dev:tip)) with ESMTP id 46/9F-21299-5102BB45; Sun, 18 Jan 2015 02:53:09 +0000
Received: from [] (unknown []) (using TLSv1 with cipher ECDHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: rubys) by rubix (Postfix) with ESMTPSA id A345B140A83; Sat, 17 Jan 2015 21:53:09 -0500 (EST)
Message-ID: <>
Date: Sat, 17 Jan 2015 21:53:08 -0500
From: Sam Ruby <>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0
MIME-Version: 1.0
References: <> <012001d02d91$6ec42300$> <> <018e01d02dc6$1d03b0a0$> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>, <> <>
In-Reply-To: <>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 8bit
X-Cloudmark-Score: 0
Archived-At: <>
Cc: IETF Apps Discuss <>
Subject: Re: [apps-discuss] Scope of RFC3986 and successor - what is a URI?
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: General discussion of application-layer protocols <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Sun, 18 Jan 2015 02:53:12 -0000

On 01/17/2015 08:08 PM, wrote:
> *From:* Sam Ruby <>
>  > I have trouble with the words "existing *spec-compliant*
> implementations".
>  > Either that term is meaningless, or I have yet to find one.
>  >I've taken a look at a lot of libraries that produce and consume URIs
>  >(some call them URLs, but lets not worry about that for the moment).  I
>  >have yet to find one that is spec compliant.
> Again I can only speak for the tests that you are doing on the csharp
> implementation, but the test results are far from conclusive when it
> comes to comparing against RFC 3986.  From looking at your makefile, I’m
> making a guess that you are using mono to build the csharp code.  The
> System.Uri class is actually part of the .net framework.  Currently
> there are multiple versions/editions of the .net framework in addition
> to the mono version.  Even within the Microsoft .net framework there are
> configuration settings that control URI parsing behavior

I tried Mono at first, but saw very poor results.  I then removed it 
from the makefile, and reran with Microsoft .Net and saw much improved 
results.  You can see the version I ran with here:

> You can turn on IRI compliant parsing with a global setting.
>  The
> default of this global setting was changed from false to true on the
> move from .Net 4.0 to 4.5.
> You can also configure all kinds of other behavior related to URI parsing

If you have new results or updates to the code to suggest, I'm 
interested.  My preference is GitHub pull requests, but whatever works 
for you is fine with me.

> My reason for bringing up these details is because I believe that
> declaring RFC 3986 invalid because implementations don't match its
> behavior is self-defeating.  IMHO, a spec should be a goal that
> implementations aim for, not a reflection of the behavior of an
> implementation that currently has the biggest market share.

I, too, believe that a spec should be a goal that implementations aim 
for.  I also believe that spec writers should listed to implementers.  I 
am NOT saying that that wasn't done here, but I am saying that there is 
clear evidence that a decade after RFC 3986 was published that 
implementors (with the possible exception of Microsoft?) have not 
adopted RFC 3986 as a goal.  This includes quite a number of 
implementations that make claims of compatibility.

I will say that in the case of Microsoft, they have identified the URL 
specification as one that they are considering:

They have a developer who is working on this, and he has posted feedback 
to the W3C mailing list.

> Having said all this, I will try and run your tests on various versions
> of Microsoft’s .net framework and see how much the results deviate.  I
> did try running your C# tests, but they are based on a JSON file that I
> believe gets created by some javascript that I didn’t find.  My js
> skills are less than stellar!

I'll make it easier for you.  You can find the json file you need here:

> Darrel

- Sam Ruby