I have found it surprising that there was no JavaScript no-backend notebook. Tools used either Python-based Jupyter (fine, but perverse: why JS -> Python -> JS), Node (e.g. RunKit), a complex superset of JS (e.g. ObservableHQ), were like JSFiddles (sandboxes, not notebooks), or are on-offs (e.g. in Eloquent JavaScript).
Thanks for creating StarBoard - it was, as is, needed!
I think one of the main reasons was the lack of dynamic import support until fairly recently [0], being able to import code dynamically without crazy <script> hacks is very useful in a notebook. The tools you mentioned all pre-date that I think.
Secondly notebooks have to run sandboxed. Most notebooks run the output/code in an iframe but the editor is in the main window (e.g. JSFiddle). The moment you do that you can no longer support notebook style output (cell-output-cell-output) without some serialization step as you can only embed the iframe in one place (so there would be a single output pane). This is also how Project Iodide worked [1].
Starboard's approach is to put the entire editor/runtime in the sandbox which I think is a superior approach for a notebook. It only talks to the outside frame over a thin API (for saving notebooks, refreshing, syncing the content).
So great to see folks utilizing Pyodide, the WASM scientific python stack my Mozilla colleagues put together. The creator, Mike Droettboom, wrote a Mozilla Hacks post about it a while back:
Upon closer inspection the title should probably read “Run some Jupyter notebooks in the browser” as your website confirms the many limitations.
I’m going to try this out because I can see JavaScript support! Jupyter Lab requires one of many extensions to enable JavaScript support and they all have their challenges.
* I'm not planning on shutting it down at any point, the cost to operate it is very low (it's just a bunch of static files at its core). But I am personally also always weary to put stuff in online services, that's why I made it all open source: other than observable actually all the pieces are there (including editor and offline support), not just runtime/parser. You can download the files and check them into git, and edit them, and host them trivially. There's no "download all" button yet but if there's a demand for that why not :)
* Private notebooks make a lot of sense, and perhaps this is where it can be a viable product as well instead of just a useful open source tool? I have plenty of runway, but still it would be more sustainable if it could eventuallu pay my rent.. Similar to the (old) github model I mean (pay for team features / private notebooks you can share with some) with some reasonable limits?
My main goal right now is to raise awareness for it. I think many many web developers especially would find the notebook paradigm really useful, but how do I show that?
* A lot of stuff.. auto save, I store every revision but currently you only can retrieve the latest, social features (e.g. recent notebooks, avatars), actual documentation (in notebooks of course).
If you have ideas or thoughts on where I should take this, do reach out! Email in my profile.
Well, you need at least two for something like this.
For sandboxing user content they need to be on their own origin, otherwise by opening the wrong notebook your account could be taken over.
Ideally you also have a unique origin per user as well, as otherwise they would share LocalStorage and cookies. So here every user gets <username>.notebook.host for their notebooks (in the future I might completely randomly generate it instead). This is also the domain used for static embedding.
starboard.gg is used as the main entrypoint: it is just a static website (SPA-like). And the APIs are hosted on starboardapi.com. Those two could technically be combined.
And finally there's another one.. starboardproxy.com which acts as a CORS proxy for use in notebooks.
That's what I said. But differs to what you said before. /Jupi/ has only one stress; your previously mentioned pronunciation requires two, also two s rather one that exists in the word.
Thanks for creating StarBoard - it was, as is, needed!