Re: [Tools-arch] Recommendation 6: Architectural model for clients

Mark Nottingham <mnot@mnot.net> Fri, 09 April 2021 04:37 UTC

Return-Path: <mnot@mnot.net>
X-Original-To: tools-arch@ietfa.amsl.com
Delivered-To: tools-arch@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3B08E3A2B95; Thu, 8 Apr 2021 21:37:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.119
X-Spam-Level:
X-Spam-Status: No, score=-2.119 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_DNSWL_BLOCKED=0.001, RCVD_IN_MSPIKE_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=mnot.net header.b=W0Fl3Vpw; dkim=pass (2048-bit key) header.d=messagingengine.com header.b=Tw4EOTTC
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 Eg3ogjtMCpkb; Thu, 8 Apr 2021 21:37:32 -0700 (PDT)
Received: from wout1-smtp.messagingengine.com (wout1-smtp.messagingengine.com [64.147.123.24]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 487C03A2B97; Thu, 8 Apr 2021 21:37:13 -0700 (PDT)
Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.west.internal (Postfix) with ESMTP id 300481647; Fri, 9 Apr 2021 00:37:12 -0400 (EDT)
Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Fri, 09 Apr 2021 00:37:12 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mnot.net; h= content-type:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; s=fm2; bh=4 EZ9vbPuIknM4nC91mIIg/1bVQ8JFmSv2zzBdbs0XFs=; b=W0Fl3VpwVyPHDhvQR /qKp1JA1Hrby71ehXeuG5gBj2EnShYMCc6kD1QzBBm4rG2/jwjzlvxvzkXud4C9b 7inLJw/f5dbTR69+bF2udp89h809BYxMGy3CLjVPfUk2Nh+nIKSImPFlfpRQ/US2 9dkrzukR7MdTnL9MLb+U1DH+Y3xbHpk/jpgjnumH/kEioikK43lQrbmUQAPIGtxE KxnbfYND+UEI98W+pEFwyc3kQzGHt2DYgXTFspUNdMLNi0HGSRNB1yM5RqQfUriV xsSc6hfAI6RuLIyI1S4QwdRiq6Fs8lOGW/56Wu3t/FIuzDQZK/7+DrqYrMfavUxB Jcdjg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm2; bh=4EZ9vbPuIknM4nC91mIIg/1bVQ8JFmSv2zzBdbs0X Fs=; b=Tw4EOTTChlnOOWVR1Vx8dtJ63NPx8a/umBIkt9G5H9JolUqYTEZFM0NPr hdV3qGTsK3D2rTCxqdVL/+SNNfI08wuM1G9AYp7HzJzt0oAC+mGiVGZ+42D3B8Ag nGq2ZNJaU0wjVEDmC3QdjuCi+7n4PaFH+kjAFc9+JjIGGJ1ccRb73RIcmb8RBBOB YP26LvKQ9egCf+/4tagTXmRDSbe8YGAktwhRrsb9lGz247OsjqOi1c6lO7HCejYt 7zbRDd7PRBB8rsBEbTTwbqfTImDN+IwS3Hme1q4XFepewFsVfx4CIlRpMHVtBIBN /DCxzdk9n4Qpk/MhlS6vl8p1yRAtg==
X-ME-Sender: <xms:9tlvYJFTCikJki_dKGCJBE8bRB6AgIxyWT5Q4VziOr4N9fDSAxA1yQ> <xme:9tlvYOX2G9Cnh0T1fgeSkxQiNw1asnmUgurdkUhhc0zB6WEh3y5dbYtCzuGs3yXvv NZ8LycYpnXLYdgMDg>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrudektddgkeegucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpegtggfuhfgjfffgkfhfvffosehtqh hmtdhhtdejnecuhfhrohhmpeforghrkhcupfhothhtihhnghhhrghmuceomhhnohhtsehm nhhothdrnhgvtheqnecuggftrfgrthhtvghrnhepteefleffjeffhfehheeffeegudelgf eujedukeeigedvgeehffefvdehffeileeknecuffhomhgrihhnpehmnhhothdrnhgvthen ucfkphepudduledrudejrdduheekrddvhedunecuvehluhhsthgvrhfuihiivgeptdenuc frrghrrghmpehmrghilhhfrhhomhepmhhnohhtsehmnhhothdrnhgvth
X-ME-Proxy: <xmx:9tlvYLI1NuR3qDK-KxruBNEMPGQtrb7TKL8hxHMohAPWQq8MclNYGw> <xmx:9tlvYPE0TgDWtFibcXJ9ChFngE_v_fyWsy3jalraFHDm0c8BnmRRLQ> <xmx:9tlvYPXUTG3Cu9xKw_2AmF-WbmIIx1VvDaQR7t7FsWA-oFAmHvpYqA> <xmx:99lvYMirX378KNzjRyd4qj4zLN8Cpih_thuhPK2VpMajrx-4arBIuQ>
Received: from [192.168.7.30] (119-17-158-251.77119e.mel.static.aussiebb.net [119.17.158.251]) by mail.messagingengine.com (Postfix) with ESMTPA id 1364E240057; Fri, 9 Apr 2021 00:37:09 -0400 (EDT)
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.60.0.2.21\))
From: Mark Nottingham <mnot@mnot.net>
In-Reply-To: <303C8EC5-1D35-48A6-A69E-667491EC4972@ietf.org>
Date: Fri, 09 Apr 2021 14:37:07 +1000
Cc: tools-arch@ietf.org
Content-Transfer-Encoding: quoted-printable
Message-Id: <72E3450F-0E88-46C4-B735-D6693C475BCB@mnot.net>
References: <303C8EC5-1D35-48A6-A69E-667491EC4972@ietf.org>
To: Jay Daley <jay@ietf.org>
X-Mailer: Apple Mail (2.3654.60.0.2.21)
Archived-At: <https://mailarchive.ietf.org/arch/msg/tools-arch/bb5YIM906YNfa4gNc4fKiyvj_EQ>
Subject: Re: [Tools-arch] Recommendation 6: Architectural model for clients
X-BeenThere: tools-arch@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Tools Architecture and Strategy Team <tools-arch.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tools-arch>, <mailto:tools-arch-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tools-arch/>
List-Post: <mailto:tools-arch@ietf.org>
List-Help: <mailto:tools-arch-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tools-arch>, <mailto:tools-arch-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 09 Apr 2021 04:37:37 -0000

Hi Jay,

> On 9 Apr 2021, at 11:12 am, Jay Daley <jay@ietf.org> wrote:
> 
> =  Recommendation
> 
> Recommendation 6:  This survey has identified four broad categories of client that are in use: Editor, Build System, Web Service and Command Line Tool; and four broad categories of functionality provided by the tools: Editing, Boilerplate, Validation and Format Conversion.  An architectural model is needed that sits above and incorporates these categories of clients and functionality, and determines how new and existing services/tools integrate, easily and efficiently. 

I'm not sure 'architectural model' is the right terminology here. What we're seeing is different modes of access to the tools -- I think our goal is to assure that all tools a) are able to be used in each of the modes, and b) get as much leverage/common use out of the provided interfaces as possible (by standardising formats / options / etc.).


> =  Commentary
> 
> Respondents have been clear that they use the tools from a variety of clients and the current de facto interoperability model is the filesystem.  
> 
> 	• Editors directly invoke tools locally by pushing the edited content to a temporary file and then reading in the results
> 
> 	• Build systems invoke multiple tools sequentially passing the output from one to another using a filesystem
> 
> 	• Using a web service as an interactive UI to a tool with the document provided as input
> 
> 	• Direct invocation front the command line on a local document.
> 
> If these categories of clients are explicitly recognised and put on an equal footing then this leads to a big question:
> 
> Should our tools development adopt a modern paradigm for supporting a variety of clients doing the same thing, which is a single backend API with different front ends all calling that same API?

I don't understand the use of 'API' here. Are you suggesting that there is some service that runs in the network centrally to provide all tool functions? Or is this an API specific to one programming language?


> If that is to be the case then it is worthwhile considering standardising aspects of those APIs so that new tools authors do not have to start from scratch and so that clients do not need to support too many different APIs.  Such standardisation might include:
> 
> 	• The expected action of the tools
> 		• Editing - alter the existing document/fragment
> 		• Boilerplate - insert into an existing document/fragment
> 		• Validation - make no changes to the existing document/fragment but provide a set of annotations of it
> 		• Format conversion - provide an entirely new document/fragment
> 	• Fragment identification, selection, annotation etc.
> 
> This could come under a single architectural model such as::
> 
>         Clients                            API Services      
>                                                             
> ┌──────────────────────┐             ┌──────────────────────┐
> │                      │             │                      │
> │                      │             │   ┌──────────────┐   │
> │                      ├────────────▶│   │   Extract    │   │
> │                      │             │   │   Elements   │   │
> │   ┌──────────────┐   │             │   └──────────────┘   │
> │   │    Editor    │   │             │   ┌──────────────┐   │
> │   │              │   │             │   │   Insert     │   │
> │   └──────────────┘   ├────────────▶│   │   Custom or  │   │
> │   ┌──────────────┐   │             │   │ Boilerplate  │   │
> │   │    Build     │   │             │   └──────────────┘   │
> │   │    System    │   │             │   ┌──────────────┐   │
> │   └──────────────┘   │             │   │   Validate   │   │
> │   ┌──────────────┐   ├────────────▶│   │   Full or    │   │
> │   │     Web      │   │             │   │   Partial    │   │
> │   │   Service    │   │             │   └──────────────┘   │
> │   └──────────────┘   │             │   ┌──────────────┐   │
> │   ┌──────────────┐   │             │   │   Convert    │   │
> │   │   Command    │   ├────────────▶│   │   Between    │   │
> │   │  Line Tool   │   │             │   │   Formats    │   │
> │   └──────────────┘   │             │   └──────────────┘   │
> │                      │             │   ┌──────────────┐   │
> │                      ├────────────▶│   │  Datatracker │   │
> │                      │             │   │  Submission  │   │
> │                      │             │   └──────────────┘   │
> │                      │             │                      │
> └──────────────────────┘             └──────────────────────┘
> 



--
Mark Nottingham   https://www.mnot.net/