State of PlotlyJS and support packages

PlotlyJS seems to be unmaintained by its current (and only) maintainer @sglyon. It also relies on Blink.jl, a wrapper for Electron, where the last commit was more than one year ago and uses a version of Electron more than 2 years old. Installing Blink fails because it makes use of BinDeps, which, as far as I understand, has been abandoned.

If the original project is not maintained anymore by @sglyon, how do we proceed?

8 Likes

PlotlyJS is part of the JuliaPlots organization and thus you can ping members of that organisation to have a look at your favourite open PR or leave a message in the plotting channel of either Slack or Zulip.

4 Likes

The problem isn’t so much JuliaPlots but Blink.jl and JuliaGizmos being very light on maintenance time these days.

But for how to proceed: we need a BinaryBuilder.jl generated Electron_jll to replace the use of BinDeps in Blink.jl.

@mzaffalon if you want to contribute to fixing this problem, making Electron_jll a thing would be an amazing help to the ecosystem.

Ok I see this is already in progress, but possibly stalled? @ianshmean any comments on this?

https://github.com/JuliaPackaging/Yggdrasil/pull/4946
https://github.com/JuliaPackaging/Yggdrasil/pull/117

4 Likes

In my humble opinion, PlotlyJS is a remarkable piece of software. I taught two macroeconomic courses in the previous academic year (the undergrad course here and a master’s here) using the reactivity of Pluto and the interactivity of PlotlyJS, to students who had never had one hour of computation before. Last year, the course involved around 200 students, and I plan to use it again this year (around 300 students).

In particular, the undergrad students were thrilled about the experience of opening a notebook, plotting data, hovering over small details in a plot (using either x or y modes), zooming in/out, and so on. I was expecting trouble here, as I had never taught this kind of material to undergrads in economics. Instead, I got students fascinated by what a simple computer, a marvelous programming language, and no more than 20 packages can do for them. I am pretty sure that the kind of teaching materials the students had access to would not have been available without PlotlyJS. I should also thank @disberd for providing a workaround to make PlotlyJS a perfect match for Pluto here and here. I must confess that I tried four other plotting packages, but for the kind of teaching materials I was looking for, PlotlyJS was far more competent and versatile than the others.

So, I will be highly disappointed if PlotlyJS is pushed gradually into the department of abandonware. If that happens, I think the Julia community will also be affected somehow, either because many use the plotlyjs backend in Plots.jl to benefit from the interactivity the package allows or because they have a particular job to do (like me) in which PlotlyJS excels.

I hope @sglyon can find some spare time to allocate to the maintenance of his marvelous piece of software or that @disberd will find a way to develop the PlutoPlotly.jl package further. I can not be of much help, as my programming skills are mediocre. As a user, I must do justice to what we can achieve with a fantastic plotting package in the Julia system: PlotlyJS.

12 Likes

Seems like an issue here is blocking the build at the moment:
https://github.com/JuliaPackaging/Yggdrasil/pull/5005#issuecomment-1151520593

PlotlyJS works alternatively with ElectronDisplay, which is independent of Blink and seems to use a newer version of Electron than Blink.

For Blink an update of Electron fails because of this issue, i.e. the JS code in Blink needs adjustments. I’ll file this as an issue also at Blink.

2 Likes

Are you suggesting to abandon Blink in favour of ElectronDisplay so as not to having to maintain two distinct packages?

PlotlyJS works alternatively with ElectronDisplay

Can you explain how?

julia> using PlotlyJS,ElectronDisplay

julia> x=0:π/56:2π; plot(scatter(;x=x, y=cos.(x)), Layout(;xaxis_title="x", yaxis_title="cos(x)"))

pops up a new window

Subsequent plots will be added to the same window. Other than this I’m not aware of differences between Blink and ElectronDisplay as a display for PlotlyJS, hovering, zooming etc work also in ElectronDisplay.

Blink might be used for other things than PlotlyJS as well, but as far as it concerns users of PlotlyJS one could rather focus on maintaining ElectronDisplay instead of Blink. The PlotlyJS docs mention only Blink.jl. ElectronDisplay.jl should be added or replace Blink.jl.

4 Likes

Thanks for sharing this, looks like a very useful package.
I think the direct comparison to Blink.jl is Electron.jl, while ElectronDisplay.jl would substitute for display functionality in PlotlyJS.jl itself.

Does this get any updates? I used to use PlotlyJS and Pluto together, but now they are not compatible, due to Blink.jl dep.

You may try another package PlotlyLight, which works well in my use case. It uses the Plotly.js directly, so basically no external dependencies.

2 Likes