GSoC 2025 - Brian2Wasm: simulations in the browser

Hey everyone!

I’m Palash Chitnavis, a GSoC 2025 contributor. This summer, I’ll be working on Project #7 Brian Simulator :: Brian2Wasm: simulations in the browser (175/350h). I’m really looking forward to working with my mentors Marcel Stimberg, Dan Goodman, and Benjamin Evans.

What am I working on?

We already have a repo called Brian2Wasm that lets users run Brian2 code directly in the browser. My goal is to turn this early demo into a practical and easy-to-use tool for the wider community. I’ll be working on releasing a conda package, adding tests, improving the build pipeline, and making the setup smoother so users can run and share simulations with minimal effort.

More Details

You can find a detailed write-up here:
:left_speech_bubble: GSoC Proposal

Would love to hear any suggestions, feedback, or ideas you might have related to this direction!

Looking forward to learning from and collaborating with this amazing community :smile:

2 Likes

Using this space to track my progress on Brian2WASM during GSoC 2025.

Week 1
Added CLI support to Brian2WASM, allowing users to switch between running the same script with Brian2 or Brian2WASM.

Link to PR : Add CLI functionality to brian2wasm and update pyproject.toml

Week 2
Set up a Pixi environment for Brian2WASM to simplify installation by automating EMSDK setup.

Link to PR : Add Pixi Environment Setup for brian2wasm

1 Like

Week 3 and Week 4
Worked on refining the Pixi environment setup and enabling Brian2WASM compatibility on Windows.

Link to same PR: Add Pixi Environment Setup for brian2wasm

Implemented GitHub Actions workflows to automate release publishing to PyPI and test pull requests; successfully published the package to PyPI.

Link to PR: Add PyPI publish workflow and setuptools_scm versioning

Week 5 and Week 6
Worked on refactoring the WASMStandaloneDevice build to drop distutils and directly use emcc with native compile/link flags.

Link to PR : Refactor WASMStandaloneDevice Build: Drop distutils, add native emcc prefs

Week 7 and Week 8
Worked on adding a conda recipe for brian2wasm with Emscripten setup and environment configuration.

Link to PR : Create conda recipe for brian2wasm

1 Like

Week 9 and Week 10
Worked on creating user documentation for brian2wasm using Sphinx.

Link to PR : Create a user documentation using Sphinx

Week 11 and Week 12
Worked on adding a GitHub Actions workflow to deploy simulations to GitHub Pages.

Link to PR : Add GitHub Actions workflow for deployment

CI for a Wasm target is where these projects tend to stall—headless browser testing isn’t as plug-and-play as pytest on native, and getting coverage to feel trustworthy takes some setup. Worth scoping that early before the build pipeline work gets too far. More on the full picture at Brian2Wasm: How Spiking Neural Network Simulations Run in the Browser via WebAssembly - Port & Patch