Pluto.jl projects

Pluto as a VS Code notebook

VS Code is an extensible editor, and one of its most recent features is a notebook GUI, with a corresponding Notebook API, allowing extension developers to write their own notebook backend. We want to combine two popular Julia IDEs: VS Code and Pluto.jl, and use it to provide a mature editing and debugging experience combined with Pluto's reactivity.

Expected Results: Reactive notebook built on top of VSCode's notebook API.

Recommended skills: JavaScript/TypeScript, some Julia experience

Mentors: Sebastian Pfitzner (core maintainer of julia-vscode), Fons van der Plas (core maintainer of Pluto.jl) and friends

Also see the other VS Code projects!

Macro support

Macros are a core feature of Julia, and many important packages (Flux, JuMP, DiffEq, …) use them in creative ways. Pluto's reactivity is based on syntax analysis to find the assigned and referenced variables of each cell. This powers not just reactive evaluation, but also Pluto's global scope management, and @bind interactivity. (See the JuliaCon presentation for more info.)

Macros can assign to a variable without Pluto detecting it as such. For example, @variables x y from Symbolics.jl assigns to variables x and y, while Pluto thinks that x and y were referenced. Your project is to add macro support to Pluto. Julia has the built-in ability to 'expand' macros on demand, but integrating this into Pluto's reactive runtime remains a significant algorithm design problem. More info in Pluto.jl#196.

Expected Results: First objective: process macros from packages, second (more difficult) objective: support macros defined inside the notebook itself.

Recommended skills: Julia, you will learn about metaprogramming, algorithm design and distributed computing

Mentors: Fons van der Plas and fellow Pluto.jl maintainers

Tools for education

Pluto's primary use case is education, and we recently started using Pluto notebooks as an 'interactive textbook': https://computationalthinking.mit.edu/ . If you are interested in design and interactive visualization, there are lots of cool JS projects in this area. Examples include:

Expected Results: One of the items above! When finished, your work will be used in future editions of the Computational Thinking course and more!

Recommended skills: JavaScript, CSS, you can learn Julia as part of the project.

Mentors: Fons van der Plas, Connor Burns and fellow Pluto.jl maintainers, with feedback from Alan Edelman