Best Internet Webs Page

Joel Mason

home | code | posts | about

Google Summer of Code 2017

I was lucky enough to participate in the Google Summer of Code (GSoC) in 2017. I was working with my mentor, and all-round hip cat Shashi Gowda, on creating a new version of the Julia package Interact.jl.

The new version, which has the working title InteractNext, is built on top of Shashi’s cool new WebIO and Vue.jl packages.

Like Interact.jl, it enables building simple UIs for interactive data exploration, with widgets such as sliders, toggle buttons, text boxes, etc., however, while Interact is only available in IJulia, InteractNext supports Atom/Juno, Blink, Mux, as well as IJulia, and it shouldn’t be too hard to add support anywhere html/js/css can be displayed from Julia - the Julia VSCode extension could be next on the supported list.

I had a good time, got a bit done - despite (because of?) it not actually being summer down here in Australia - and generally am glad I got involved. I most enjoyed having what felt like privileged access to some of my open source heroes in the Julia community, such as Shashi, and Mike Innes, among others.

All Teh Codez

Here’s the list of contributions made for my GSoC project, linked to the respective pull requests (PRs). PRs were made to 5 Julia packages (InteractNext, WebIO, Vue.jl, Observables, PlotlyJS.jl) and two Javascript libraries (Vue Material, and Vuex)

  1. WebIO.jl: Adds function to replace html contents and run scripts (+29 lines added, -2 lines removed)
  2. WebIO.jl: Widget lifecycle notifications, register_renderable, nested scripts, and attrUtils (+86, -6)
  3. PlotlyJS.jl: Readall rename and Js loading default (+7, -6)
  4. WebIO.jl: Runs WebIO.setup() using Requires.jl (+35, -18)
  5. WebIO.jl: Enables string Interp into dom string macro, and spaces between attributes (+8, -6)
  6. Observables.jl: Adds eltype (+2, -0)
  7. WebIO.jl: Css load fix (+9, -7)
  8. WebIO.jl: Fix JSONification of interpolated @js function code (+34, -11)
  9. Vue.jl: Adds hooks to run js code during creation (+55, -12)
  10. WebIO.jl: Adds kebab2camel and camel2kebab (+36, -0)
  11. WebIO.jl: Multi widget display and event and command handlers updates (+35, -24)
  12. Vue.jl: Enables multi widget display (+118, -17)
  13. vue-material: Adds option to disable click based toggling (+31, -26)
  14. vue-material: Enables md-raised class on md-button-toggle toggling (+20, -2)
  15. vuex: Docs: Minor rephrasing in (+1, -1)
  16. Observables.jl: Adds an id to the observable (+14, -2)
  17. Vue.jl: Redisplay of widgets and shared observables simplified (+38, -77)
  18. WebIO.jl: Enables Observables to share and update across widgets (+70, -25)

Finally, the first 44 commits to InteractNext: here’s the code as it stood at the end of GSoC 2017 (+1501 , -628)


I’d like to thank my mentor Shashi, not just for his help during GSoC, but for his visionary work on great Julia packages such as Reactive, Interact, Observables, WebIO, and Vue (and more!).

Also want to shout out to Julia’s creators, supporters, and contributors, this Julia thing is building…

Finally, it’d be remiss if I didn’t tip my hat to those at Google supporting Open Source in general, and in particular those pushing the GSoC itself, which seems to me, to be a force for good.