Fetch API proposal for review

87 views
Skip to first unread message

Sander Striker

unread,
Dec 12, 2019, 5:24:14 PM12/12/19
to Remote Execution APIs Working Group
Hi,

We've been iterating on the Fetch API proposal for a while now, and feel it is in a state that it is ready for broader review.

We welcome your feedback, especially when you have concerns about cases that are excluded by the design approach.

I suggest we close review on Dec 31st, so that we can get this over the line this year ;).  That is of course assuming no major concerns are raised that won't have been addressed at that point.

Cheers,

Sander

Eric Burnett

unread,
Dec 13, 2019, 5:39:15 PM12/13/19
to Sander Striker, Remote Execution APIs Working Group
Thanks especially to Sander for jumping in and co-authoring revisions to this API (it's now been through many!), and continuing to push it forward in general; and many more folk for continued ideas and feedback. I'm quite happy where it's settled, especially vs what I thought was fairly close at recent working group meetings :).

Notable changes since this was last reviewed with the group:
  (1) The API has been pared down to two concrete return types - Blob and Directory, without 'Any' protos or similar. Simple use-cases like "fetch and cache a URL" are especially clean now.
  (2) The 'Pusher' APIs are now in scope as well, so use-cases requiring key-value storage or simplified sharing amongst peers now can be accommodated via only the standard API.

+1 to your choice of Dec 31. Let's do this!

--
You received this message because you are subscribed to the Google Groups "Remote Execution APIs Working Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to remote-execution...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/remote-execution-apis/CAND%2B6xmGQCh9evDNBbePsxQVQU4%2BJfZY7mCqLUyngfdqFshN4g%40mail.gmail.com.

Jakob Buchgraber

unread,
Dec 17, 2019, 8:14:42 AM12/17/19
to Eric Burnett, Sander Striker, Remote Execution APIs Working Group
Thanks Sander, Eric as well as John for writing the original proposal and flying to BazelCon all the way from Tokyo only to push for progress on this :-).

The API proposal looks good to me. The Fetcher service is mostly identical to John's original proposal anyway. I understand that the Pusher service is motivated by BuildStream at this point?

- Jakob

Ed Baunton

unread,
Dec 17, 2019, 8:36:40 AM12/17/19
to Jakob Buchgraber, Eric Burnett, Sander Striker, Remote Execution APIs Working Group
I am also very happy with the current state of the proposal; thank you for pushing this along all.

There are a few use cases for the Pusher service: there are details on the BuildStream use case in the doc. We have an additional use case for the pusher: imagine a fetcher service that is wired up to pull from a large central repository that contains only *published* artifacts. If a user wants to perform an integration build consisting of some data that is not already in the central repository (i.e. local edits), they can push it into the CAS and associate it as a published artifact using the Pusher service. For a concrete example, in the Bazel world, I am imagining something like a workspace rule (e.g. git_repository) with a series of local patches (not published). If the patches are applied after the data has been fetched from the fetch server, the tree would need be reuploaded and reassociated with the new patches via the Pusher API.

I am not a Bazel expert but hopefully that example makes sense,

Ed

Jakob Buchgraber

unread,
Dec 17, 2019, 9:03:06 AM12/17/19
to Ed Baunton, Eric Burnett, Sander Striker, Remote Execution APIs Working Group
On Tue, Dec 17, 2019 at 2:36 PM Ed Baunton <edba...@gmail.com> wrote:
I am also very happy with the current state of the proposal; thank you for pushing this along all.

There are a few use cases for the Pusher service: there are details on the BuildStream use case in the doc. We have an additional use case for the pusher: imagine a fetcher service that is wired up to pull from a large central repository that contains only *published* artifacts. If a user wants to perform an integration build consisting of some data that is not already in the central repository (i.e. local edits), they can push it into the CAS and associate it as a published artifact using the Pusher service. For a concrete example, in the Bazel world, I am imagining something like a workspace rule (e.g. git_repository) with a series of local patches (not published). If the patches are applied after the data has been fetched from the fetch server, the tree would need be reuploaded and reassociated with the new patches via the Pusher API.

Thanks Ed. That does make sense. I think in the Bazel world we wouldn't want repo rules to write to a service. The deployment use case makes sense though.

- Jakob

Sander Striker

unread,
Jan 1, 2020, 12:00:39 AM1/1/20
to Eric Burnett, Remote Execution APIs Working Group
On Fri, Dec 13, 2019 at 11:39 PM Eric Burnett <ericb...@google.com> wrote:
+1 to your choice of Dec 31. Let's do this!

And we've arrived at the end of 2019...  I haven't seen any objections raised to moving forward at this point.  I'll be clearing out comments and changing the status later this week.

Thanks for all your patience and support.  Happy New Year!

Cheers,

Sander 

Sander Striker

unread,
Jan 22, 2020, 2:31:05 PM1/22/20
to Remote Execution APIs Working Group
Hi,

As per usual I arrived at one of the hardest problems in CS: naming things.  While adding google.api.http url template annotations to the proto, it occurred to me that a better name is perhaps the "Remote Asset API", containing a "Fetch" and a "Push" service.  That seems to be more descriptive.

Thoughts?  Objections?

I'll give it 48 hours, then I'll update the PR I've put in for the API addition and un-WIP it.

Thanks in advance!

Cheers,

Sander

Jakob Buchgraber

unread,
Jan 22, 2020, 2:42:03 PM1/22/20
to Sander Striker, Remote Execution APIs Working Group
No objections. Alternatives to consider could be

Remote Artifact API
Remote Dependency Cache API

Best,
Jakob

--
You received this message because you are subscribed to the Google Groups "Remote Execution APIs Working Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to remote-execution...@googlegroups.com.

Sander Striker

unread,
Jan 23, 2020, 2:51:49 PM1/23/20
to Remote Execution APIs Working Group
24h left on the clock.

I'm going to disqualify Remote Dependency Cache API as this API could be used for outputs as well as inputs.  I also like to think of this API as a bit stronger than Cache - at least leave it open to the implementation whether to persist forever maybe even beyond the lifetime of the origin.

The current tally:
Remote Fetch API: 0
Remote Asset API: 1 (Sander Striker)
Remote Artifact API: 1 (Erik Mavrinac)

To compare how they looks like:
https://github.com/sstriker/remote-apis/tree/remote-artifact-api

Please cast your explicit votes.

Cheers,

Sander

Steven Bergsieker

unread,
Jan 23, 2020, 2:54:11 PM1/23/20
to Sander Striker, Remote Execution APIs Working Group
Remote Asset API has my vote.

--
You received this message because you are subscribed to the Google Groups "Remote Execution APIs Working Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to remote-execution...@googlegroups.com.

Justin Wei (Mobile Infra)

unread,
Jan 23, 2020, 2:55:16 PM1/23/20
to Steven Bergsieker, Sander Striker, Remote Execution APIs Working Group

Eric Burnett

unread,
Jan 23, 2020, 3:18:51 PM1/23/20
to Justin Wei (Mobile Infra), Steven Bergsieker, Sander Striker, Remote Execution APIs Working Group
I don't feel strongly in any direction, but Asset SGTM.

Mostyn Bramley-Moore

unread,
Jan 23, 2020, 5:24:03 PM1/23/20
to Eric Burnett, Justin Wei (Mobile Infra), Steven Bergsieker, Sander Striker, Remote Execution APIs Working Group
+1 for Asset, it's easier to spell than Artifact.

-Mostyn.

Peter Ebden

unread,
Jan 24, 2020, 3:58:09 AM1/24/20
to Mostyn Bramley-Moore, Eric Burnett, Justin Wei (Mobile Infra), Steven Bergsieker, Sander Striker, Remote Execution APIs Working Group
I would be happy enough with any of them, but Asset seems like a good choice.

Darius Makovsky

unread,
Jan 24, 2020, 4:55:40 AM1/24/20
to remote-exe...@googlegroups.com
Hi Sander,

I've looked at the diffs of the protos and I think 'asset' has the advantage of being less ambiguous; I found 'artifact' confusing because in other contexts it has othere specific meanings). However I wonder if it's worth preserving the noun naming of the services eg 'Fetcher' rather than 'Fetch'. Apologies if that's already been discussed at length and ultimately either is fine provided it becomes convention.

On 23/01/2020 19:51, Sander Striker wrote:
> 24h left on the clock.
>
> I'm going to disqualify Remote Dependency Cache API as this API could be used
> for outputs as well as inputs. I also like to think of this API as a bit
> stronger than Cache - at least leave it open to the implementation whether to
> persist forever maybe even beyond the lifetime of the origin.
>
> The current tally:
> Remote Fetch API: 0
> Remote Asset API: 1 (Sander Striker)
> Remote Artifact API: 1 (Erik Mavrinac)
>
> To compare how they looks like:
> https://github.com/sstriker/remote-apis/tree/remote-fetch-api
> https://github.com/sstriker/remote-apis/tree/remote-asset-api
> https://github.com/sstriker/remote-apis/tree/remote-artifact-api
>
> Please cast your explicit votes.
>
> Cheers,
>
> Sander
>


--
Best Regards,
Darius


For Codethink's privacy-policy please see https://www.codethink.co.uk/privacy.html

Sander Striker

unread,
Jan 24, 2020, 2:48:12 PM1/24/20
to Remote Execution APIs Working Group, John Millikin, Eric Burnett
I think it's clear enough to call it.  The "Remote Asset API" it is.   #112 is now up to date, and in anticipation of landing.  Those with karma to make this happen, please have a look.

Have a great weekend!

Cheers,

Sander
Reply all
Reply to author
Forward
0 new messages