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

Sorry for reviving this old thread, but I’ve been asking that very same question on the Julia Slack, and this has led me to this thread. And the example by @sylvaticus looks tantalisingly close to the start of a good Julia equivalent to R Shiny and Dash Plotly. It looks like it mostly needs some wrapping to hide some of the technical details a data scientist does not need to know about. Is there no one interested in pursuing this further?

2 Likes

In case someone is looking at https://genieframework.github.io/Genie.jl/

1 Like

Genie is pretty heavy.

1 Like

I haven’t tried it yet, but this looked promising:
https://github.com/waralex/Dashboards.jl

Genie looks interesting, but it looks more like an alternative to Ruby on Rails, Flask or Django then what we’re looking for in this thread. In other words, it’s far too low-level to be usable by a data scientist like myself.

I’m fully convinced that it could be used as the basis for a Julia equivalent to Shiny, but it’ll need a much thicker layer of abstraction than what’s present at the moment. If I could, I would love to work on this, but I’m a data scientist, not a developer, and I’m quite new to Julia. I simply do not have the required skills.

That said, I cannot emphasise enough how much a killer app an equivalent of Shiny/Dash would be for Julia, at least in the world of data science. We thrive on the ability to quickly show the results of our analyses to our clients/businesses. Being able to build quick-and-dirty webapps even when your web development skills are limited to some generic knowledge of HTML is vital in such a world. I guarantee the existence of a Shiny/Dash like framework for Julia would accelerate adoption of Julia within data science a lot. Much more than Flux.

4 Likes

That actually looks interesting. Thanks for the link!

Seriously Interact.jl and Mux.jl is the way this will happen. We make a bunch of interfaces for models and simulations with it, and its really lightweight and flexible.

But most of the time it’s enough for our needs and there are other things that need a lot more work! SO I don’t chip in to improve it as much as I would like to.

So when you say:

Is there no one interested in pursuing this further?

That probably means it’s time to clone InteractBase.jl and write some code.

3 Likes

If it is then fine. I still think it needs some wrapping up in something more data scientist-friendly.

For whom? I made it quite clear I don’t have the necessary skills.

For you of course! None of us had the skills when we started, and people who have skills end up pretty busy. Julia is pretty easy to write packages in, compared to just about anything else.

5 Likes

I wrote the first popular shiny package. But then it quickly became clear that I don’t know html and css and js very well. I could hack together something, but I can’t actually maintain it and fix bugs! someone with good css, html and js should take it on, but it’s not happening. Perhaps at some point when julia becomes popular enough that Julia Computing can fund someone with those skills

1 Like

Web skills are going to be in short supply in this community. But until there is some funding there really isn’t an alternative to people without great skills still getting things done. I don’t think many of the people working on these packages are actually professional web developers.

1 Like

A lot of (possibly most?) Julia packages are written and maintained by people who are “X, not a developer”, where X is academic, research scientist, data expert, interested hobbyist, or something else. Very few people in the Julia community are paid for developing software per se.

Most projects welcome enthusiastic contributors and are willing to provide guidance. “Love to work on this” is probably 80% of the required qualifications, you can pick up the rest as you go along.

6 Likes

You misunderstand what I mean when I say “I don’t have the skills”. I’m not saying “I haven’t had enough time to build those skills”. I mean “I have spent years trying to build those skills, and I failed”. I’m just not cut out to be a developer, and my understanding of web development is extremely superficial at best, and years of trying to understand it better have only left me more confused about it than ever before. So don’t try and force me in a role that I simply cannot fulfill. And however easy it is to build packages in Julia is not relevant.

Once again, this is not relevant to my case. I can’t “pick up the rest as I go along”. If I could, I would have done so a long time ago and we wouldn’t be having this discussion. I may be new to Julia, but I’ve been trying to learn programming for more than 25 years (I’m 43). If I had any skill in it, I would have discovered that years ago.
I’m good enough to glue together the fantastic work of others in a way that doesn’t break every two seconds and show the results, which is enough skill to be an NLP data scientist, and even then it takes me all my time and energy to do so. It’s simply not enough skill to build and maintain a package that’s meant to be used by others.

And just for the record, I’m not saying I’m good for nothing. There are things I’m skilled at. I just feel my time is better spent on improving those skills than it would be on forcing myself to work on things I know I won’t ever get even just passable at.

2 Likes

Fair enough. It’s also common for people to say that before they have tried, and in this case what is missing is a few more people to get the work done so it was worth a shot.

Also as a data scientist you can always do the documentation and testing in a team with others who write code. It really helps, and also encourages people to implement things you want :smile:

5 Likes

I understand. And believe me, I wish I had the needed skills. Would solve so many of my problems!

Well, as soon as an actual project exists, I’ll be happy to support it how ever I can. Although unleashing my writing style on documentation might actually be counterproductive :rofl:

I’d be interested in getting involved if anyone has made any progress on this. My profile is similar to tsela, but, I would like to chip in if someone else is driving a project. May be able to source cash for this project at some future point in time.

Checkout Stipple, Matte, Genie and to sim extent Pluto.jl

I might have missed a few

5 Likes

Thanks, will do!

This is definitely something that I want to achieve with Pluto! With code hidden, Pluto notebooks look a lot like regular blog posts! But interactive, and you can dive in to find and tweak the source code of everything.

It runs in the browser, so all that’s needed is to run it online in a container. I considered a number of different hosting providers and such, and the current plan is to work on good binder support with a one-click “deploy to binder” button straight from Pluto. (Binder demo). Binder support is really awesome, but their launch times are too high to compete with R shiny and interactive blogs. Although it’s probably possible to precompute the notebook state in the build step, to skip the first run. So maybe a collaboration with binder to allow Pluto to provide the offline-notebook-while-you-wait, or support for a commercial hosting platform.

But at the end of the day, you can’t use Pluto to create complicated UI, and the interactive framerate is limited to about 15fps for most realistic cases. The packages mentioned above don’t have these limitations. (Stipple looks exciting!) But I still think that hosting interactive notebooks online is very valuable :slight_smile:

11 Likes

I’d love to collaborate on this part of the project (@path-doc), so get in touch! fonsvdplas@gmail.com

1 Like