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.
Also see the other VS Code projects!
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
y, while Pluto thinks that
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
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:
Linking video content to dynamic content, better integration between exercise and lecture material.
Experiment with playing back the edits to a notebook session, like a video, but on a scrollable page. (link).
Syntax analysis to automatically review 'code style'
Improved live check and autograding tools
And so on! Take a look at our project board and get in touch if you have further ideas: firstname.lastname@example.org
Expected Results: One of the items above! When finished, your work will be used in future editions of the Computational Thinking course and more!