Iodide: an experimental tool for scientific communication and exploration on the web, by Mozilla

Mozilla has announced a new tool for scientific comunnication: Iodide
Original blog post

In the last 10 years, there has been an explosion of interest in “scientific computing” and “data science”: that is, the application of computation to answer questions and analyze data in the natural and social sciences. To address these needs, we’ve seen a renaissance in programming languages, tools, and techniques that help scientists and researchers explore and understand data and scientific concepts, and to communicate their findings. But to date, very few tools have focused on helping scientists gain unfiltered access to the full communication potential of modern web browsers. So today we’re excited to introduce Iodide, an experimental tool meant to help scientists write beautiful interactive documents using web technologies, all within an iterative workflow that will be familiar to many scientists.

What i find interesting is the direct mention of julia:

We’ve spoken to folks from the R and Julia communities about compiling those languages to WebAssembly, which would allow their use in Iodide and other browser-based projects. Our initial investigation indicates that this should be doable, but that implementing these languages might be a bit more challenging than Python. As with Python, some cool workflows open up if you can, for example, fit statistical models in R or solve differential equations in Julia, and then display your results using browser APIs. If bringing these languages to the web interests you, please reach out — in particular, we’d love help from FORTRAN and LLVM experts.

If i understand correctly, a Web Assembly port of Julia is necessary to acomplish their goal, and this would greatly help the efforts of code sharing (like this discourse post)

Any addicional information surrounding this?

8 Likes

It would be really cool if Julia can compile to webassembly easily. I know of the Charlotte.jl effort. My understanding is that since Julia compiles to LLVM IR it’s possible to compile to Webassembly “relatively easily” except the part of Julia that calls things like BLAS.

Keen to learn more.

1 Like

We had a prototype of Julia running in Iodide, but looks like that has bitrotted a bit and no longer works. We’ll have to get back at this at some point.

4 Likes

:slight_smile:

But wow, that animation is pretty slick. I’d like to try it out some time!

This seems very interesting thanks for sharing.

But it almost seems nearly identical to NextJournal.

Simon Danish, maybe you can leave some comments here on core differences? Would be useful for people considering both options.

4 Likes

It’s pretty different. Iodide is 100% client side execution of code, which means it only works with Julia when we 100% figured out the WebAssembly compilation - so Iodide pretty much can’t offer Julia right now.

Of course client side execution will have the advantage, that one doesn’t need to have a server running on which to execute the Julia code! That’s why we’re also working a bit on the Julia-> wasm compilation, to also offer client side Julia execution. It’s a slow process though, which doesn’t have a huge priority right now.

Iodide also doesn’t have the whole “lets freeze all data + used software etc” in a docker container and publish it as an article with a DOI, which is 100% reproducible :wink:

edit: link to nextjournal

9 Likes

Is a nextjournal article somehow executable locally, without installing a docker image?

1 Like

You can download it as markdown and execute it via weave… But without docker, you of course need to make sure to have everything installed correctly :wink:

3 Likes

Found a plugin Julide,
supporting Level 1 only currently… Will it be promising?

1 Like

I did end up fixing this up this weekend, since it was only a one line change. Example notebook: Julia in Iodide

6 Likes

Not working for me on the work computers. Will try at home, work tends to block random things from the internet. When I press run, it says the pluggin has been downloaded but the right hand side become a page with a unhappy face, the same unhappy face when Chrome crashes. So I am assuming it might be work blocking some content.

That or it runs out of memory, or you have a slightly outdated browser. This ecosystem for this stuff is very new :wink:

1 Like

Running at home should be fine then as I have a 64G RAM desktop. Will test and report back.

Also work has only Chrome 32bit and I noticed the process died at around 4G of RAM loaded. So I think trying it on a 64bit Chrome is the way to go.

I get the following error…

julia plugin failed to load: https://keno.github.io/julia-wasm/julide/julide.js not found

Works for me. Maybe you have an adblocker that causes problems?

works and looks great on FF61 (mac). :+1: very impressive

1 Like

It’s working on Firefox at home but not on Chrome on my Windows 10 machine. Both browsers are at their latest versions