Re: [hybi] Protocol simplicity and the "amateur programmer" standard

Mike Belshe <mike@belshe.com> Mon, 26 July 2010 04:07 UTC

Return-Path: <mike@belshe.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 8C8423A6992 for <hybi@core3.amsl.com>; Sun, 25 Jul 2010 21:07:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.976
X-Spam-Level:
X-Spam-Status: No, score=-1.976 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001]
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 JjX3KE9ZX+Xb for <hybi@core3.amsl.com>; Sun, 25 Jul 2010 21:07:52 -0700 (PDT)
Received: from mail-pv0-f172.google.com (mail-pv0-f172.google.com [74.125.83.172]) by core3.amsl.com (Postfix) with ESMTP id 11A483A68FC for <hybi@ietf.org>; Sun, 25 Jul 2010 21:07:51 -0700 (PDT)
Received: by pvd12 with SMTP id 12so5958727pvd.31 for <hybi@ietf.org>; Sun, 25 Jul 2010 21:08:12 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.142.232.13 with SMTP id e13mr8421646wfh.117.1280117292555; Sun, 25 Jul 2010 21:08:12 -0700 (PDT)
Received: by 10.142.74.7 with HTTP; Sun, 25 Jul 2010 21:08:12 -0700 (PDT)
In-Reply-To: <ECF0E97F-1DA2-4662-BA48-F68B65AA8179@apple.com>
References: <ECF0E97F-1DA2-4662-BA48-F68B65AA8179@apple.com>
Date: Sun, 25 Jul 2010 21:08:12 -0700
Message-ID: <AANLkTi=mTxDSr7=mniuEWomxaMt9sy88Q5-xKrrQzXF-@mail.gmail.com>
From: Mike Belshe <mike@belshe.com>
To: Maciej Stachowiak <mjs@apple.com>
Content-Type: multipart/alternative; boundary="000e0cd28e0e7e5cc9048c4288a5"
Cc: Hybi <hybi@ietf.org>
Subject: Re: [hybi] Protocol simplicity and the "amateur programmer" standard
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: Mon, 26 Jul 2010 04:07:53 -0000

On Sun, Jul 25, 2010 at 5:43 PM, Maciej Stachowiak <mjs@apple.com> wrote:

>
> I recently had an IRC discussion with Ian Hickson about the "amateur
> programmer" standard, and what level of programmer simplicity we should
> strive for: <http://krijnhoetmer.nl/irc-logs/whatwg/20100725#l-92>.
>
> Personally, I think the "amateur programmer" standard is a misguided goal,
> for the following reasons:
>
> 1) There is no example of any protocol ever that had significant
> deployment, where even casual programmers of simple programs would regularly
> implement it from scratch. Even for fairly trivial protocols like IRC, most
> people use libraries or stock implementations. Given the lack of existing
> examples of a protocol that amateurs actually implement, it may be that it's
> fundamentally not possible to design such a thing. It would be foolish to
> try to do the impossible. And even if it is possible but no one has yet
> succeeded, it is risky to experiment like this when the stakes are high.
>
> 2) I think a large part of the complexity in implementing a protocol truly
> from scratch (with no help from libraries) is the need to use extremely
> low-level primitives like Unix system calls. Use of very low-level
> primitives like socket(), bind(), listen(), accept(), read() and select() is
> likely beyond the capabilities of a true amateur or casual programmer, even
> for the most trivial protocol. Even for those who are able to correctly use
> these kinds of primitives, they likely would prefer to use a library or
> server framework for a casual project.
>
> 3) My supporting evidence for #2 is that in the case of nearly any kind of
> programming problem, when there is a choice between building from scratch
> with very low-level primitives and using higher-level APIs, casual
> programmers almost always choose higher-level APIs. I can't think of any
> instance where it's common to do otherwise.
>
>
> Faced with these arguments, Ian proposed an alternate standard of "Keep the
> protocol as simple as possible to limit the number of bugs that professional
> programmers make." Ian thinks this is effectively equivalent to the "amateur
> programmer" standard, while I and likely many others on the list would
> expect there to be material differences.
>
> For one thing, I think it will be much easier for us to evaluate complexity
> against this standard. I don't think we have any true casual programmers on
> the list. While some active participants do not primarily do programming for
> a living, everyone here is an outlier in technical expertise, particularly
> in the ares of networking and Web technology. On the other hand, we have a
> number of people who work as implementors of network servers, networking
> libraries, and network-related middleware. It seems more sensible to me to
> pick a standard that we can directly evaluate based on the experiences of
> Working Group members. It makes more sense to me to evaluate our own
> understanding than to try to imagine what things are like for others.
>
> To sum up, would anyone object to the following as a standard for protocol
> simplicity, in place of the proposed "amateur programmer" standard:
>
> * Keep the protocol as simple as possible to limit the number of bugs that
> professional programmers make.
>

I find this statement a bit silly, because nobody wants a complex protocol
:-)

We are already striving for the simplest solution to a set of requirements.
 Nail the requirements down and we'll nail a simple solution.

Mike



>
>
> Regards,
> Maciej
> _______________________________________________
> hybi mailing list
> hybi@ietf.org
> https://www.ietf.org/mailman/listinfo/hybi
>