Virtual File System for JupyterLab

230 views
Skip to first unread message

Vadim Kantorov

unread,
Aug 17, 2017, 3:40:46 PM8/17/17
to Project Jupyter
Hi. I'm looking to create a client-side LaTeX editor based on JupyterLab.

For that, I'd need to create a File System backed by local storage and synchronized with Emscripten's file system.

Would you have any advice of how to do that?


Are there any blockers for running JupyterLab completely in-browser, without any server extensions?

Thanks!
Vadim

Ian Rose

unread,
Aug 18, 2017, 8:49:52 AM8/18/17
to jup...@googlegroups.com
Hi Vadim,

That sounds like a very cool project. What you suggest sounds reasonable to me, and would be a neat use of emscripten (have you managed to compile pdflatex!?). The '@jupyterlab/services' npm package defines an abstraction for a filesystem (which mirrors the Jupyter Contents API), and that filesystem need not be a physical one on disk somewhere. You are correct in noting that this is what the Google Drive plugin implements.

The main challenge with a completely client-side application is to make sure that none of the plugins you rely on actually make any server requests. For the most part this should be doable. The main blocker I see at the moment is the settings system: JupyterLab recently moved to a server-side settings system, which is used by components like the file-editor for things like editor settings and keybindings. There has been some talk of providing a client-side fallback for the settings system, but it does not exist at the moment (AFAIK).

Cheers,
Ian

--
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 jupyter+unsubscribe@googlegroups.com.
To post to this group, send email to jup...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jupyter/835e10f1-97af-4c53-9f8e-2be04ea54623%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Vadim Kantorov

unread,
Aug 18, 2017, 9:15:13 AM8/18/17
to Project Jupyter
Hi Ian!

Thanks for the advice. I'll dig into the settings subsystem. it would be cool if one could point the settings to be loaded from any Contents file. Then one could store the editor settings alongside with the LaTeX sources, like .editorconfig.

I guess the first step may be implementing a "pdflatex" package that would interface with an abstract Contents service.

Concerning compiling pdflatex, there is texlive.js (https://github.com/manuels/texlive.js/) that achieved the feat and is showcased at http://manuels.github.io/texlive.js/ and https://github.com/googledrive/drivetex. It even seems quite fast.

Best,
Vadim

On Friday, August 18, 2017 at 2:49:52 PM UTC+2, Ian Rose wrote:
Hi Vadim,

That sounds like a very cool project. What you suggest sounds reasonable to me, and would be a neat use of emscripten (have you managed to compile pdflatex!?). The '@jupyterlab/services' npm package defines an abstraction for a filesystem (which mirrors the Jupyter Contents API), and that filesystem need not be a physical one on disk somewhere. You are correct in noting that this is what the Google Drive plugin implements.

The main challenge with a completely client-side application is to make sure that none of the plugins you rely on actually make any server requests. For the most part this should be doable. The main blocker I see at the moment is the settings system: JupyterLab recently moved to a server-side settings system, which is used by components like the file-editor for things like editor settings and keybindings. There has been some talk of providing a client-side fallback for the settings system, but it does not exist at the moment (AFAIK).

Cheers,
Ian
On Thu, Aug 17, 2017 at 12:40 PM, Vadim Kantorov <vadimk...@gmail.com> wrote:
Hi. I'm looking to create a client-side LaTeX editor based on JupyterLab.

For that, I'd need to create a File System backed by local storage and synchronized with Emscripten's file system.

Would you have any advice of how to do that?


Are there any blockers for running JupyterLab completely in-browser, without any server extensions?

Thanks!
Vadim

--
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 jupyter+u...@googlegroups.com.

M Pacer

unread,
Aug 18, 2017, 11:24:11 AM8/18/17
to jup...@googlegroups.com
I'd recommend targeting xelatex rather than pdflatex for consistency with the rest of the Jupyter ecosystem. That said, this sounds like a fascinating project!

Vadim Kantorov

unread,
Sep 4, 2017, 6:31:16 PM9/4/17
to jup...@googlegroups.com
Thanks for the tip! pdflatex's JavaScript port appears easier to get
started up, so I'll try it first and then will try the luck with the
xelatex's port (https://github.com/lyze/xetex-js)

Do you know if there exists an extension for "compiler log output
pane"? That would be handy to display LaTeX's typesetting log and
error messages. Should the
https://github.com/jupyterlab/jupyterlab/tree/master/packages/outputarea
be a good fit for the purpose of displaying a large number of text
lines? I thought I'd need to call "add(output: nbformat.IOutput):
number;" to append one.

Cheers!
> You received this message because you are subscribed to a topic in the
> Google Groups "Project Jupyter" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/jupyter/0DF1AQnrDFY/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> jupyter+u...@googlegroups.com.
> To post to this group, send email to jup...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/jupyter/CAM3SX47o%2BFm_Z4CG5bMQ9kJ5QA1hyyu15UKOYXTxr5TVT9jyxg%40mail.gmail.com.
>
> For more options, visit https://groups.google.com/d/optout.



--
Vadim Kantorov
+33 6 03 29 27 69
Reply all
Reply to author
Forward
0 new messages