[IPython-dev] thoughts on the notebook, alternative front-ends and remote editing

Matthias Bussonnier bussonniermatthias at gmail.com
Wed Mar 4 14:22:29 EST 2015

Le 4 mars 2015 à 10:00, Nicholas Bollweg <nick.bollweg at gmail.com> a écrit :

> Good discussion.
> I for one would hate to see losing the momentum of a powerful web-based computing environment to start implementing stuff for editor-of-the-week (no offense). The notebook has the (already observed) potential to bring interactive computing to people that would never download a programming editor.
> What about codemirror is lacking? Let's build it! Marijn is a really awesome dude, but can't build everything himself :)
> Not to pre-empt Thomas and Matthias, but I have started hacking together a proof-of-concept architecture that moves the state of the notebook-being-used into another model that neatly handles persistence and multiple users. Disclaimer: it doesn't really work yet!

That's great that the long time goal too, 
Haven't had a deep look yet, but will. 

How much does it rely on derby/nodejs being there ? 

The proxy was one of the things I though about, but I'm not sure that completely the way we want to go.
But let see.

> https://github.com/nrbgt/derby-notebook
> When the user requests a notebook, its contents are pulled off the content manager and rebuilt into an evented model. This model includes everything from the original content, but adds enough stuff to make the state of the UI persistent:
> notebook
> kernel
> state
> cell
> id
> position in a linked list <- current sticky wicket!
> state
> user
> id
> current cell/mode
> widgets <- haven't started yet

That's nice, I really want to decouple the notebook model which is on disk to the on memory one. 
I'm pondering not a list for cell, but actually dict of id-> cell plus a list of id order. 

that should make partial update simple. 

thought ? 

I really want to think about user UI state that is synced vs the one that is not synced. 
For example I doubt the hidden state of cell toolbar should be synced. 

Same with collapse state of output area. 

> Then one or more clients (browsers or daemons) subscribe to and publish deltas to this model, which eventually get persisted to the backend and other clients. Because each client has its own local model, it is robust against latency, etc. and you don't have to make the decision between "updating the DOM" vs "updating the model" vs "sending an event"... there is only the model.
> I don't think there is a compelling way to make _repr_javascript_ work with this, but widgets are *perfect* as they already work this way... though it may require adding an additional View.view_model if there are UI things that one would want to share among many users.

reprjs make sens for "static widget" (mpld3m or Julia Gadfly) that allow in browser panning and zooming. 

I would really like building the structure of the notebook in a way that the realtime backend would be plug able. 
WE also need to think carefully about the execution logic. I would like to have real-time where I would be able to execute,
but the people I share with would not. 

I suppose we would need to bake login into RT framework. How do you handle that for now ? 

Should we make a place just to discuss realtime collaboration ?


> Pics or it didn't happen:
> <2015-03-03_1848.png>
> Right now, codemirror is doing a great job of handling text deltas between n browsers. The issue arises in correctly handling inserted/moved cells, and I'm working with the authors of derby, the application framework, to get these sorted out!
> _______________________________________________
> IPython-dev mailing list
> IPython-dev at scipy.org
> http://mail.scipy.org/mailman/listinfo/ipython-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ipython-dev/attachments/20150304/7e2ab554/attachment.html>

More information about the IPython-dev mailing list