Make a webapp framework/ecosystem as awesome as R's Shiny: a challenge to Julia's community

visualization

#6

I do think this post serves as a reminder to me on what I miss in the r world. One day I might actually start making something like it.

Also I am not sure if everyone is aware of how nicely shinyapps.io is set up. Publish an app in 5mins quite impressive. Perhaps an area worthy of investment.


#7

This is still slowly ticking along, it feels a bit circular as an interface generator needs a decent ui itself, which it isn’t yet generating fully automatically :smile:
Some table specs


#8

Agreed. Especially when the same people who are working on plotting (and getting complaints) and working on 0.7 (and getting complaints) and working on the data ecosystem (and getting complaints) are generally all the same people.

Although I guess I’m part of the R community, the R community and MATLAB communities trying Julia are really starting to get aggravating here with the constant complaints. Be a part of the solution.


#9

I think Julia is actually in pretty good shape on the data-driven web app front despite not having something like Shiny or Plotly’s Dash. We now have several different ways (mux, JuliaWebAPI, pages.jl, http.jl / joseki.jl) you can build and deploy julia-based APIs in just a few minutes.

We don’t have a fancy interface that magically loads bootstrap, builds a dropdown, and displays static images for you, but I think that part is only useful in very nice applications. Most of the time people will want to build a real interface in React, Angular, etc. Rather than focusing on creating a Julia version of Shiny I would suggest longer-term goals like improving julia to webasm transpiling (demo that uses Tom Short’s ExportWebAssembly.jl here).


#10

I guess WebbApp and any other GUI thing should not be the focus of Julia for right now. Performance is the selling point.


#11

There was a lengthy discussion on this several months ago:


#12

Ill make you a julia dash app for $150/hr :wink:


#13

FWIW, you could build almost exactly this app in 15 minutes, though it wouldn’t look as nice. Use Jupyter notebooks (can be configured to be publicly accessible) + Plots.jl for the plots (with plotlyjs for bonus interactivity) + Interact.jl

@manipulate for language in ["Julia", "R", ...] plot(...) end


#14

Nice. Is there a way to publish it as well?


#15

binder?


example: ligo’s notebook


#16

Performance certainly is a selling point, but if Julia wants to broaden its appeal beyond its core audience, web developers outnumber (data)scientists by a huge margin.


#17

You can always have a wider appeal, but it’s better to just have good support for your target audience. Sure, scientific computing is a smaller audience (data science, still part of Julia’s core, is much larger but still no comparison to webdev), but if it can be a good tool for this domain then it will have staying power.


#18

IMHO, while it’s nice to to have Julia everywhere, the web has pretty much settled in JavaScript. I think it would be more appealing to integrate than dominate.

In scientific/numerical computing or data science, dominate! :smiley:


#19

Well, maybe at the moment, but I think that may be mostly because it’s the only game in town currently (nothing else just runs on any browser), but from what I understand, WebAssembly support will be in all of the major browsers, so if Julia can be made to run well in that environment, it could really open a lot of doors for Julia on the web.


#20

Exactly. I hinted at this here Can the two language problem ever be solved for GUI programming. Julia would fit nicely in the webassembly ecosystem since wasm is based on LLVM and so is Julia. Either you wait for wasm to gain support for GC and exceptions (and threads) or the Julia implementers implement that themselves like Microsoft did by compiling the Julia runtime itself to wasm. SIMD support is also proposed so that would make it interesting for fast graphics and for running (parts of) scientific computations in the browser itself rather than on the server (e.g. face recognition, object recognition,…)

I have been digging a little deeper into wasm recently and viewed some presentations and demos and I must say the demos look really impressive. This really is a game changer and for me it’s the future of the web. Wasm really is going to blur the lines between desktop, mobile and web apps.

BTW: wasm is already supported by all the major browsers.


#21

Nice. Is there a way to publish it as well?

if instead of using Interact you did using InteractNext, Mux [1]

You can serve it as a web server:

ui = @manipulate for language in ["Julia", "R", ...]
    plot(...)
end
webio_serve(page("/", req -> ui))

[1] Pkg.clone("https://github.com/JuliaGizmos/InteractNext.jl.git"); Pkg.checkout("WebIO") – I’ve just tagged the WebIO fix needed for this.


#22

Has anyone tried getting appmode in Jupyter working with Julia?

This would be a nice step towards building shiny apps.


An example binder is below:


#23

Just following up. A precursor to a dashboard app can be seen at:

juliatetris.com

This combines WebIO and Binder (using the appmode described above). The binder repo is available at:


Putting it together,

@xiaodai, what do you think is still needed to get you there?


#24

Ok, so no more bullshit! I actually made a Julia dash app relatively quickly. See:

Julia Dash Binder – Tetris Challenge

You should now truly be in a good spot for forking this project and making your own.


As an aside, I think Julia would greatly benefit from package developers adopting a binder standard.

Exploring a package’s functionality without downloading it is usually one of the few perks reserved for javascript.


Can I build webpages and especially dashboards in Julia
#25

That’s very interesting! Did you also try something like Mux or HTTP.jl to serve a WebIO app?