I understand the cost/complexity argument. But do we have any sense of the value / feature side of things? What's the implementation look like among providers? Is it exclusively HTTP or do some implement both, or just Websockets? From there, what about actual usage among users? Do the implementers see any preference on that side?
I think this a reasonable ask, but the way it is presented is heavily biased toward developer preferences. Do we have any information on the user side? -Josh On Tue, Feb 27, 2024 at 4:29 PM Ken Hu <kenhu...@gmail.com> wrote: > Hi All, > > I would like to start the discussion of making HTTP the only protocol that > Apache TinkerPop supports starting with the next major version. There are > several reasons I'm suggesting this. First, we already support both > WebSockets and HTTP in Gremlin Server which causes a maintenance burden of > having to support both. Also, I ran some tests and a streaming version of > HTTP using chunked transfer encoding performs just as well as streaming via > WebSockets so there won't be a performance loss in terms of latency. > Second, HTTP is significantly more popular so it will be easier for other > third party clients to connect to. Third, this is an opportunity to rework > the remote Transaction API which in its current form causes unnecessary > complexity in the server. This will also serve as a good opportunity to > make the connection options more similar among all the GLVs. > > I've experimented with replacing WebSockets with HTTP (both 1.1 and 2) and > noticed similar performance in most cases. For HTTP/1.1, there was some > slowdown in cases where thousands of queries with few results were issued > per second as lots of HTTP connections needed to be opened, but I feel like > this isn't a practical use case. My recommendation for now is to go with > HTTP/1.1 as it has all the features we need and it has mostly been > implemented already on the server side. > > To ease the transition, I'm suggesting that we maintain WebSockets for the > foreseeable future in the 3.x line while the 4.x line is moved to use HTTP > exclusively. This will also give more time for us to build out support for > transactions over HTTP which is the only missing feature that is supported > when using WebSockets. > > I'd like to hear any thoughts regarding this. > > Thanks, > Ken >