JuliaGizmos / Blink.jl

Web-based GUIs for Julia
Other
355 stars 74 forks source link

remove dependency on WebSockets #295

Closed anj00 closed 1 year ago

anj00 commented 1 year ago

As HTTP package has support for web sockets now and the actual package WebSockets is having hard time to keep up with HTTP updates, why not simplify dependency chain

pdeffebach commented 1 year ago

@pfitzseb Would it be possible to take a look at this PR? The ecosystem seems stuck right now with Websockets and Mux not being updated.

anj00 commented 1 year ago

Although this is a necessary step in the right direction. I realized that the ecosystem is having more dependencies. So far I discovered

  1. WebIO has dependency on Blink in the test code and Blink has dependency on WebIO. In general, this is a great idea to test agains your users, but in precisly this situation this creates a deadlock. So they are locked here and cannot be updated. Maybe there is a chance to convince WebIO folks to disable Blink tests while this update is happening. Release a new version and see if that will work for Blink (I have a version of WebIO locally which works with latest HTTP. it is a matter of proposing such a way forward)
  2. JSExpr (pre 1.0 branch) has dependency on WebIO. And blink depend on it. 1.0 branch of JSExpr doesn't have dependency on WebIO. So we are locked here. But 1.0 JSExpr is such a major API change. It will take a while to iron out all the bugs (I spent a fair bit of time trying to make latest JSExpr work with Blink. I think I know what is needed. almost all tests are passing. But again, it is such a major change. Not sure all the corner cases are taken care of). Maybe there is a way to convince JS a. make a 0.5.xx without WebIO dependency. this will break several tests in Blink. But I have code locally which will make blink to pass the tests. b. (much longer path). make WebIO 1.0 working for Blink/WebIO. but, again this might take a while.
anj00 commented 1 year ago

Actually did take a fresh look at the situation. The path for migration is actually bit simpler

  1. update WebSockets to latest HTTP. I have contributed a bit and good people at Websockets did cleanup and the 1.6.0 release (https://github.com/JuliaWeb/WebSockets.jl/pull/182). Technically that should be 1.5.xx since the interface didn't change. So we have 1.6.0
  2. update WebIO to latest WebSockets. I did PR here: https://github.com/JuliaGizmos/WebIO.jl/pull/503
  3. Get rid of Websockts and switch directly to HTTP AND move to latest Mux in Blink. this PR.

Above setup passes all the tests for me locally (Windows) and has the latest HTTP so should be unblocking everyone

pfitzseb commented 1 year ago

Thanks!

pdeffebach commented 1 year ago

Thanks! I think this combined with https://github.com/JuliaGizmos/WebIO.jl/pull/503 fixed the problems in https://github.com/pdeffebach/FloatingTableView.jl/issues/29 in FloatingTableView.jl.

Is the next step to make a flurry of releases so everything can sync up?

pdeffebach commented 1 year ago

@pfitzseb Bumping this. What do I need to do so that FloatingTableView.jl lets people use the latest version of Plots.jl?

pfitzseb commented 1 year ago

Doesn't that just work? I tagged releases for all relevant packages, as far as I'm aware.