Prefer-Push, a HTTP extension.

Evert Pot <me@evertpot.com> Mon, 19 November 2018 04:31 UTC

Return-Path: <ietf-http-wg-request+bounce-httpbisa-archive-bis2juki=lists.ie@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CD56D12D4EF for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Sun, 18 Nov 2018 20:31:02 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.752
X-Spam-Level:
X-Spam-Status: No, score=-2.752 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, MAILING_LIST_MULTI=-1, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=evertpot.com header.b=aDFQ0RNF; dkim=pass (2048-bit key) header.d=messagingengine.com header.b=vrB3eAgP
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 cYJF1eUgICSW for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Sun, 18 Nov 2018 20:31:01 -0800 (PST)
Received: from frink.w3.org (frink.w3.org [IPv6:2603:400a:ffff:804:801e:34:0:38]) (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 0B45E130DBE for <httpbisa-archive-bis2Juki@lists.ietf.org>; Sun, 18 Nov 2018 20:31:00 -0800 (PST)
Received: from lists by frink.w3.org with local (Exim 4.89) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1gOb9x-0003SD-EE for ietf-http-wg-dist@listhub.w3.org; Mon, 19 Nov 2018 04:27:41 +0000
Resent-Date: Mon, 19 Nov 2018 04:27:41 +0000
Resent-Message-Id: <E1gOb9x-0003SD-EE@frink.w3.org>
Received: from mimas.w3.org ([2603:400a:ffff:804:801e:34:0:4f]) by frink.w3.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from <me@evertpot.com>) id 1gOb9u-0003RV-Bp for ietf-http-wg@listhub.w3.org; Mon, 19 Nov 2018 04:27:38 +0000
Received: from out4-smtp.messagingengine.com ([66.111.4.28]) by mimas.w3.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from <me@evertpot.com>) id 1gOb9t-00037w-0Q for ietf-http-wg@w3.org; Mon, 19 Nov 2018 04:27:38 +0000
Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.nyi.internal (Postfix) with ESMTP id 421E421964 for <ietf-http-wg@w3.org>; Sun, 18 Nov 2018 23:27:16 -0500 (EST)
Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Sun, 18 Nov 2018 23:27:16 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=evertpot.com; h= from:subject:to:message-id:date:mime-version:content-type :content-transfer-encoding; s=mesmtp; bh=siLQ9iUM/bfY5oCecrzK8gv XkErAG5DFV3bfKNfVOOU=; b=aDFQ0RNFpz9dyrP4rBVagcXUdDpzQPtKyjc4+3O UJBNE7NzZDWBMkd4s8s8dJjXARM6QneXJzXh+v5yilWjmZ8VXb5u7AY4xfJlSQlz nAdqGig1s+OGFhiOra0pVMfTLbs/RugaV/DWz/1JpoRPlf7Obx44OSi2TknWobvp o8hw=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:message-id:mime-version:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=siLQ9i UM/bfY5oCecrzK8gvXkErAG5DFV3bfKNfVOOU=; b=vrB3eAgPbt3YW9CCtwvWd0 DlLCfgiU/8NNrgL1mF2ewRdSIz4nKawM0ciYMQGwCPkymlanyU7CX5fJResdhUQf on2LHs4BHl3jMzBOB8X60b6hPmhoqgWxTiUSGClV4XULh7KICqraWR+t4uuRkXHi TPcDqP/jiGMyMYw7drPMTePPuHBLp1WY07y8KIXCBDwtrz8GL/zVIrcC6S+N6vRt qPR53fgJWy2vJ3XqEQx1ArVg2DK26gD7qRzanP02NFwccQDU6/tOcwnhlJ0/boCb XWqa2TtDt22WW6BsaBzRAiCJDPalXau2RRxIVYZUCX4CAMb+CmOS/egY4+7Ddl/A ==
X-ME-Sender: <xms:ozvyW_xQex3wDpAJD4jHmD6vHXdPvhGcUI-96492D4uNxCk-EcFVnw>
X-ME-Proxy: <xmx:ozvyWzlV1My3tE10-1XJeAgSGemg6cWGxqOGYJk5x1N59q8ij3JgIQ> <xmx:ozvyW7JqHZewMcWKBBtRRz_HYpaP9cNDcpfyfMPJzK576TDvDy2eaw> <xmx:ozvyW4wMD1k4TBIF02ljuGUaxinQuiP0EBiGt-bQsxF24KrQUQ-mbQ> <xmx:ozvyWzsXkBveVqgAieINwKcEnRUxhktutIppQoz82ufpVwp-xdc_pQ> <xmx:ozvyW3vuGvq_nvZaXjgmWbpayLpWkw5ymOIyUumAEIz-Avay1vhPpg> <xmx:pDvyW11vaAiAX5i-R9ZjVdAXyjA3dbCOrxXuBgp9fOczpCK0XmRlKA>
Received: from [192.168.0.14] (cpebc4dfb72bd03-cmbc4dfb72bd00.cpe.net.cable.rogers.com [99.230.141.136]) by mail.messagingengine.com (Postfix) with ESMTPA id 6C3B7E4078 for <ietf-http-wg@w3.org>; Sun, 18 Nov 2018 23:27:15 -0500 (EST)
From: Evert Pot <me@evertpot.com>
To: ietf-http-wg@w3.org
Openpgp: preference=signencrypt
Autocrypt: addr=me@evertpot.com; keydata= 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
Message-ID: <18d0e93b-67e1-cfed-5418-fd50594fc5f9@evertpot.com>
Date: Sun, 18 Nov 2018 23:27:13 -0500
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-W3C-Hub-Spam-Status: No, score=-4.8
X-W3C-Hub-Spam-Report: 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_LOW=-0.7, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, W3C_AA=-1, W3C_WL=-1
X-W3C-Scan-Sig: mimas.w3.org 1gOb9t-00037w-0Q d4fbe6632df2156e1a68ff826a79dac8
X-Original-To: ietf-http-wg@w3.org
Subject: Prefer-Push, a HTTP extension.
Archived-At: <https://www.w3.org/mid/18d0e93b-67e1-cfed-5418-fd50594fc5f9@evertpot.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/36078
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <https://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

Hi everyone,

We're a group of people collaborating on a HTTP extension. We would like
to introduce a new header that a HTTP client can use to indicate what
resources they would like to have pushed, based on a link relationship.

This might look something like the following request header:

GET /articles
Prefer-Push: item, author

or

GET /articles
Prefer: push="item, author"

We see this feature being especially useful for hypermedia-style APIs.
Many of these types of APIs have some feature to embed resources in
other resources in a way that is ignored by HTTP caches.

The work-in-progress draft can be read here:

<https://github.com/evert/push-please/>

My questions:

1. Would this group be interested in adopting this draft and bringing
   through the standards process?
2. We're having some discussions around which HTTP Header is more
   appropriate. I'm curious if anyone here has any thoughts on that. The
   main drawback is using "Prefer" is that it requires parsing a nested
   format, but it might be more semantically appropriate for HTTP.
3. Our group is mostly divided on one issue: whether this header should
   allow a client to request pushes of arbitrary depth. The cost would
   be increased complexity (thus a higher barrier to entry). I'm curious
   if anyone here has any insights that would help us make this
   decision.

Arbitrary-depth example with a custom format:

  Prefer-Push: item(author, "https://example.org/custom-rel"), icon

Example with S-expression syntax:

  Prefer: push="(item(author \"https://example.org/custom-rel\") icon)"

In each of the above cases the client request the server push:

1. The resource(s) behind the item link-relationship
   a. The resources(s) behind the author relationship (via the "item"
      link-relationship).
   b. The resource(s) behind the "https://example.org/custom-rel" (via
      the "item" link)
2. The resource(s) behind the icon relationship

Unfortunately structured-headers doesn't support data-structures of
arbitrary depth, so if we want arbitrary-depth pushes, we would need to
pick a different format. Very open to suggestions here too.

We intend to have several working implementations of this. For those
interested in discussing, most of our discussion  is happening on a
slack instance (http://slack.httpapis.com channel: #push-please).

Evert et al.