<div dir="ltr">Jared,<div><br></div><div>can you let us know (here or in <a href="https://github.com/ipython/ipython/issues/7784">https://github.com/ipython/ipython/issues/7784</a>) a bit about your experience with React.  I've found it very easy to use but powerful, and it seems to play nicely with other frameworks.  Other people have raised concerns about performance (e.g. Atom moved away from React for performance issues).  I can identify 3 areas that might need to be handled outside react: the text editor, output areas (that can contain large binary blobs) and widgets (which I don't know a lot about).  I think these can probably be solved simply by having React components that wrap some other code, and don't try to maintain state using React.  But you have a lot more knowledge of this than me.<div><br></div><div>Kester</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Mar 5, 2015 at 2:07 PM, Jared Forsyth <span dir="ltr"><<a href="mailto:jared@jaredforsyth.com" target="_blank">jared@jaredforsyth.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">++for react. That's what the UI for Notablemind is written in, and makes state management awesome. It also makes things like rearranging cells trivial.<div><div class="h5"><br><br><div class="gmail_quote">On Thu, Mar 5, 2015 at 9:36 AM Kester Tong <<a href="mailto:kestert@google.com" target="_blank">kestert@google.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Everyone,<div><br></div><div>I'm part of the Google team that is working with IPython on realtime collaboration and notebook redesign.  I was also one of the developers on the coLaboratory project, where we implemented a Notebook front end using the Google Drive realtime API (see <a href="https://github.com/jupyter/colaboratory" target="_blank">https://github.com/jupyter/colaboratory</a> or <a href="https://chrome.google.com/webstore/detail/colaboratory-notebook/pianggobfjcgeihlmfhfgkfalopndooo?hl=en-US" target="_blank">https://chrome.google.com/webstore/detail/colaboratory-notebook/pianggobfjcgeihlmfhfgkfalopndooo?hl=en-US</a> for the working Chrome App).</div><div><br></div><div>The main choices I've seen so far in this thread are:</div><div><br></div><div>* text editor vs traditional notebook</div><div><br></div><div>I prefer the traditional notebook for the reasons Nicholas gave.</div><div><br></div><div>* Storing model in browser vs the same place as the kernel.</div><div><br></div><div>I think that we should aim to have both capacities, and that's what me and Matthias had been aiming for so far.  For backends like Google's realtime API (which is afaik the only free web based backend for this sort of thing), the model needs to be in the browser.</div><div><br></div><div>* Using derby.js</div><div><br></div><div>It's great to have operational transforms (OTs) taken care of by someone else.  But I'm concerned that locking into this would exclude other backends such as Google Drive's realtime API.  Maybe we could wrap both in a another layer though.</div><div><br></div><div>Currently I've been prototyping with React, although my prototype is much less developed than the others posted here.  React is nice because, based on my experience in coLaboratory, there are lots of stateful UI components in the notebook, and React allows you to store all your state in one place.  However, it also has stateful components if you need them.  Right now I have a list of cells id's, and map from cell id's to cells, which as Matthias mentioned, seems like the best way to handle realtime, but also helps keep cell widgets independent of their position in the notebook.</div><div><br></div><div>Kester</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Mar 5, 2015 at 8:42 AM, Wes Turner <span dir="ltr"><<a href="mailto:wes.turner@gmail.com" target="_blank">wes.turner@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"></div></div></div></blockquote></div></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span>On Thu, Mar 5, 2015 at 1:29 AM, Jared Forsyth <span dir="ltr"><<a href="mailto:jared@jaredforsyth.com" target="_blank">jared@jaredforsyth.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><br></div><div class="gmail_extra">I've managed to get together a <a href="http://app.notablemind.org/tutorial/ipython/" target="_blank">tutorial for ipython</a> and a  <a href="http://app.notablemind.org/tutorial/" target="_blank">general navigation tutorial</a>, and more docs are coming soon.</div><div class="gmail_extra"><br></div><div class="gmail_extra">I'd love to get your feedback!</div></div></blockquote><div><br></div></span></div></div></div></blockquote></div></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>At first glance, this looks outstanding!</div><div><br></div><div>* Dig the vim shortcuts</div><div>* Dig the split panes (.glyphicon-resize-vertical and .glyphicon-option-vertical might work)</div><div><br></div><div>Wondering how/where the 'undo' / 'redo' support is implemented, and whether it would be possible to port that back upstream?</div><div><br></div><div>Thanks!</div></div></div></div>
<br>_______________________________________________<br>
IPython-dev mailing list<br>
<a href="mailto:IPython-dev@scipy.org" target="_blank">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></blockquote></div><br></div>
______________________________<u></u>_________________<br>
IPython-dev mailing list<br>
<a href="mailto:IPython-dev@scipy.org" target="_blank">IPython-dev@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/<u></u>listinfo/ipython-dev</a><br>
</blockquote></div></div></div></div>
<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></blockquote></div><br></div>