Skip to content

GSoC 2026: Event System meta issue #13927

Description

@Gnefil

Introduction

This meta issue holds a dynamic log of planned and ongoing tasks around enhancing the event system in MNE.
It is also the Working Product Report for Google Summer of Code 2026.

Details

GSoC Contributor: Lifeng Qiu Lin
Main Supervisor/Mentor: Marijn van Vliet
Organisation: Python Software Foundation - MNE-Python
Project Title: Implement and Improve Bidirectional Event System across MNE plots

Description

The event system allows property transfer between plots dynamically, even from different sources in MNE. The existing architecture is well-structured; however, the integration of the events in plots is not complete. This project emerged as an idea to implement new and appropriate behaviours in diverse kinds of plots, including in future GUIs like the dipole-fitting system, to handle events.

In the end, we expect to see plots interacting in real time when toggling one of them, providing accurate cues in all others after one selection.

Issues solved and PRs implemented

Main Code Contributions

Issues participated:

Note

  • Not all code logic is commented here for length reasons; see each PR for details
  • All new functions come with their respective tests, even when they are not explicitly written in the changelog
  • Documentation is provided for each PR, also provided inside the framework in variable length, depending on the scope

Lessons and challenges

Along the way, I faced many challenges and learnt a lot of lessons as a result. I hope sharing them would help future contributors who want to get involved in MNE, or simply another read for one's programming experience.

  • One big problem I faced at the beginning was understanding the main pipelines in the framework, as anyone starting on a new code base. In this case, tutorials on the MNE website, the search function, and starting by fixing a small bug, these are things that help a lot.
  • One lesson I learnt is to continue implementing the solution until you face a behavioural decision. One could wait for guidance there at early stages, while after getting used to it, choose to proceed with one of the options, and then explain later to the mentor to agree or discard the design (with justification).
  • Another interesting challenge is how tangled the calls and variables are in some of the classes or functions, especially the plotting ones, which require lots of decorating. There is no excellent solution to this, but get used to the naming convention (ask if unsure), and try to trace back through the lines and calls.
  • Finally, mentor usually has the expertise to know what you are looking for or where to look for a certain thing, which can save a lot of time when you are unfamiliar, but you should carefully weigh the effort and time needed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions