Post

GSoC 2026 - Week 1

The official coding period for GSoC 2026 started on 25th May 2026. Here is the Week 1 update for my project:

It was decided during the community bonding period that all the code for this project will reside in a repo named mdadash under the MDAnalysis org - MDAnalysis/mdadash.

An initial agreement on the wireframes for the core functionality of the dashboard and the execution layer for the dashboard widgets were arrived as part of the following discussions during the community bonding period:

A Project Timeline has also been agreed upon before the official coding period started.

I started the Week 1 coding period by adding an overall project structure as part of PR #3. Here are some of the changes made as part of this PR:

  • Created project using cookiecutter-mdakit
  • Created dev conda env file for dev setup
  • Added main backend server
    • made it a project script for cli access (mdadash)
  • Created frontend template with create-vue (npm create vue@latest)
    • added support to work with backend in dev mode
    • added basic test
  • Added custom build setup (setup.py) to build frontend code
    • included frontend dist in the package distribution / wheel
  • Added recommendations for VSCode extensions (frontend and backend)
    • included default config and settings files
  • Updated gh-ci
    • updated main-tests job to include frontend tests
    • added backend and frontend lint checks
  • Updated README with dev details

I then added jupyter_client’s AsyncKernelManager support which will be used to run all the dashboard analysis code in an isolated environment alongside the dashboard server as part of PR #4. Here are some of the changes made as part of this PR:

  • Added a KernelManager to create and manage the async jupyter kernel
    • Setup comms for bi-directional communication between server and kernel
  • Added a StateManager that will manage the overall dashboard state
  • Basic Kernel core to handle comms and to create MDA universe
  • Added API to connect / disconnect to MD simulation
  • Added logger setup
  • Added basic connect /disconnect tests with InThreadIMDServer
  • Remove defaults channel from conda
  • Added package deps to test_env.yaml
  • Added UniverseManager to manage universes in kernel core
  • Added support for multiple universes (emsemble use case later)
  • Updated doc strings
  • Add nodejs dep to readthedocs build

Finally, I added all the tests for functionality that exists so far and enabled code coverage as part of PR #5. Here are some of the changes made as part of this PR:

  • Enable asyncio tests in pytest
  • Enable coverage for subprocess (code run within AsyncKernelManager)
  • Update README with code coverage instructions for local dev env
  • Enable codecov in gh-ci
  • Redirect kernel error outputs to server stdout
  • Add tests to cover all current functionality
  • Enable coverage for frontend code

With these changes, at the end of Week 1, we have a basic dashboard server that can connect to a live MD simulation. There is an overall structure in place for both backend and frontend code with tests, lint checks and code coverage. An overall CI is in place along with a readthedocs build and Codecov setup.


Next week, I will get started on the frontend app bar and sticky bar that shows controls (pause / resume / connect / disconnect) and timestep details respectively. I will also add a settings page in the UI that will allow configuration of all the universe related params (including imdclient params). All of the above will be hooked up to the backend and by the end of the week we should hopefully have a basic server running with a simple GUI that can control the live simulation and display basic timestep and energy details as the simulation progresses.

This post is licensed under CC BY 4.0 by the author.