<div dir="ltr">You're right Brian, it's about them buying some $FIREWALL_IPS_SUPER_PRICEY_DEVICE that doesn't proxy websockets appropriately and the person purchasing having no clue other than the fact that $VENDOR gave them a neat trinket at a conference.<div><br></div><div>Firewalls and proxies that do handle websockets appropriately do exist. I'd be tempted to make a list of ones that do it well and display them prominently, if only for the benefit of our own users.</div><div><br></div><div>I have witnessed these flavors of IPython in the wild (not including our own recent stunts):</div><div><br></div><div>* Corporate entities using an Anaconda server (websockets not a problem internally but were externally)</div><div>* People of all backgrounds using Anaconda's IPython notebook bundling</div><div>* Vanilla installations from package managers or pip</div><div>* Hosted instance of their own flavor</div><div>* DIT4C</div><div><br></div><div>Most users that we hear from are using a local installation and there's probably a large amount of confirmation bias. It would be great if we had actual shared metrics between us but we only know:</div><div><br></div><div>* Unique viewers/users of the Nature demo (> 14,000 total, according to GA)</div><div>* Viewers on the notebook viewer (> 200k per month, also according to GA)</div><div>* Downloads on PyPI (skewed, not unique)</div><div>* Clones from github (also skewed)</div><div><br></div><div>We could actually be tracking who has websocket support of those hitting the notebook viewer for a bigger sense of potential users (since viewers are not necessarily IPython/Jupyter users).</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jan 8, 2015 at 12:55 PM, William Stein <span dir="ltr"><<a href="mailto:wstein@gmail.com" target="_blank">wstein@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Thu, Jan 8, 2015 at 10:19 AM, Brian Granger <<a href="mailto:ellisonbg@gmail.com">ellisonbg@gmail.com</a>> wrote:<br>
> So far we have felt that it isn't worth the complexity cost for us to<br>
> support people that deliberately choose to break the internet. It is not<br>
> like WebSockets is some crazy, insecure, unsupported hack over a weird port.<br>
> It is just different bytes going over the same HTTP/HTTPS socket connection<br>
> and is essentially a formal standard (I know you know this - this is our<br>
> messaging to companies who complain).<br>
<br>
</span>I know -- that's why I switched SMC to pure websockets for a while.<br>
Then I received complaints at a rate of about 2 very desperate users<br>
per week, and these were the people who cared enough to complain<br>
repeatedly.<br>
<span class=""><br>
> Our situation is a bit different though than SMC because most of our current<br>
> users run the notebook on their own computers. This may be something that we<br>
> eventually want to rethink as more people run this in the cloud. However, I<br>
> would like to push back on the companies choosing to break the internet<br>
> really hard before giving in. I am guessing that in most cases, WebSockets<br>
> are broken in enterprise setting not because of some important deliberate<br>
> choice, but rather because people don't understand it and are using default<br>
> settings that disable them (I could be wrong though)....<br>
<br>
</span>In my experience, for some people that's exactly the problem.  For one<br>
person I helped it turned out their specific problem was the Windows<br>
install they had access to had websockets explicitly disabled --<br>
perhaps that was an IT policy.  For other people the problem is<br>
further along the stack (e.g., possibly involving caching).<br>
<br>
Anyway, this change so that "there is a single websocket connection<br>
between the server and client. " makes implementing an alternative to<br>
WebSocket as a fallback dramatically easier, which I greatly<br>
appreciate.<br>
<span class=""><br>
> Our situation is a bit different though than SMC because most of our current<br>
> users run the notebook on their own computers. This may be something that we<br>
<br>
</span>Just curious -- how do you know that most people using IPython aren't<br>
already using it through SMC?<br>
<span class="HOEnZb"><font color="#888888"><br>
William<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
><br>
> Cheers,<br>
><br>
> Brian<br>
><br>
><br>
><br>
> On Thu, Jan 8, 2015 at 10:10 AM, William Stein <<a href="mailto:wstein@gmail.com">wstein@gmail.com</a>> wrote:<br>
>><br>
>> On Thu, Jan 8, 2015 at 10:04 AM, MinRK <<a href="mailto:benjaminrk@gmail.com">benjaminrk@gmail.com</a>> wrote:<br>
>> > Alternative notebook frontend authors:<br>
>> ><br>
>> > There is an upcoming change to websocket connections to the notebook<br>
>> > server.<br>
>> > Instead of three websockets per notebook, one for each zmq channel,<br>
>> > there is<br>
>> > a single websocket connection between the server and client. The channel<br>
>> > associated with each message is identified by a channel key in the<br>
>> > message<br>
>> > dict itself.<br>
>> ><br>
>> > Relevant changes:<br>
>> ><br>
>> > url is /channels instead of /shell, etc.<br>
>> > when sending a message, add a channel key with the channel name<br>
>> > ('shell',<br>
>> > 'stdin')<br>
>> > when receiving a message, check the channel key for routing<br>
>> ><br>
>> > -MinRK<br>
>><br>
>> Thanks.<br>
>><br>
>> Of related interest, what the situation involving providing a fallback<br>
>> to websockets?<br>
>><br>
>> I tried to only support websockets connections with SageMathCloud for<br>
>> a few weeks, and immediately ran into many complaints from users who<br>
>> couldn't connect as a result.   This is even with https and so on --<br>
>> it's just a sad fact that in some corporate or otherwise constrained<br>
>> environments that websockets don't work.   By far the best approach I<br>
>> found was to use Primus + Engine.io, which uses websockets if<br>
>> possible, but will fallback to polling.   So this is what SMC does<br>
>> now, and everything works, even for people that don't have websockets<br>
>> as an option... except for IPython-in-SMC of course, which doesn't<br>
>> work.<br>
>><br>
>> Another unrelated issue is that I'm now hardcoding making this change<br>
>> around line 171 of IPython/html/notebookapp.py, since I want to serve<br>
>> the purely static html of IPython from a completely different web<br>
>> server:<br>
>><br>
>>             #static_url_prefix = url_path_join(base_url,'/static/'),<br>
>>             static_url_prefix = '/static/ipython/',<br>
>><br>
>> (Sorry for derailing the thread.)<br>
>><br>
>>  -- William<br>
>><br>
>> ><br>
>> ><br>
>> > _______________________________________________<br>
>> > IPython-dev mailing list<br>
>> > <a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
>> > <a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
>> ><br>
>><br>
>><br>
>><br>
>> --<br>
>> William Stein<br>
>> Professor of Mathematics<br>
>> University of Washington<br>
>> <a href="http://wstein.org" target="_blank">http://wstein.org</a><br>
>> _______________________________________________<br>
>> IPython-dev mailing list<br>
>> <a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
>> <a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
><br>
><br>
><br>
><br>
> --<br>
> Brian E. Granger<br>
> Cal Poly State University, San Luis Obispo<br>
> @ellisonbg on Twitter and GitHub<br>
> <a href="mailto:bgranger@calpoly.edu">bgranger@calpoly.edu</a> and <a href="mailto:ellisonbg@gmail.com">ellisonbg@gmail.com</a><br>
><br>
> _______________________________________________<br>
> IPython-dev mailing list<br>
> <a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
> <a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
><br>
<br>
<br>
<br>
--<br>
William Stein<br>
Professor of Mathematics<br>
University of Washington<br>
<a href="http://wstein.org" target="_blank">http://wstein.org</a><br>
_______________________________________________<br>
IPython-dev mailing list<br>
<a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Kyle Kelley (<a href="https://twitter.com/rgbkrk" target="_blank">@rgbkrk</a>; <a href="http://lambdaops.com/" style="color:rgb(17,85,204)" target="_blank">http://lambdaops.com</a>)<br></div></div>
</div>