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
- What a reference implementation is Mukund Sivaraman
- Re: What a reference implementation is Salz, Rich
- Re: What a reference implementation is Joel Halpern
- Re: What a reference implementation is touch@strayalpha.com
- Re: What a reference implementation is Brian E Carpenter
- Re: What a reference implementation is Phillip Hallam-Baker
- Re: What a reference implementation is Phillip Hallam-Baker