[ANN] BonitoBook.jl

Would an OSS license which covers SaaS do the trick? That gives you a few options, put I’d probably point out the EUPL (over the AGPL).

I have 2c here, which is that the MPL and EUPL are already pretty good in these regards. I feel like the MPL can be pretty accurately summarised as, MIT but:

  • Give credit in software using it
  • Share back any improvements you make to code shared as MPL

and otherwise use it however you want.

The EUPL is like the MPL, but covering SaaS too and with wider license comparability, with a few more euro-centric elements (e.g. setting Brussels as the arbitration jurisdiction). Other than that, neither are viral like the GPL, and there are a few other minor niceties that I won’t bore you with.

2 Likes

This is great to have choices.
I also find the reactive approach problematic to my use cases when the calculation is time consuming.
I am happy to see there is an alternative.
Considering the quality of Makie.jl, I am sure this one will be a great and useful notebook format.

7 Likes

Because if it’s non-commercial, I wonder if company can even try it or something

Yes, I’m pretty sure this is covered under fair use :wink:
Also, I’m the one enforcing the license, and I’ll set the bar pretty high until I expect a company to pay.
I will try to figure out how to change the license/redme to reflect this.
I’ll also want to figure out how to specify, that anyone putting significant time into the ecosystem gets paid - I love that open source means people can just start hacking on software, and I’ll need to figure out how to have everyone putting time into BonitoBook get their fair share.

@TheCedarPrince

  1. How does this compare to Genie.jl

Bonito is much more focused on:

  1. Performance! We use a highly optimized binary serialization to gain fastest update speeds. Genie seems to use JSON, which I expect to be quite a bit slower
  2. No macros, and widget types instead. I must admit I’ve never understood the macro based DSL in Genie, so I’m not 100% sure how things work exactly, but I’ve put a lot of time into allowing users to implement their own widgets in a third party package, to allow a growing ecosystem. I suppose that’s also possible in Genie.
  3. Not just a server, but a Julia HTML/JS generation framework for all kind of possible environments. So if you implement a widget in Bonito, it’ll work in Jupyter/Pluto/VScode/Webserver/self-contained HTML, which I think is pretty unique.

Does this effectively “solve” some problems of Julia-WASM

Not really. I mean, the Javascript interop is good enough to move things to JS, so that parts of a plot can stay interactive without a Julia process, but to make this really nice and user friendly we’ll need proper WASM support in Julia.

Is R support possible via RCall.jl?

Yes, I thought of already shipping with R support, but I had to cut a few features to finally release it ( I actually wanted to release in April already :smiley: )

@aplavin

Yeah, why not. I plan to have this more as an ecosystem, with BonitoBook being the “reference” implementation and being able to have lots of extensions and customization.
The Automatic environment management drove me crazy with Pluto, so it’s definitely not something on my todo list, but I don’t see why we couldn’t have it as a plugin.
I love interactive inspection, so that’d be something I could see spending some time on myself.

12 Likes

Congratulations! Great work! A minor thing about the website: I noticed that the example for @manipulate isn’t working on the website. Changing the settings doesn’t reflect in the plot in my browser (Firefox).

I concur. I’m also thrilled to have another choice than Jupyter and Pluto. And if you end up implementing reactivity à la Pluto, please make it optional. I find it entirely counterproductive.

5 Likes

I have a love-hate relationship with Jupyter notebooks, so I am curious about BonitoBook. Here is my experience with JN, and why I am interested in testing alternatives:

  • The mixture of code and markup makes it simple to document my code, and probably also makes it simpler for others to understand my code.
  • Lately, JN as run in VSCode on my desktop acts weirdly: the notebook seems to be automatically restarted if I leave the notebook for more than a few seconds, with result that I need to re-run the notebook from the start. Don’t know if this is a problem with my desktop, or whether it is also a problem with my other computers – will have to check.
  • JN doesn’t handle long notebooks well. I have mainly used Plots.jl so far, but with large documents, often the plots are only partially rendered.
  • It is a pain to edit notebooks in VSCode compared to using a word processor (LyX, etc.).

In addition to the above, I am interested in a “new” tool that handles some of the following (don’t know whether BonitoBook.jl will do this, though):

  • Book-like possibilities: styles (book, article, slides, web pages, etc.) with numbering of sections, equations, figures, tables, program listing (which may or may not be “live” - literal programming), bibliography.
  • Math support for documentation. LaTeX code in markdown cells is ok, although I also like to use tools like LyX for more complex math. [I think the math-editor of former product Scientific Word is open source, if that is of interest; don’t know whether typst is an interesting alternative?] Can PrettyTables provide help with typesetting, with possibility to add caption + numbering?
  • Co-authoring, versioning.

I don’t know whether the “Book” part of “BonitoBook” indicates any of the above. And… is the plan to base the editor on VSCode?