Maciej Stachowiak wrote:
>
> On May 3, 2010, at 1:31 PM, Simon Pieters wrote:
>
>>
>> Hi, this is my first email to this list. I just wanted to give a
>> heads-up that we're implementing the latest draft at
>>
http://www.whatwg.org/specs/web-apps/current-...
>> -- not -75.
>
> WebKit's implementation is in the process of being updated to the latest
> protocol draft. I believe this is the only browser-hosted implementation
> to have shipped so far (in Chrome). I don't think there is any interest
> in keeping it -75 compatible instead of continuing to update it to the
> latest. As far as I know, all browser-hosted client implementations are
> targeting the latest version, not -75, even Chrome which has already
> shipped -75 support.
>
> Therefore I doubt Greg's argument that -75 is a better starting point
> because of existing implementations.
That is an entirely browser-centric view of existing implementations.
There are also 16 server implementations (according to wikipeadia).
Unfortunately the whatwg do not appear to consider server
implementations to be important, since when I brought this up
on the #whatwg IRC I was told:
+ server implementations are simple, so they are simple to change
+ servers are no good without clients, so you have to follow
the client implementations.
I assume that there are also intermediary developers who are
looking at websockets as it is implemented in current clients
and servers.
The problem with -76 is not that it does not contain some good
improvements. It is that it is the product of a process that
is exceedingly difficult for implementations to follow. Basically
Ian put's into the draft his ideas, then we debate them, then
if we manage to convince him of changes, those go into the draft,
but along with other new speculative ideas from Ian.
That is an impossible process for implementations to follow, as
you don't know if something in the document is just an idea or
something for which there is consensus. Even the existence
of -76 is hard to follow - it looks like a version of an IETF
draft, but it has not been submitted. So it is only a
proposed-76 and has no status at the IETF.
The idea of starting the IETF process with 75 is that we can
first debate the changes and only once rough consensus is
achieved do they go into the draft. Implementations can then
follow the drafts with knowledge that they are more likely not to
have to change again.
I'm not arguing against change, I'm arguing for a process to
manage change.> I also think -76 and its successors move in the right direction on
> http-compatibility of the handshake, to make it more practical to
> implement WebSocket servers hosted inside an http server. While not
> everything in it has full consensus, I don't see how reversing the
> progress so far would be helpful.
It is the responsibility of an IETF editor to only put into a draft
text that has rough consensus. 76 will only exist once it is
submitted to the IETF, and to do so, the editor must obtain
a rough consensus for the changes.
There are some good changes in the proposed-76, but there are also
changes that are against the HTTP compliance requirements that do
have some consensus:
+ Sending random bytes after the upgrade request, but before
a 101 has been received, will prevent a HTTP server using the
HTTP connection should the upgrade not be accepted. This will
mean an extra RTT when websockets is not supported. It also
rules out any usage of HTTP authentication, redirection etc.
+ while the ordering of headers has been made arbitrary, there
is not a restriction on the headers that can be sent in a
handshake.
The changes in the proposed-76 do not need to be reversed. They
need to be discussed and accepted into an IETF draft.
For example, I was discussing with hixie, the possibility of
only having random bytes sent after the response (and not
after the request). This should keep the connection
HTTP compliant before the upgrade, will not involve an
extra RTT and will possibly have the fail fast semantics that
Hixie wants to achieve by sending non HTTP messages.
So by discussing/refining the ideas prior to the draft
being updated, we might be able to achieve some consensus
prior to many many man hours being consumed implementing
non consensus ideas.
regards