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

Jay Daley <jay@ietf.org> Fri, 09 April 2021 05:10 UTC

Return-Path: <jay@ietf.org>
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 EFB5F3A2C95 for <tools-arch@ietfa.amsl.com>; Thu, 8 Apr 2021 22:10:57 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Level:
X-Spam-Status: No, score=-1.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, MIME_QP_LONG_LINE=0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
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 Sku_EiFqFE_O; Thu, 8 Apr 2021 22:10:53 -0700 (PDT)
Received: from [192.168.1.101] (unknown [158.140.230.105]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPSA id 2E3073A2C94; Thu, 8 Apr 2021 22:10:53 -0700 (PDT)
Content-Type: multipart/alternative; boundary="Apple-Mail-10A6DCA5-6C9B-40C2-A0CB-79CD227581A9"
Content-Transfer-Encoding: 7bit
From: Jay Daley <jay@ietf.org>
Mime-Version: 1.0 (1.0)
Date: Fri, 09 Apr 2021 17:10:46 +1200
Message-Id: <898A21CE-AA80-4AA9-AAC8-7230C27ABC79@ietf.org>
References: <72E3450F-0E88-46C4-B735-D6693C475BCB@mnot.net>
Cc: tools-arch@ietf.org
In-Reply-To: <72E3450F-0E88-46C4-B735-D6693C475BCB@mnot.net>
To: Mark Nottingham <mnot@mnot.net>
X-Mailer: iPad Mail (18D70)
Archived-At: <https://mailarchive.ietf.org/arch/msg/tools-arch/V-r7Vm6aJbm0p4n3hTdnswIZVp4>
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 05:10:58 -0000


> On 9/04/2021, at 4:37 PM, Mark Nottingham <mnot@mnot.net> wrote:
> 
> 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.).

I’m happy to use your phrase ‘modes of access’ as that’s better for understanding one part of this. By architectural model I meant the overall model that documents both these modes and how those modes of access are supported, which is where your next question touches on. 
> 
> 
>> =  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?

The former, which I personally think is the right way to go about it, with various clients to those central APIs to support the different modes above.  However, I know that Robert for one has a different view. 

Jay

-- 
Jay Daley
IETF Executive Director

> 
> 
>> 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/
>