Re: [Taps] Potential alternatives to YANG

"Holland, Jake" <jholland@akamai.com> Wed, 17 April 2019 01:29 UTC

Return-Path: <jholland@akamai.com>
X-Original-To: taps@ietfa.amsl.com
Delivered-To: taps@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8DCC21200A2 for <taps@ietfa.amsl.com>; Tue, 16 Apr 2019 18:29:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.338
X-Spam-Level:
X-Spam-Status: No, score=-1.338 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, KHOP_DYNAMIC=1.363, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=akamai.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 45qpe8ykjnoC for <taps@ietfa.amsl.com>; Tue, 16 Apr 2019 18:29:25 -0700 (PDT)
Received: from mx0a-00190b01.pphosted.com (mx0a-00190b01.pphosted.com [IPv6:2620:100:9001:583::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 66D8C12009A for <taps@ietf.org>; Tue, 16 Apr 2019 18:29:25 -0700 (PDT)
Received: from pps.filterd (m0122333.ppops.net [127.0.0.1]) by mx0a-00190b01.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x3H1MgKI021958; Wed, 17 Apr 2019 02:29:18 +0100
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=akamai.com; h=from : to : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=jan2016.eng; bh=Q9KMgt5tHIX12XbcUQK2hbt4oXM7MsahL0krlL6hxIE=; b=o1ByR0D2dEjLNnv10y0Lgg8vwsFwKCdOfBkHaIMHZeFEdHhK7DPPoLT+NCOXYcPoxiZG ccHLxMj0vMBGT3efFI07Gb0/jsh20Asv06qG0I2Sx5mO6iLGXU0FvY5Faq5lTJeAxdR0 /fZzIBKvnpTQ/s+AW79O0mor4U8yTE/Rh/C7B6uUu+5ZZ4heaB+oSyLMGghDebCGW6+t 8OgY6DI1AKT0eLWAyKlkv8sflzuuSIZDylge8umetBcUJ6t07O5fiORFltdhmvDgiG4q W1v1dhZjibGv4jIAI0nUAu61+EmM5bSUNvGVeQ/tDXP+5CsiyQBOSu9cJPftNEQGWlPJ Eg==
Received: from prod-mail-ppoint1 (prod-mail-ppoint1.akamai.com [184.51.33.18]) by mx0a-00190b01.pphosted.com with ESMTP id 2rvvf35ts0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Apr 2019 02:29:18 +0100
Received: from pps.filterd (prod-mail-ppoint1.akamai.com [127.0.0.1]) by prod-mail-ppoint1.akamai.com (8.16.0.27/8.16.0.27) with SMTP id x3H1IISx008937; Tue, 16 Apr 2019 21:29:17 -0400
Received: from email.msg.corp.akamai.com ([172.27.25.30]) by prod-mail-ppoint1.akamai.com with ESMTP id 2rub3wgswg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 16 Apr 2019 21:29:16 -0400
Received: from USTX2EX-DAG1MB4.msg.corp.akamai.com (172.27.27.104) by ustx2ex-dag1mb5.msg.corp.akamai.com (172.27.27.105) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Tue, 16 Apr 2019 20:29:15 -0500
Received: from USTX2EX-DAG1MB4.msg.corp.akamai.com ([172.27.6.134]) by ustx2ex-dag1mb4.msg.corp.akamai.com ([172.27.6.134]) with mapi id 15.00.1473.003; Tue, 16 Apr 2019 20:29:15 -0500
From: "Holland, Jake" <jholland@akamai.com>
To: "Scharf, Michael" <Michael.Scharf@hs-esslingen.de>, "taps@ietf.org" <taps@ietf.org>
Thread-Topic: [Taps] Potential alternatives to YANG
Thread-Index: AQHU7KPeNgKrL2lPAkK8qPZrHOIzyaY+5PiQgACaJoA=
Date: Wed, 17 Apr 2019 01:29:14 +0000
Message-ID: <6CAFDA89-B6CE-4178-A0D1-78259D88F3D8@akamai.com>
References: <C130E1D0-CEDB-4999-9FF7-1D64BE5C6CCA@akamai.com> <6EC6417807D9754DA64F3087E2E2E03E2D2B54FA@rznt8114.rznt.rzdir.fht-esslingen.de>
In-Reply-To: <6EC6417807D9754DA64F3087E2E2E03E2D2B54FA@rznt8114.rznt.rzdir.fht-esslingen.de>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/10.17.1.190326
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [172.19.113.193]
Content-Type: text/plain; charset="utf-8"
Content-ID: <60F28DDFB74C6E43B171393C4063B885@akamai.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-04-17_01:, , signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1904170004
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-04-17_01:, , signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1904170005
Archived-At: <https://mailarchive.ietf.org/arch/msg/taps/VEd1u4_YA9QCshHg7A-z6vE2sF8>
Subject: Re: [Taps] Potential alternatives to YANG
X-BeenThere: taps@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "IETF Transport Services \(TAPS\) Working Group" <taps.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/taps>, <mailto:taps-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/taps/>
List-Post: <mailto:taps@ietf.org>
List-Help: <mailto:taps-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/taps>, <mailto:taps-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 17 Apr 2019 01:29:26 -0000

Hi Michael,

This response leads me to believe maybe we aren't fully understanding each other's
positions, and are perhaps talking past each other.

Maybe I haven't been clear enough explaining my position:
My claim is that the data store for networking-specific configuration and
operational state is what's most worth modeling as part of the TAPS effort.
(And probably NOT the calls in the API itself.)

Do you think that captures our disconnect, or do you think it's something else?

If it does roughly capture the disconnect, a couple of follow-up questions:
- do you disagree with this position?
- do you think that if you became convinced of this position, that YANG would
  be clearly preferred to the other systems you've pointed out?

I'm happy to discuss further (if needed) once we've nailed down what exactly needs
better explanation and consensus, but I didn't want to get too sidetracked if I've
misunderstood where we disagree.

Thanks and regards,
Jake

On 2019-04-16, 07:35, "Scharf, Michael" <Michael.Scharf@hs-esslingen.de> wrote:

    Hi Jake,
    
    I certainly agree that YANG has a lot of benefits and I will not argue against using it.
    
    I just observe that for modeling APIs, instead of modeling data stores for configuration and operational state in network elements, there are *many* other choices for language-independent API descriptions with excellent software tooling support. I should maybe have mentioned more explicitly Interface Definition Languages (IDLs), such as the ones listed on https://en.wikipedia.org/wiki/Interface_description_language.
    
    Note that both OpenAPI/Swagger and protobuf are listed on this page. And, well, YANG is not listed on that page... Of course, that may be a mistake of the Wikipedia page. But I believe it somewhat correlates with the knowledge of many software developers.
    
    Thanks
    
    Michael
    
    
    > -----Original Message-----
    > From: Holland, Jake <jholland@akamai.com>
    > Sent: Saturday, April 6, 2019 8:09 PM
    > To: Scharf, Michael <Michael.Scharf@hs-esslingen.de>; taps@ietf.org
    > Subject: Re: [Taps] Potential alternatives to YANG
    > 
    > Hi Michael,
    > 
    > I took a look at these, and thought a bit about our follow-up conversation
    > after the meeting.
    > 
    > If I understand correctly, the suggestion here is to consider some alternative
    > toolchains focused more on generating and working with APIs, rather than
    > networking configuration, is that correct?
    > 
    > I have a couple of points of response:
    > 
    > 1. I think in my slides, I listed 5 points with 6 sub-points about the benefits
    > of YANG (including the benefits of a standardized config format, and the
    > benefits of YANG specifically).
    > 
    > As far as I can see, tools like this might do a better job on one of the
    > sub-points (API generation), but provide little or no support that speak to
    > any of the other points and sub-points.
    > 
    > 2. I also think standardizing on a toolchain like one of these would work
    > against some of the other major goals of TAPS, particularly allowing
    > implementations to use language-idiomatic constructs for the actual
    > API provided by the implementation.
    > 
    > In short, I think these tools work at the wrong layer of abstraction for what
    > TAPS is trying to accomplish, since they seem to focus on the specifics of
    > the calls in the API boundary.  By contrast, a YANG-based approach mainly
    > addresses the data that passes across the API boundary, while leaving
    > abstract
    > the specifics of the API.
    > 
    > 
    > For particular implementations I think some of these tools would be really
    > valuable, but I think the choice of which one works best for a particular
    > implementation is much like the programming language choice, and best left
    > to the implementors who are going to use it.
    > 
    > So in my opinion, trying to standardize (in TAPS) a concrete API with tools
    > like the suggested ones would be a step in the wrong direction.
    > 
    > Thanks for clarifying the suggestion, and I hope that explains my position
    > on it.  I'm planning nothing more about following up on this, so please
    > let me know if you think I've misunderstood something important about the
    > suggestion or the tools you mentioned.
    > 
    > Regards,
    > Jake
    > 
    > On 2019-03-29, 04:53, "Scharf, Michael" <Michael.Scharf@hs-esslingen.de>
    > wrote:
    > 
    >     As mentioned on the mic: There are quite a number of solutions to
    > "rigorously" specify APIs. Some of these general-purpose techniques are
    > IMHO also used for configuration/provisioning tasks in the networking
    > industry, i.e., as alternative to YANG.
    > 
    >     In a former life, I had quite some discussions on the role of YANG as
    > compared to, for instance:
    > 
    >     * swagger.io (https://swagger.io/)
    > 
    >     * gRPC, gNMI and protocol buffers (see e.g. draft-openconfig-rtgwg-gnmi-
    > spec-01 in the IETF)
    > 
    >     In both cases there is are tooling eco-system that are IMHO widely used by
    > app developers (and often preferred over YANG). The YANG tooling that
    > exists in industry, e.g., for code auto-generation, is quite specific to network
    > management, as far as I can tell.
    > 
    >     To me, whether to develop models in YANG or in other data modeling
    > languages depends a lot on the use case and the target software developer
    > community. Of course, in the RTG and OPS area YANG is the default data
    > modeling language.
    > 
    >     Michael
    >     (as somebody who attends RTG and OPS working groups)
    > 
    >     _______________________________________________
    >     Taps mailing list
    >     Taps@ietf.org
    >     https://www.ietf.org/mailman/listinfo/taps
    >