Re: [hybi] Resolving Issue 11 - Amateur programmer requirement [was: Extensibility mechanisms?]

Pieter Hintjens <ph@imatix.com> Fri, 23 July 2010 08:38 UTC

Return-Path: <pieterh@gmail.com>
X-Original-To: hybi@core3.amsl.com
Delivered-To: hybi@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 4D5E73A6834 for <hybi@core3.amsl.com>; Fri, 23 Jul 2010 01:38:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.623
X-Spam-Level:
X-Spam-Status: No, score=0.623 tagged_above=-999 required=5 tests=[BAYES_50=0.001, FM_FORGED_GMAIL=0.622]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id YXT+E505rV8d for <hybi@core3.amsl.com>; Fri, 23 Jul 2010 01:38:25 -0700 (PDT)
Received: from mail-wy0-f172.google.com (mail-wy0-f172.google.com [74.125.82.172]) by core3.amsl.com (Postfix) with ESMTP id C800B3A67DA for <hybi@ietf.org>; Fri, 23 Jul 2010 01:38:24 -0700 (PDT)
Received: by wyb40 with SMTP id 40so1428975wyb.31 for <hybi@ietf.org>; Fri, 23 Jul 2010 01:38:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:mime-version:sender:received :in-reply-to:references:from:date:x-google-sender-auth:message-id :subject:to:cc:content-type:content-transfer-encoding; bh=bevpDQ/3fsQvgRn8hq/6jZQB9aDxq0km6kkoBZ6tEf0=; b=xUMZ1f5DYfxQ8FcFv6q5FQdoN1Qlh+p+RqG8K8Jq3U1RviGoRIRYYUloPoWbJ+M02U iATJUSoPauPYVa8205TrZIUdmWr+ybao5cvzIi+fhXTNgm1etyB68mBjfm0VPAW23FlC +8idrJRReLsuNhZRrJwcy0msH/WXOTKQ5+sU8=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:from:date :x-google-sender-auth:message-id:subject:to:cc:content-type :content-transfer-encoding; b=DFvYUASsf+oWGu1MDHGYJvdhTGTtTdqNyqmUWz0mTatzVmA8Tf+nysOC0PMlFbOycL khhCE1DIxJWA1sjSpCavrfSDbC7uFcDDnrQ7Z4C752uEfaHsR6A9+QyJljgKBzp3JuWq 0kI0aIyFHKKxarVnPsTY6v5jHx4Eyfg5AeGRg=
Received: by 10.216.168.198 with SMTP id k48mr3052523wel.105.1279874321938; Fri, 23 Jul 2010 01:38:41 -0700 (PDT)
MIME-Version: 1.0
Sender: pieterh@gmail.com
Received: by 10.216.171.146 with HTTP; Fri, 23 Jul 2010 01:38:21 -0700 (PDT)
In-Reply-To: <1215617487.77672.1279854143695.JavaMail.root@cm-mail03.mozilla.org>
References: <AANLkTim=2hHLTT7s_s_qg_rejfxAPEvLJygMv5UXmqM0@mail.gmail.com> <1215617487.77672.1279854143695.JavaMail.root@cm-mail03.mozilla.org>
From: Pieter Hintjens <ph@imatix.com>
Date: Fri, 23 Jul 2010 10:38:21 +0200
X-Google-Sender-Auth: b5YKXWhFYMiJ7DC2_tS_b7wi1vE
Message-ID: <AANLkTikHFkq50E0Yy83czoPubckmK58UWYcsvi+DJrhD@mail.gmail.com>
To: Robert Sayre <rsayre@mozilla.com>
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable
Cc: hybi@ietf.org
Subject: Re: [hybi] Resolving Issue 11 - Amateur programmer requirement [was: Extensibility mechanisms?]
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/hybi>
List-Post: <mailto:hybi@ietf.org>
List-Help: <mailto:hybi-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 23 Jul 2010 08:38:26 -0000

On Fri, Jul 23, 2010 at 5:02 AM, Robert Sayre <rsayre@mozilla.com> wrote:

> Well, I'm not sure. The "amateur programmer" is a pretty terrible construct.
>
> It's unmeasurable and untestable, so it makes no sense as a requirement. The only way to find out whether hobbyists will be interested in writing servers is to finish the standard and see what they do. It's ultimately not that interesting though--many successful standards have relatively few implementations that everyone relies on.
>
> Any argument for simplicity probably has a better rationale than the needs of an imaginary "amateur programmer." Let's stick to substance.

Indeed.  That requirement by itself makes some serious unproven assumptions.

* First, that amateur programmers are somehow lacking in knowledge and
experience.  Many people program for fun, as amateurs, but with years
or decades of professional experience.  If we want to make the
protocol accessible to programmers with less than a year or so of
practical experience, let's say so explicitly.  "WebSockets must be
comprehensible for programmers with less than 12 months of
experience".

* Second, that explaining the protocol in baby steps and using
dumbed-down constructs is easier to understand, for programmers with
more or less experience.  That is patronising and makes no sense.  Are
we trying to address programmers with lower IQs rather than less
experience?  Then we should say so explicitly.  "WebSockets must be
comprehensible for programmers with IQs of 90".

* Third, that this pandering to the weak-minded correlates with
simplicity, while building a protocol for smarter programmers with
sufficient experience ("professionals", to continue this nasty use of
language), correlates to complexity.  No, simplicity comes from
reusing experience and doing it *right*, and that requires massive
experience, which is why organisations like the IETF exist.

* Fourth, that making a protocol accessible to inexperienced, less
intelligent programmers will ensure its success.  That suggests that
the successful protocols of the world were build by inexperienced
idiots, which would be insulting if it was not so obviously taken from
The Onion.  "Schoolkid (5) invents Internet 2, sells to Google for
$50bn".

I'm not sure whether it's more tragic to consider this requirement as
"serious editorial input", or as a sophisticated troll.

If the goal is to achieve wide implementation, the protocol should be
clearly written so that experienced, smart programmers can implement
it without shock or surprise, and build interoperable stacks that work
as expected.  That might make a concrete requirement.

Here are some Twitter comments I found from one (smart and
experienced) developer implementing server-side support for
WebSockets:

* "No! You idiots, do not make HTTP headers in WebSockets *unicode*
when HTTP itself is not: http://is.gd/dz13m  Protocol layers do not
need it!"
* "Putting crap between 0x00 and 0xFF characters is NOT FRAMING:
http://is.gd/dz13m  A frame has a size component so you can send
binary data."
* "Ok, if you've written forty-five (!) steps for how a *client*
connects a WebSocket then you should realize you need to redesign
something."

-Pieter