Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deprecate and redirect to voila? #48

Closed
pbugnion opened this issue Nov 26, 2018 · 6 comments
Closed

Deprecate and redirect to voila? #48

pbugnion opened this issue Nov 26, 2018 · 6 comments

Comments

@pbugnion
Copy link
Owner

ipywidgets_server and QuantStack's excellent voila aim to do similar things.

Are they sufficiently similar that continuing development on both makes little sense? If the answer to that question is yes, I would prefer to halt development on this and redirect users to voila because I trust Sylvain will have the resources needed to do something great. What can ipywidgets_server do that voila can't?

I would love to hear thoughts from some of the people who have used ipywidgets server, if you have time (@DougRzz , @Juanlu001) and from @SylvainCorlay . And obviously anyone else who wants to chime in.

@astrojuanlu
Copy link

voila looks great! I will give it a spin today or tomorrow and comment in this issue. In particular, I noticed that callbacks and events didn't quite work in ipywidgets_server, so if voila does better in that sense while still maintaining the basic functionality of rendering a widget, along with the possibility that it's a bit more maintained, then the question is settled for me.

@DougRzz
Copy link

DougRzz commented Nov 26, 2018

@pbugnion I was wondering how Ipywidgets-server and Voila would co-exist. The projects are very similar and i agree it makes sense to focus on just 1 project. Did any of your code base go into Voila?? Sometimes competing open source projects is healthy but not really in this case. Your time is probably better spent on other projects (or even supporting Voila!). Ipywidgets-server has been really useful for my work and filled a big gap in the Jupyter ecosystem. I feel a certain amount of loyalty to ipywidgets-server because I have used it a fair bit but ultimately i would go with the project which has the best features, well maintained and has the best potential. Obviously, its your call. Do you have the time and motivation to compete with Voila? Dashboarding is a big deal, particularly in the corporate world, and I'm surprised Ipywidgets-server hasn't already gained a big following - it deserved to.

@SylvainCorlay
Copy link
Contributor

Hello @pbugnion thanks for the ping.

Yeah, we started voila in the late summer for a demo, and it is just starting to become a real project. We should have reached out to you earlier, because we should probably all join forces on this.

Let me respond to the technical aspects of it:

Execution model

Both voila and ipywidgets_server share a common execution model where the code is run once in the backend, the code is kept alive and the frontend merely communicates with the kernel via comm messages.

One difference though is that the ipywidgets server uses a custom python kernel while voila uses whatever kernel is specified in the notebook metadata. The filtering by message type happens at the server level, and not at the kernel level. We use a reboot of the notebook server called jupyter_server which can filter messages by type.

Rendering notebooks vs scripts

One key difference is that the base thing in voila is a notebook, while ipywidgets_server renders a script. I would like ideally voila to be able to render scripts as well. One thing that is specific to ipywidgets server that we probably won't be able to support is the specification of a global variable to be rendered. In voila, we will probably need to rely on the user calling display. Also, in the case of scripts, the kernel is not specified in metadata, and we would probably deduce the kernel name from the file extension.

Joining forces

Voila stem from the same idea as the ipywidgets server and I looked at it a lot in the beginning. I would be happy to credit you for your initial work on the ipywidgets server in the readme of voila. It would be awesome if you were interested in joining forces.

@astrojuanlu
Copy link

A difference I noticed between voila and ipywidgets_server is the way HTML is served. There was an issue here about serving custom HTML #5, and I see that voila allows creating some templates https://github.com/QuantStack/voila/blob/master/examples/dashboard-grid/voila.tpl, but I am not sure if they are equivalent.

@pbugnion
Copy link
Owner Author

pbugnion commented Nov 28, 2018

Thanks everyone for the comments.

I think the right course of action is to sunset ipywidget_server and suggest voila as an alternative. I will add a comment at the top of the README for ipywidgets_server.

I'd also love to contribute to voila.


To address specific points:

It would be awesome if you were interested in joining forces.

I'd love to contribute to voila. Some of my colleagues have used it to very quickly share lightweight apps based off notebooks.

the base thing in voila is a notebook, while ipywidgets_server renders a script. I would like ideally voila to be able to render scripts as well.

Agreed. I would have eventually added functionality to ipywidgets_server to use a notebook as a starting point, so I think we would have converged on similar overall functionality.

we probably won't be able to support is the specification of a global variable to be rendered. In voila, we will probably need to rely on the user calling display

In hindsight, I think relying on explicit display calls is better than a global variable.

A difference I noticed between voila and ipywidgets_server is the way HTML is served.

I believe both projects have the ambition to allow the user to specify a custom html template.

There's also a latent point in some of the comments that I wanted to address: while jupyter widgets has a fairly large user base, the number of people who actively contribute to or maintain packages in the ecosystem is small (10-20). Given the small number of maintainers and the limited resources available to them, it is important for those maintainers to work together. I therefore think it's good that we are aligning behind a single package for dashboarding. I'd much rather contribute to a single library that I know is well maintained.

@pbugnion
Copy link
Owner Author

pbugnion commented Dec 10, 2018

Closed by #49 and #50 . Thanks for everyone's comments and contributions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants