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 >
- Re: [hybi] Protocol simplicity and the "amateur p… Mike Belshe
- [hybi] Protocol simplicity and the "amateur progr… Maciej Stachowiak
- Re: [hybi] Protocol simplicity and the "amateur p… Greg Wilkins
- Re: [hybi] Protocol simplicity and the "amateur p… Willy Tarreau
- Re: [hybi] Proposed way forward for WebSockets Willy Tarreau
- Re: [hybi] Protocol simplicity and the "amateur p… James Graham
- Re: [hybi] Protocol simplicity and the "amateur p… Maciej Stachowiak
- Re: [hybi] Protocol simplicity and the "amateur p… Julian Reschke
- Re: [hybi] Protocol simplicity and the "amateur p… Ian Fette (イアンフェッティ)
- Re: [hybi] Protocol simplicity and the "amateur p… James Graham
- Re: [hybi] Protocol simplicity and the "amateur p… Micheil Smith
- Re: [hybi] Protocol simplicity and the "amateur p… Greg Wilkins
- Re: [hybi] Protocol simplicity and the "amateur p… Dave Cridland
- Re: [hybi] Protocol simplicity and the "amateur p… James Graham
- Re: [hybi] Protocol simplicity and the "amateur p… Adam Barth
- Re: [hybi] Protocol simplicity and the "amateur p… James Graham
- Re: [hybi] Protocol simplicity and the "amateur p… John Tamplin
- Re: [hybi] Adding clarification regarding future … Joe Hildebrand
- Re: [hybi] Protocol simplicity and the "amateur p… Greg Wilkins
- Re: [hybi] Protocol simplicity and the "amateur p… James Graham
- [hybi] Proposed way forward for WebSockets Ian Hickson
- Re: [hybi] Proposed way forward for WebSockets Maciej Stachowiak
- Re: [hybi] Proposed way forward for WebSockets Rob Sayre
- Re: [hybi] Proposed way forward for WebSockets Greg Wilkins
- Re: [hybi] Proposed way forward for WebSockets Michael Carter
- Re: [hybi] Proposed way forward for WebSockets Anne van Kesteren
- Re: [hybi] Proposed way forward for WebSockets Anne van Kesteren
- Re: [hybi] Proposed way forward for WebSockets John Tamplin
- Re: [hybi] Proposed way forward for WebSockets Anne van Kesteren
- [hybi] Adding clarification regarding future revi… Ian Hickson
- Re: [hybi] Proposed way forward for WebSockets Maciej Stachowiak
- Re: [hybi] Adding clarification regarding future … Simone Bordet
- Re: [hybi] Proposed way forward for WebSockets Dave Cridland
- Re: [hybi] Adding clarification regarding future … Thomson, Martin
- Re: [hybi] Proposed way forward for WebSockets gabriel montenegro
- Re: [hybi] Proposed way forward for WebSockets Thomson, Martin
- Re: [hybi] Adding clarification regarding future … Willy Tarreau
- Re: [hybi] Proposed way forward for WebSockets gabriel montenegro
- Re: [hybi] Proposed way forward for WebSockets Willy Tarreau
- Re: [hybi] Proposed way forward for WebSockets Adam Barth
- Re: [hybi] Proposed way forward for WebSockets Willy Tarreau
- Re: [hybi] Proposed way forward for WebSockets Dave Cridland
- Re: [hybi] Proposed way forward for WebSockets Anne van Kesteren
- Re: [hybi] Proposed way forward for WebSockets Lars Eggert
- Re: [hybi] Adding clarification regarding future … Pieter Hintjens
- Re: [hybi] Proposed way forward for WebSockets Greg Wilkins
- Re: [hybi] Adding clarification regarding future … Dave Cridland
- Re: [hybi] Adding clarification regarding future … Jamie Lokier
- Re: [hybi] Proposed way forward for WebSockets Jamie Lokier
- Re: [hybi] Adding clarification regarding future … Jamie Lokier
- Re: [hybi] Proposed way forward for WebSockets Jamie Lokier
- Re: [hybi] Proposed way forward for WebSockets Ian Fette (イアンフェッティ)
- Re: [hybi] Proposed way forward for WebSockets John Tamplin
- Re: [hybi] Proposed way forward for WebSockets Dave Cridland
- Re: [hybi] Proposed way forward for WebSockets Martin J. Dürst
- Re: [hybi] Proposed way forward for WebSockets Alexey Melnikov
- Re: [hybi] Proposed way forward for WebSockets Anne van Kesteren
- Re: [hybi] Proposed way forward for WebSockets Martin J. Dürst
- Re: [hybi] Proposed way forward for WebSockets Greg Wilkins
- Re: [hybi] Proposed way forward for WebSockets Anne van Kesteren