On Mon, Mar 05, 2018 at 01:36:49PM -0800, Jonathan Nieder wrote: > > I agree that would be a lot more pleasant for adding protocol features. > > But I just worry that the stateful protocols get a lot less efficient. > > I'm having trouble coming up with an easy reproduction, but my > > recollection is that http has some nasty corner cases, because each > > round of "have" lines sent to the server has to summarize the previous > > conversation. So you can get a case where the client's requests keep > > getting bigger and bigger during the negotiation (and eventually getting > > large enough to cause problems). > > That's not so much a corner case as just how negotiation works over > http. Sure. What I meant more was "there are corner cases where it gets out of control and doesn't work". I have had to give the advice in the past "if your fetch over http doesn't work, try it over ssh". If we change the ssh protocol to be stateless, too, then that closes that escape hatch. I haven't had to give that advice for a while, though. Maybe tweaks to the parameters or just larger buffers have made the problem go away over the years? > We want to do better (e.g. see [1]) but that's a bigger change than > the initial protocol v2. > > As Brandon explained it to me, we really do want to use stateless-rpc > semantics by default, since that's just better for maintainability. > Instead of having two protocols, one that is sane and one that > struggles to hoist that into stateless-rpc, there would be one > stateless baseline plus capabilities to make use of state. Yes, I think that would be a nice end-game. It just wasn't clear to me where we'd be in the interim. -Peff