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.
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.
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
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.
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
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.
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.
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 )
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.
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.
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?
So, while it’s not my goal to make a book format, that’s what I mean with building an ecosystem around it. By making BonitoBook super easy to completely restructure, I hope these things to get created over time.
Note, that it needs to define a new book type for the layout, but that can re-use all components:
Maybe I’ll leave it at that, or we could have a nicer Plugin system, to ship a new layout like this as part of the book, which doesn’t need an explicit include and using of RealBook.
I guess your other points are addressed by that as well - I’m not sure how a LyX integration or other things will look like exactly, but I’m sure that it should be possible to write components for it or create a customization for it.
is the plan to base the editor on VSCode?
I’m not sure what you mean, the editor is using Monaco editor, which is the same that VSCode uses, bringing quite a bit of vscode features - but more integration besides displaying a BonitoBook in the VSCode plotpane isn’t planned from my side right now.
I’m not sure, I must admit I dont know Typst well enough.
What would you want from an integration?
Something like a typst cell, which works like a markdown cell and gets rendered nicely?
For that you’d need to figure out how to render it to something that can be displayed with HTML/JS. Once that’s working, it should be simple to add it as a new language.
Strings · Typstry.jl basically Jakob has a thing where you can have a Typst-String (a bit like L"" I guess), and BonitoBook would presumably have a “render” api, and Typstry.jl can give you back a svg or pdf and BonitoBook would take that and display
How would it work if I wanted to run BonitoBook from a remote server while displaying the notebook locally?
Pretty much like any other notebook. BonitoBook.book("your-book.md", port=8080, url="0.0.0.0", proxy_url=".") will run on localhost:8080 which you can then forward via ssh, or access at the ip of the server.
The proxy_url=“.” should actually be the default, now that I think about it (this makes any urls relative to where you host it, so if you access it on another url than localhost:8080 (e.g. the servers ip/domain) it’ll still work).
In Pluto, you start a server on the remote, and then can open several notebook files from the client, running on the same server (and sharing the same port).
Any chance on Bonjtobook.jl being MIT license? I don’t think I will be able to use a non commercial license, even if I’m only using the feature for internal research and development.
I have been working with Pluto for publishing examples in Julia of different algorithms. However, this package seems more comfortable for my workflow. I work/live in Emacs, and it is great to be able to edit directly in the editor, for the nice syntax, very direct markdown.
I will be using Pluto for more interactive parts, but I think it would use BonitoBook for the description of the algorithms, and the visualizations of their behavior.
PS: I am taking notes of how using it, when I will have more complete, I could give for the documentation, as am manual.