Brad:

Thanks for the interest!

We're excited to help you do really cool things with notebooks, widgets, 
etc. I guess it depends on what you mean by "application." Do you want 
something that lives "close" to the notebook, such that a scientist can use 
it during their work, with full access to kernels, etc. or is it a 
"display" that just shows information? Or a SaaS? Or a presentation? Or 
actually a "dashboard" on a device?!

With those questions in mind, I'll answer your last question first: 

I would also be grateful for pointers to any resources that you think would 
> be useful in understanding this landscape. 
>

I just updated this example 
<http://nbviewer.jupyter.org/gist/bollwyvl/47d06961f9d39f3fba6e76d2e7417ab3> 
to the newer APIs, based on this very dated example 
<https://gist.github.com/bollwyvl/ddd4bf5d7c879012fa2c>. This is more of a 
"replace the old broken computer next to my scientific equipment," rather 
than "what is the scheduling status of this machine?" On the API maturity 
side, it took about five minutes to get it working, which isn't that bad 
considering two years had elapsed, in which we split everything up, and 
have done many releases of every component! I can vouch for python-driven 
widgets being a sound way to build up rich, maintainable GUIs!

Here is a recent talk I did at PyData ATL 
<https://github.com/bollwyvl/exploring-data> (sorry, no recording) which is 
arguably an application, in that it is (a number of) live coding 
environment(s). In that talk, to make matters worse, I use nbpresent 
<https://github.com/Anaconda-Platform/nbpresent>, as another way of laying 
out notebook content, including widgets (sort of a sibling/competitor to 
Jupyter 
Dashboards 
<http://jupyter-dashboards-layout.readthedocs.io/en/latest/index.html>).

Ok, to your specific stuff:

IPython widgets
>

ipywidgets <https://github.com/ipython/ipywidgets> is (historically) the 
reference implementation of Jupyter Widgets <http://jupyter.org/widgets>. 

When you install the python module of ipywidgets, it also updates some 
JavaScript (jupyter-js-widgets), which is loaded into the notebook.

For many kinds of interactive computing activities, you might not need to 
write any JavaScript, CSS and HTML, and get the full complement of GUI 
stand-bys: buttons, sliders, layouts, etc. With a little bit of CSS 
knowledge (written in a pythonic way), you can have pretty attractive 
content. See the example at the beginning!

Jupyter declarative widgets
>
 
Declarative widgets gives access to the underlying widget API: Instead of 
python, you're mainly writing HTML and JavaScript 
<https://github.com/jupyter-incubator/declarativewidgets#including-a-web-component-in-a-notebook>.
 
The bits and pieces gets installed via bower, yet another javascript 
dependency management ecosystem, instead of a python-focused one.
 

> Jupyter dashboards
>

The Jupyter Dashboard 
<http://jupyter-dashboards-layout.readthedocs.io/en/latest/index.html> has 
two components: the authoring tool and the server. The authoring tool lets 
you *visually construct content* on a single-screen scrollable dashboard, 
where the individual content pieces can be markdown, code, output or *any 
widget* (including, therefore, declarative widgets... though it does take 
some extra work), and *bundle* up the content. The Server can accept these 
bundles, and *host* them in a relatively secure way via Docker and clever 
proxies, and as such can be good for standing up "hands-off" dashboards 
like kiosks and NOC/EOC kind of big displays.
 

> Polymer
>

Polymer is the mother-of-all polyfill 
<https://en.wikipedia.org/wiki/Polyfill>s for browsers that don't yet 
support WebComponents... basically, you can use the future standard, today, 
at the price of a pretty big slug of JavaScript monkeypatching your 
environment, which is a totally normal practice, just that Polymer does a 
LOT, because...
 

> WebComponents
>

WebComponents are the "not widely distributed" 
<http://caniuse.com/#feat=custom-elements> future standard of web 
development. They will presumably end much of the "tool churn" we have been 
seeing in React\Angular\Phosphor space, but it will take a while once they 
are a generally-available feature. They support things like data binding, 
encapsulating style, shadow DOM, and other things that I haven't wrapped my 
head around.

They have read through documentation and have seen a few detailed examples 
> and videos, but are having a hard time seeing the big picture and getting 
> an idea of where they should focus for constructing our application.
>
>  
Hopefully some of the information above was helpful!

If you can deal with "just python", my recommendation would be to use 
ipywidgets, and stick as close to that baseline as possible. If the work 
you are doing supports people that are already working in the notebook, 
this will be the easiest to install/maintain. Stock widgets will work 
nicely in the Jupyter Dashboard server, if you need to deploy them.

Your team would write mainly Python. With a little python object-oriented 
programming, you can prototype your dashboard in the notebook, then make it 
reusable as your analysis grows. 

If you start needing some special stuff, evaluate the existing offerings 
(i.e. bqplot, ipyleaflet, pythreejs, etc.) If they meet your need, hooray!

If you end up building truly custom widgets (as opposed to python-based 
confections), it may be worth evaluating the declarative widgets approach, 
though that does bring another level of "ops". Otherwise, there are tools 
to help <https://github.com/jupyter/widget-cookiecutter> you get going with 
writing and packaging your own work as modules.

Let us know how else we might help, and of course share anything cool you 
guys make!

-- 
You received this message because you are subscribed to the Google Groups 
"Project Jupyter" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jupyter/5df08561-e25e-4a96-9de5-33faeae804bc%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to