What a reference implementation is

Mukund Sivaraman <muks@mukund.org> Sat, 03 June 2023 12:11 UTC

Return-Path: <muks@mukund.org>
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 722E2C14CE54 for <ietf@ietfa.amsl.com>; Sat, 3 Jun 2023 05:11:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level:
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=mukund.org
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id bsKV9QBSxRnK for <ietf@ietfa.amsl.com>; Sat, 3 Jun 2023 05:11:27 -0700 (PDT)
Received: from mx.mukund.org (mx.mukund.org [188.40.188.216]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D9528C14F6EC for <ietf@ietf.org>; Sat, 3 Jun 2023 05:11:25 -0700 (PDT)
Date: Sat, 03 Jun 2023 20:11:19 +0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mukund.org; s=mail; t=1685794282; bh=Fj/fAByhE1U13RCYLgDFlycizUYwUr7YSSzHkRQaql8=; h=Date:From:To:Subject:From; b=hiV1FQTNrv+rsPqtDn/u/uTf47+6aZtFO9iWbGUZ+lQUHSTJXmFVK4JTSUTrfhQ93 337ikMjZPmbAmz4XyKKpmzqKlO/MknnQE4QJlTmEx+OvhqcHoSod9+sjeIUdsKJTED 84QfqMz07O9z2RB49j3haQ3uA9LG0mGeceaJxfl0lTtmGnPLlqm8RbXmWScy9qmebN bw7Qk7Lmlv5VZU3BmRcE2E0emM4uIUdoDgdRDezpUJO8qRKWdUIjeFv5cO12Mielvz L1lrhgt9xf5lvGQNZe//tMc9xz2TswVp84YHzv+PFHZ2qw1g3lY2S++As7fMDYG9N1 gK8r3CTELZjsg==
From: Mukund Sivaraman <muks@mukund.org>
To: ietf@ietf.org
Subject: What a reference implementation is
Message-ID: <ZHst588r4n3FpfF9@w2>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="m2KsTlVggTgCj2NW"
Content-Disposition: inline
Archived-At: <https://mailarchive.ietf.org/arch/msg/ietf/GFW8Au_RDbhpnvZ3jCs5poaG3vA>
X-BeenThere: ietf@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: "IETF-Discussion. This is the most general IETF mailing list, intended for discussion of technical, procedural, operational, and other topics for which no dedicated mailing lists exist." <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: Sat, 03 Jun 2023 12:11:31 -0000

Recently, a colleague made a statement about a software distribution
being "the reference implementation" for a protocol.

My understanding of what a "reference implementation" is, comes from an
old document by Tomasz Mrugalski and David Hankins as part of the
ISC-DHCP software distribution which says:

> 2.  Definition: Reference Implementation

>    ISC DHCP, much like its other cousins in ISC software, is self-
>    described as a 'Reference Implementation.'  There has been a great
>    deal of confusion about this term.  Some people seem to think that
>    this term applies to any software that once passed a piece of
>    reference material on its way to market (but may do quite a lot of
>    things that aren't described in any reference, or may choose to
>    ignore the reference it saw entirely).  Other folks get confused by
>    the word 'reference' and understand that to mean that there is some
>    special status applied to the software - that the software itself is
>    the reference by which all other software is measured.  Something
>    along the lines of being "The DHCP Protocol's Reference Clock," it is
>    supposed.
   
>    The truth is actually quite a lot simpler.  Reference implementations
>    are software packages which were written to behave precisely as
>    appears in reference material.  They are written "to match
>    reference."

>    If the software has a behaviour that manifests itself externally
>    (whether it be something as simple as the 'wire format' or something
>    higher level, such as a complicated behaviour that arises from
>    multiple message exchanges), that behaviour must be found in a
>    reference document.

>    Anything else is a bug, the only question is whether the bug is in
>    reference or software (failing to implement the reference).

>    This means:
   
>    o  To produce new externally-visible behaviour, one must first
>       provide a reference.
   
>    o  Before changing externally visible behaviour to work around simple
>       incompatibilities in any other implementation, one must first
>       provide a reference.
   
>    That is the lofty goal, at any rate.  It's well understood that,
>    especially because the ISC DHCP Software package has not always been
>    held to this standard (but not entirely due to it), there are many
>    non-referenced behaviours within ISC DHCP.
   
>    The primary goal of reference implementation is to prove the
>    reference material.  If the reference material is good, then you
>    should be able to sit down and write a program that implements the
>    reference, to the word, and come to an implementation that is
>    distinguishable from others in the details, but not in the facts of
>    operating the protocol.  This means that there is no need for
>    'special knowledge' to work around arcane problems that were left
>    undocumented.  No secret handshakes need to be learned to be imparted
>    with the necessary "real documentation".
   
In this definition, there can be more than one reference implementation,
and not a singleton "the reference implementation".

As this phrase is regularly used to refer to protocol implementations,
is there a normative definition published somewhere in the RFCs about
what constitutes a reference implementation?

		Mukund