3. Focus on linking open standards to code, operationals, and interoperability.
Phillip Hallam-Baker <phill@hallambaker.com> Mon, 13 June 2016 16:05 UTC
Return-Path: <hallam@gmail.com>
X-Original-To: ietf@ietfa.amsl.com
Delivered-To: ietf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0332912D859 for <ietf@ietfa.amsl.com>; Mon, 13 Jun 2016 09:05:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.4
X-Spam-Level:
X-Spam-Status: No, score=-2.4 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.198, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1s65Tr7gaJS3 for <ietf@ietfa.amsl.com>; Mon, 13 Jun 2016 09:05:24 -0700 (PDT)
Received: from mail-qg0-x22e.google.com (mail-qg0-x22e.google.com [IPv6:2607:f8b0:400d:c04::22e]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BCB8F12D852 for <ietf@ietf.org>; Mon, 13 Jun 2016 09:05:23 -0700 (PDT)
Received: by mail-qg0-x22e.google.com with SMTP id l44so69442128qgd.0 for <ietf@ietf.org>; Mon, 13 Jun 2016 09:05:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:from:date:message-id:subject:to; bh=CnrGj58LoeFs6cjkxupulGJX4uxqNzinYoIAFSeMxg8=; b=VxzV226OQXDBPiCHp8o5jH1vcaeYy8ZsPXdWGGGukBeidBqzwMm1sm42nGY7GK7aew PByIKYY0a7U9yWpw6RZd/efV70jhP1ZD6jRNr8G7IgzAIvJ/CIiVVT+dGF7xM35Z72Pd WTRA3ZRaurHJqiJ1xepFOygtv7kqWkMimqFcPnTzQJd3tGNoQYUOpBx8dwcAAu6aOeMP fLSpM3RU9FCRVHu4x0WkYatloWIVMl5lfOKFbfcc8Vfky+Trq0+P4boKHUVSlr17ZVE+ ffexUDlqmmf9cVVot15rKUQd6nF0xghJOnBYDBPIy+camJMFFMusbwDCTK0YJmQCRbJ3 m+DA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:from:date:message-id:subject :to; bh=CnrGj58LoeFs6cjkxupulGJX4uxqNzinYoIAFSeMxg8=; b=l/NG6RXr9aDs5Gr5dwtdL+Ry2Uzm9MRi2iwx6drPXm0L9UjtU1Ql8NJ/91Y+pXqSHg w7SY9WQgL57nsQXuW+SP/kkdxvcC/TDrXdkOX5uKD8XLkXn6OpilQgrQne8S8QR924kf TrzU3Q/MPEBXfr062lEFRDxpHVhN3yL7Y5OJjv+7TvQ01200Fk2NbpKxX0VvRQAC4uRL VWjSow8heEPGJjIaCpIk88M19YxGsK+PYNsF+v1+YCR/WnNyxfPm0ecNf29nHTmBmnZW vpKOZQipPPJ/eKiMISP7AFE4X3pp3IiUW4TucRikr4ezUhh9aLmDCvqFC+b6BWckr0TK lgTQ==
X-Gm-Message-State: ALyK8tIVFIIOctwF3JJsqhvebe35MWck8mqiKbNwn9ONBYM2uYvnYhOk5bYauLRJx1cWWOCAIqTvvGHp7jGVRA==
X-Received: by 10.140.170.4 with SMTP id q4mr9546882qhq.30.1465833922767; Mon, 13 Jun 2016 09:05:22 -0700 (PDT)
MIME-Version: 1.0
Sender: hallam@gmail.com
Received: by 10.55.25.85 with HTTP; Mon, 13 Jun 2016 09:05:22 -0700 (PDT)
From: Phillip Hallam-Baker <phill@hallambaker.com>
Date: Mon, 13 Jun 2016 12:05:22 -0400
X-Google-Sender-Auth: Qfw8Xax9sNYbSNNpRXuFBQAvt-g
Message-ID: <CAMm+Lwi5T3Rsj6nQMOdFCRJM65o3e7Y16anWifEkNCkAu9GRBw@mail.gmail.com>
Subject: 3. Focus on linking open standards to code, operationals, and interoperability.
To: IETF Discussion Mailing List <ietf@ietf.org>
Content-Type: multipart/alternative; boundary="001a113ac09644348905352b0e93"
Archived-At: <https://mailarchive.ietf.org/arch/msg/ietf/qZDbekm4hJnLZ57DVPgn4b9NUaU>
X-BeenThere: ietf@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: IETF-Discussion <ietf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ietf>, <mailto:ietf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ietf/>
List-Post: <mailto:ietf@ietf.org>
List-Help: <mailto:ietf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ietf>, <mailto:ietf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 13 Jun 2016 16:05:26 -0000
I think trying to discuss all four topics in one thread is doomed. I want to focus on just one: 3. Focus on linking open standards to code, operationals, and interoperability. One of the reasons I have been pushing for a change in the RFC format is that putting links into specifications allows them to become more effective. In the past I have spent hours pulling schemas, code, etc. out of specifications, removing headers, footers etc.so I can feed them into tools. It isn't just a waste of time, it cripples the development process: A) Using the schemas in specifications as the basis for code becomes the exception, not the rule. B) As a result of A, fewer tools are built, tested, used. C) As a result of B, the schemas don't get exercised in running code and they don't guarantee interop. D) As a result of C the value prop decreases, reinforcing B and the cycle continues. Fixing the RFC format is in hand but we also need tools. This is what I have been working on. A complete toolset that allows a new specification, reference and production code to be developed in less than a week. I produced the following specification from scratch in three working days: https://tools.ietf.org/html/draft-hallambaker-lurk-02 And by that I mean 24 hours work, not 72. The reference section in the draft is generated from the schema. The examples in the draft are generated from running example code generated from the schema. So when you read one of my specifications you can be as certain as it is likely to get that the specification and the example are consistent. Where I would like the IETF to get to is that for new protocols we start with the expectation that there will be from the start * A specification with valid reference and examples sections * A schema that permits * Automated generation of production code in at minimum C. * Automated generation of reference code * A set of test vectors. In this context, reference code is not the same as production because reference code should be conservative about what it accepts and permissive in what it sends. In fact reference code should intentionally send malformed commands to provide test cases. Yes the tool is a bit rough and could be improved on. And at the moment it only generates specifications for application protocols that use JSON or TLS schema format and it only targets C# and C. And the example code generator has advanced somewhat ahead of the production generator. But those are fixable. The code generators and the meta-generator are all on GitHub and Sourceforge under an MIT license: https://sourceforge.net/projects/phb-build-tools/ I also have generators that build code for what I regard as 'legacy' encodings. There is an RFC822 style header parser, an FTP/SMTP/IMAP/etc style command parser and even an ASN.2 encoder. The code is believed to run on Linux and OSX under Mono. The main reason for not working on that recently is that due to the recent acquisition of Xamarin and their dotNetCore initiative, support for Linux and OSX is in a state of flux. These is now a new option that is expected to improve the situation dramatically in the very near future. The tools are implemented as command line tools and additionally on the Windows platform as VSIX extensions that are fully integrated into Visual Studio. Working this way does have obvious benefits but it also has a few constraints. One consequence of working through tools that build tools that build tools for the past 25 years is that I am used to working at a very high level of abstraction. And that means that when my high level description of how a protocol works has to start dictating very low level details of implementation, I see that as an architecture failing.
- 3. Focus on linking open standards to code, opera… Phillip Hallam-Baker